aria-deprecated-role
El atributo role no debería usar un rol ARIA obsoleto o desaconsejado para autores
Comprueba que un atributo role="" explícito no use un rol obsoleto según la especificación WAI-ARIA, ni uno reservado para uso interno del agente de usuario (p. ej. role="generic").
Ámbito de aplicación. Se aplica a cualquier elemento cuyo primer token (utilizado) del atributo role sea un rol ARIA válido y no abstracto que los autores no deberían declarar explícitamente, ya sea porque WAI-ARIA lo ha declarado obsoleto (p. ej. "directory", sustituido por role="list") o porque está reservado para uso interno del agente de usuario (role="generic", que ARIA 1.2 §5.4 indica que los autores NO DEBERÍAN usar en el contenido).
Resultado esperado. El rol en uso no está obsoleto ni reservado. Se gradúa según la fuerza con la que ARIA formula la regla:
cantTellen SHOULD NOT (no debería), lo que deja el uso conforme, de modo que el autor decide si importa: un rol obsoleto ("directory") o uno reservado para agentes de usuario ("generic").failen MUST NOT (no debe). Ningún rol de ARIA 1.2 o 1.3 lleva un MUST NOT para autores fuera de los roles abstractos, por lo que este resultado queda reservado para una revisión futura que eleve un rol a esa fuerza.
Es una decisión distinta y atómica respecto a aria-roles-valid (existencia/abstracción): un rol puede ser válido y no abstracto y, aun así, estar desaconsejado en el uso explícito por parte de los autores.
Qué informa un hallazgo.
role: el rol obsoleto o reservado que se usa.guidance: un consejo sobre qué usar en su lugar, como texto en inglés.
Estos campos de data.details ayudan a leer y reproducir un hallazgo. Salvo reasonCode y los pocos campos que Esquema de salida indica como estables, no son un contrato estable: un campo puede cambiar de nombre o desaparecer en una versión menor, así que no construyas sobre ellos.
Ejemplos
<ul role="list"><li>Item</li></ul>
role="list" es ARIA vigente, no obsoleto.
<div role="directory"><a href="/a">Item</a></div>
role="directory" está obsoleto en WAI-ARIA en favor de role="list"; sigue siendo marcado válido, pero desaconsejado.
Cómo comprobarlo
Cuando esta regla no puede decidir, informa cantTell y deja la pregunta a una persona. Cada pregunta que puede plantear aparece aquí bajo su código de motivo, con los pasos para responderla. Un hallazgo lleva los mismos pasos en howToCheck, en el idioma del análisis. Consulta Esquema de salida.
ARIA_ROLE_AUTHOR_DISCOURAGED
- Inspeccionar el elemento que indica el informe y anotar su etiqueta y role="generic".
- Si la etiqueta es un contenedor simple (div, span, b, i), el rol no cambia nada; quitarlo como limpieza.
- Si no, abrir el panel Accesibilidad de las herramientas para desarrolladores del navegador y comprobar si se ha perdido el significado nativo del elemento (botón, enlace, encabezado, elemento de lista, navegación).
- Con un lector de pantalla, desplazarse hasta el elemento y, si es enfocable, llegar a él con Tab y escuchar lo que se anuncia.
Se cumple. El elemento ya era un contenedor genérico, o su rol nativo sigue apareciendo y se anuncia.
No se cumple. role="generic" elimina un significado nativo, como un enlace o un encabezado que ya no se anuncia como tal, lo que incumple WCAG 4.1.2 (y 1.3.1 en cuanto a estructura).
ARIA_ROLE_DEPRECATED
- Inspeccionar el elemento que indica el informe y anotar su rol obsoleto (como directory).
- Abrir el panel Accesibilidad de las herramientas para desarrolladores del navegador y comprobar qué rol se expone (directory suele asignarse a list).
- Con un lector de pantalla, desplazarse hasta el elemento y sus elementos hijos y escuchar si se anuncia la estructura.
- Valorar el rol de sustitución propuesto (list para directory) y si encaja.
Se cumple. La estructura se anuncia correctamente (por ejemplo, como una lista con su número de elementos), o el rol se sustituye por el propuesto.
No se cumple. Las tecnologías de apoyo no transmiten la estructura porque depende del rol obsoleto, lo que puede incumplir WCAG 4.1.2.