Identificación y Nomenclatura de Elementos
1. Descripción General
Al capturar los elementos de la interfaz que generan errores de accesibilidad, nuestro objetivo es registrar un “nombre” intuitivo y legible por humanos. Este nombre se mostrará en los reportes de issues para que los auditores identifiquen rápidamente qué elemento deben corregir.
2. Método Principal: "Árbol de Accesibilidad"
Qué es?
Primero intentamos leer el nombre del elemento a través del API del Árbol de Accesibilidad del navegador, que expone los nombres y roles accesibles ya procesados.
Por qué lo seguimos usando?
Aunque Playwright ha marcado como obsoletas sus funciones de Árbol de Accesibilidad, siguen siendo la fuente más fiable para obtener nombres accesibles (por ejemplo, nombres calculados a partir de etiquetas, atributos ARIA, relaciones de formulario, etc.).
Cómo se invoca?
Nota sobre la desprecación
Se envuelve esta llamada en una función auxiliar para que, cuando Playwright elimine este soporte, podamos cambiar a otro motor sin tocar la lógica de nomenclatura.
3. Método de Reserva: Función Interna de Nomenclatura
Si el snapshot de accesibilidad no devuelve nombre (o si la API de Playwright falla), usamos la siguiente rutina basada en el DOM:
3.1. Lógica Paso a Paso
- Texto Visible Se usa
textContent(tras aplicartrim()). - ID Si no hay texto, devolvemos
#<id>. - Class Name Después, mapeamos
classNamea un selector con puntos. aria-labelledbyRecuperamos el texto del elemento referenciado.aria-labelUsamos el valor dearia-label.- Desconocido Si ninguna opción anterior arroja valor, se asigna “Unknown element”.
4. Criterios de Aceptación
- Árbol de Accesibilidad Primero El sistema debe consultar el Árbol de Accesibilidad y usar su
namesi existe. - Orden de Reserva Si no hay nombre accesible, debe seguir estrictamente el orden: ID → className → aria-labelledby → aria-label.
- Elemento Desconocido Si ninguna búsqueda produce un resultado, el nombre devuelto debe ser exactamente
Unknown element. - Robustez La función de reserva no debe lanzar excepciones; debe protegerse contra atributos faltantes o HTML malformado.
Documentación
Accessibility: https://playwright.dev/docs/api/class-accessibility
