aria-role-name-present
Los roles ARIA que lo requieren deben tener un nombre accesible
Comprueba que los roles ARIA para los que WAI-ARIA requiere un nombre accesible expongan uno no vacío.
Ámbito de aplicación. Se aplica a elementos cuyo atributo role se resuelve en uno de grid, meter, progressbar, radiogroup o tree (su primer token que nombra un rol conocido, sin distinguir mayúsculas de minúsculas: role="foo tree" y role="TREE" cuentan, role="link tree" no), y que están incluidos en el árbol de accesibilidad. La pertenencia la determina la propia característica "Accessible Name Required: True" de WAI-ARIA, no si un rol simplemente permite un nombre: tablist, toolbar, menu, menubar y scrollbar son roles de nombrado por el autor para los que la especificación no requiere un nombre, y quedan fuera del alcance. meter y progressbar también están cubiertos por meter-name-present y progressbar-name-present, que se mapean al SC 1.1.1; esta regla es la que da a esos dos roles su cobertura del 4.1.2. También entra en el alcance un elemento personalizado cuyos ElementInternals le dan uno de esos roles (this.attachInternals().role), sin un atributo role que nombre otro: es su rol por defecto, y ninguna otra regla lo comprueba. Una variante con el ajuste roles: 'all' comprueba también application, marquee, table, tabpanel y treegrid, los demás roles de nombrado por el autor para los que WAI-ARIA exige un nombre: un estándar de WAI-ARIA lo pide, y un análisis de WCAG no, ya que una tabla sin nombre es habitual y normalmente no es un fallo de WCAG.
Resultado esperado. El elemento tiene un aria-label no vacío, un aria-labelledby que resuelve a texto no vacío, o un title no vacío. Todos los roles del conjunto son exclusivamente de nombrado por el autor, por lo que no se acepta el texto de un descendiente: de lo contrario, un hijo etiquetado dentro de un widget compuesto haría pasar al contenedor que carece de nombre propio. También cuenta el nombre que el elemento HTML anfitrión se da a sí mismo, porque el navegador lo sigue calculando bajo el rol: el primer <legend> hijo de un <fieldset>, el primer <caption> hijo de una <table> y un <label> asociado en un elemento etiquetable como <progress> o <meter>. La falta de nombre se informa como cantTell, no como fail. El requisito es de WAI-ARIA ("Accessible Name Required: True"), y ninguno de estos roles es por sí mismo un componente de interfaz de usuario en el sentido de WCAG, "un único control para una función distinta": un grid, un tree o un radiogroup es un contenedor de controles (sus celdas, elementos o botones de opción, cada uno nombrado por su propia regla), y un meter o un progressbar no es un control en absoluto. Así que la falta de nombre demuestra la infracción de WAI-ARIA, no un fallo del SC 4.1.2. Aun así puede serlo, o ser un fallo de otro criterio, según la página: una pregunta visible encima de un radiogroup que no está vinculada a él, un título visible de un grid que no está vinculado a él. Eso lo decide una persona. Un meter o un progressbar sin alternativa textual falla el SC 1.1.1 a través de meter-name-present y progressbar-name-present.
Qué informa un hallazgo.
role: el rol que necesita un nombre, uno degrid,meter,progressbar,radiogroupytree. Un contrato estable, a diferencia del resto dedata.details.
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
<div role="grid" aria-label="Orders"></div>
role="grid" requiere un nombre accesible, y aria-label proporciona uno.
<div role="grid"></div>
role="grid" requiere un nombre accesible en WAI-ARIA; no hay ninguno presente. Un grid es un contenedor de controles, no un único control, así que que falle un criterio de WCAG depende de si la página muestra un título para él que no está vinculado a él.
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.
name_internals
- Inspeccionar el elemento personalizado que indica el informe y anotar su rol.
- Abrir el panel Accesibilidad de las herramientas para desarrolladores del navegador y leer el nombre accesible del elemento.
- Con un lector de pantalla, desplazarse hasta el elemento y escuchar el nombre que se anuncia.
Se cumple. El árbol de accesibilidad muestra un nombre para el elemento, establecido mediante sus internals o de otro modo, y el lector de pantalla lo anuncia.
No se cumple. El elemento no tiene nombre en el árbol de accesibilidad y el lector de pantalla solo anuncia su rol. Eso incumple WAI-ARIA; incumple WCAG solo si la página muestra un título o una pregunta para el elemento que no está vinculado a él (WCAG 1.3.1).
name_missing
- Inspeccione el elemento que indica el informe y anote su rol (grid, tree, radiogroup, meter o progressbar).
- Observe lo que la página muestra para él: un título, encabezado, leyenda o pregunta visible que diga qué es.
- Si lo muestra, compruebe si está vinculado al elemento, con aria-labelledby o con la etiqueta HTML propia del elemento (legend o caption).
Se cumple. Nada visible nombra el elemento ni plantea una pregunta sobre él, así que no falta en el árbol de accesibilidad ninguna información que muestre la página. Aun así, dele un nombre: WAI-ARIA lo exige.
No se cumple. La página muestra un título o una pregunta para el elemento que no está vinculado a él, así que esa relación no se puede determinar mediante programación (WCAG 1.3.1).