Chrome comenzó el año aprobando el 88.2% de las pruebas en el área de enfoque de accesibilidad de Interop 2024. En junio de 2024, fuimos los primeros en lograr que el 100% de las pruebas fueran aprobadas. En esta publicación, se explica el trabajo que se realizó para alcanzar este objetivo.
¿Qué se incluye en el área de enfoque de accesibilidad?
Al igual que con cada área de enfoque en Interop 2024, el área de accesibilidad se define por un conjunto de pruebas de plataformas web para funciones seleccionadas. El objetivo de las pruebas de Interop 2024 es garantizar que todos los navegadores creen nombres accesibles y roles calculados de la misma manera.
Los nombres accesibles transmiten el propósito o la intención de un elemento HTML. Esto ayuda a los usuarios a comprender para qué sirve el elemento y cómo pueden interactuar con él. La especificación accname define cómo los navegadores crean esta cadena de nombre accesible para un elemento. La especificación de ARIA incluye una explicación de cómo se calcula este nombre.
El rol calculado de un elemento es una cadena que representa el rol del elemento según lo calcula el motor del navegador. Se usa principalmente en herramientas para desarrolladores y, por ejemplo, en la función getComputedRole
de WebDriver, lo que permite pruebas de interoperabilidad.
¿Qué debía hacer el equipo de Chrome?
Había dos áreas de trabajo más grandes que necesitábamos completar: cambiar la asignación de roles a roles genéricos y quitar los roles obsoletos. Luego, había algunas mejoras y funciones menores adicionales para implementar. Además del siguiente trabajo que completó el equipo de Chrome, también colaboramos con Microsoft en las correcciones que se comprometieron a realizar en Chromium para el área de enfoque de accesibilidad.
Cambia el mapeo de ciertos roles a un rol genérico
Si cambias una asignación a un rol genérico, se quitan las semánticas de accesibilidad de un elemento. Los elementos genéricos no proporcionan valor a un árbol de accesibilidad, por lo que no se incluyen en él. Esto ayuda con el rendimiento y hace que el árbol sea más pequeño y fácil de analizar para la tecnología de accesibilidad. Los siguientes roles se cambian a un rol genérico.
- Un
<header>
centrado en<main>
o un elemento de contenido de sección (<article>
,<aside>
,<nav>
o<section>
). - Un
<footer>
centrado en<main>
o un elemento de contenido de sección (<article>
,<aside>
,<nav>
o<section>
). - Un
<aside>
dentro de un elemento de contenido de sección (<article>
,<aside>
,<nav>
o<section>
) sin un nombre accesible - Un
<section>
sin un nombre accesible - Elementos de lista huérfanos (
<li>
).
En el caso de los primeros cuatro puntos, por lo general, estos elementos se asignan a roles de punto de referencia. Tener demasiados puntos de referencia en una página puede dificultar la navegación, por lo que este cambio ayuda a reducir los puntos de referencia redundantes, lo que facilita la navegación por la página. Por lo general, el elemento final indica un error del desarrollador de la página. Un elemento de lista siempre debe estar dentro de una lista, por lo que a un elemento huérfano se le asigna un rol genérico.
Cómo quitar un rol obsoleto
Se dio de baja el rol directory
y se asignó al rol de lista. ARIA 1.2 deja de estar disponible el rol directory
. En la especificación, se explica que es equivalente al rol list
y que los desarrolladores deben usar list
. Para mantener la semántica del contenido más antiguo que usa directory
, ahora se asigna a list
en Chrome.
Otras correcciones
Agregamos compatibilidad con el rol gridcell
. Este nuevo rol hace que la distinción entre gridcell
y cell
sea más clara. A diferencia de cell
, un elemento gridcell
se puede enfocar, editar y seleccionar.
Se agregó el cálculo del rol de resguardo. Anteriormente, no verificábamos los roles de resguardo, por lo que, si el primer rol no era válido, usábamos otro, lo que no se detalla en la especificación.
Algunos roles solo son válidos si se encuentran en el contexto correcto. Agregamos una verificación para el uso no válido de roles, como se indica a continuación:
- El rol
row
debe estar dentro detable
,grid
,rowgroup
otreegrid
. - El rol
rowgroup
debe estar dentro detable
,grid
,tree
otreegrid
. - El rol
listitem
debe estar dentro delist
.
Si el rol no es válido, Chrome ahora usa otra información, como el elemento HTML, para calcular un rol alternativo.
Marcamos thead
y tfooter
como incluidos en el árbol de accesibilidad.
Anteriormente, se marcaban como ignorados, pero aún se incluían en el árbol. Ahora, las tecnologías de accesibilidad pueden analizar el encabezado y el pie de página de la tabla.
Si bien es posible que la mayoría de los desarrolladores no vean estos cambios, ya que todos los navegadores trabajan para garantizar que funcionen de la misma manera, nos aseguramos de que los diferentes roles se expongan de la misma manera en todas partes.