# Issue #002: Recuperación de Accessibility Tree **Tipo**: Enhancement **Prioridad**: Alta **Estado**: Pendiente ## Descripción Implementar método para obtener el árbol de accesibilidad (Accessibility Tree) de la página usando Chrome DevTools Protocol. ## Funcionalidad deseada - Obtener accessibility tree completo vía CDP - Listar roles ARIA de elementos (button, link, heading, etc.) - Obtener nombres accesibles de elementos - Extraer propiedades de accesibilidad - Útil para que LLMs entiendan estructura semántica de página - Formato JSON estructurado y fácil de parsear - Opción para filtrar por tipos de nodos ## Implementación técnica ### Archivo sugerido `pkg/browser/accessibility.go` ### CDP Domain `Accessibility.getFullAXTree` - https://chromedevtools.github.io/devtools-protocol/tot/Accessibility/ ### API propuesta ```go // GetAccessibilityTree obtiene el árbol de accesibilidad de la página func (b *Browser) GetAccessibilityTree(ctx context.Context, opts *AccessibilityOptions) (*AXTree, error) type AccessibilityOptions struct { Depth int // Profundidad máxima del árbol (0 = ilimitado) FilterRoles []string // Roles a incluir (ej: ["button", "link", "heading"]) } type AXTree struct { Nodes []AXNode `json:"nodes"` } type AXNode struct { NodeID string `json:"nodeId"` Role string `json:"role"` Name string `json:"name"` Description string `json:"description"` Value string `json:"value,omitempty"` Properties map[string]string `json:"properties,omitempty"` Children []string `json:"children,omitempty"` // IDs de hijos } ``` ### Comandos CDP necesarios ```go // 1. Habilitar dominio Accessibility {"method": "Accessibility.enable"} // 2. Obtener árbol completo {"method": "Accessibility.getFullAXTree", "params": {}} // O para un nodo específico: {"method": "Accessibility.getPartialAXTree", "params": {"nodeId": ...}} ``` ## Casos de uso - LLMs pueden entender mejor la estructura de la página - Identificar elementos interactuables automáticamente - Testing de accesibilidad - Generar selectores semánticos - Scraping inteligente basado en roles ARIA ## Ventajas sobre DOM normal - Información semántica rica - Roles ARIA explícitos - Nombres accesibles computados - Estructura más simple que DOM HTML - Ideal para navegación por agentes autónomos ## Referencias - CDP Accessibility Domain: https://chromedevtools.github.io/devtools-protocol/tot/Accessibility/ - WAI-ARIA Roles: https://www.w3.org/TR/wai-aria-1.2/#role_definitions - Chrome AX Tree Inspector: chrome://accessibility