c165f2f788
Agrega 19 issues técnicas documentando funcionalidades implementadas y pendientes. Issues completadas (movidas a dev/issues/completed/): - 001-conversor-web-markdown.md - 002-accessibility-tree.md - 003-gestion-cookies-perfil.md - 004-gestion-extensiones-chrome.md - 005-eliminar-timeouts-innecesarios.md Issues implementadas: - 006-manejo-tabs-ventanas.md - 016-manejo-iframes.md - 017-actions-api.md - 018-file-uploads.md - 019-expected-conditions-mejoradas.md Issues pendientes (media prioridad): - 007-alert-prompt-confirm-handling.md - 008-screenshot-elementos-especificos.md - 009-pdf-generation.md - 010-device-emulation-completo.md - 011-downloads-handling.md Issues pendientes (baja prioridad / avanzado): - 012-browser-contexts-multi-sesion.md - 013-video-recording.md - 014-network-mocking-avanzado.md - 015-geolocation-permissions.md Incluye también dev/NUEVAS_FUNCIONALIDADES.md con resumen completo. Directorio: dev/
89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# 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
|