Fallo Común F92 de WCAG 2.1: Uso incorrecto del rol presentation en contenido semántico

Texto 'role="presentation"' en negrita, representando el uso del atributo en accesibilidad web.

La accesibilidad web es fundamental para garantizar que todas las personas, incluidas aquellas que usan tecnologías de asistencia, puedan interpretar correctamente la información presentada en una página. Uno de los errores comunes es la eliminación de la semántica de los elementos estructurales mediante el uso del atributo role="presentation" en contenido que debería transmitir significado.

Este problema incumple el Criterio de Conformidad 1.3.1 de WCAG 2.1 (Información y Relaciones), ya que los lectores de pantalla y otras tecnologías de asistencia no pueden interpretar correctamente la estructura del contenido cuando se usa este rol de manera inapropiada.

En este artículo, exploraremos el Fallo F92, sus consecuencias en la accesibilidad y cómo corregirlo de manera efectiva.

Acerca de este fallo

El Fallo F92 ocurre cuando se aplica el rol presentation a un elemento que transmite información semántica importante, como una tabla de datos. El rol presentation en WAI-ARIA elimina la semántica de un elemento, lo que impide que los usuarios de tecnologías de asistencia comprendan la relación y estructura de los datos.

Este fallo se manifiesta principalmente en los siguientes escenarios:

  • Se usa role="presentation" en tablas de datos (<table>) que deberían conservar su semántica.
  • Se aplica role="presentation" a listas estructuradas (<ul>, <ol>), eliminando la información de relación entre los elementos.
  • Se usa role="presentation" en encabezados (<h1> - <h6>), afectando la jerarquía del contenido.

Si un usuario de lector de pantalla navega una tabla con role="presentation", el lector de pantalla no anunciará los encabezados, lo que dificulta la comprensión de los datos presentados.

Ejemplos

Ejemplo incorrecto: Uso de role="presentation" en una tabla de datos

<table role=»presentation»>
<caption>Frutas y sus colores</caption>
<tr>
<th>Nombre</th>
<th>Color</th>
</tr>
<tr>
<td scope=»row»>Plátano</td>
<td>Amarillo</td>
</tr>
<tr>
<td scope=»row»>Naranja</td>
<td>Naranja</td>
</tr>
</table>

Problema: Se ha aplicado role="presentation" a una tabla de datos, eliminando su semántica. Como resultado, los lectores de pantalla no pueden interpretar los encabezados ni proporcionar contexto a los usuarios.

Solución correcta: Mantener la semántica de la tabla

<table>
<caption>Frutas y sus colores</caption>
<tr>
<th scope=»col»>Nombre</th>
<th scope=»col»>Color</th>
</tr>
<tr>
<td scope=»row»>Banana</td>
<td>Amarillo</td>
</tr>
<tr>
<td scope=»row»>Naranja</td>
<td>Naranja</td>
</tr>
</table>

✅ ¿Qué mejora?: Se eliminó el role="presentation" y se mantuvo la estructura de la tabla, permitiendo que los lectores de pantalla anuncien correctamente los encabezados.

Errores comunes y cómo evitarlos

Errores frecuentes:

  1. Aplicar role="presentation" a tablas de datos en lugar de solo a tablas de diseño.
  2. Usar role="presentation" en listas (<ul>, <ol>) eliminando la estructura de la lista.
  3. Aplicar role="presentation" en encabezados (<h1> a <h6>), impidiendo la correcta interpretación jerárquica del contenido.

Cómo evitar estos errores:

  • Usa role="presentation" solo en elementos de diseño sin significado semántico.
  • Mantén la semántica en estructuras importantes como tablas de datos y listas.
  • Verifica la accesibilidad con herramientas como axe DevTools o WAVE para evitar eliminar información esencial.

Preguntas frecuentes sobre el Fallo F92

¿Cuándo es apropiado usar role="presentation"?

Se debe usar únicamente en tablas de diseño, elementos decorativos o contenido que no transmite significado estructural.

¿Cómo afecta role="presentation" a los lectores de pantalla?

Los lectores de pantalla ignoran la estructura del elemento y no anuncian la relación entre los datos, dificultando su comprensión.

¿Cómo verificar si role="presentation" está afectando la accesibilidad?

Puedes desactivar los estilos CSS o usar herramientas como WAVE para comprobar si la estructura sigue siendo comprensible.

¿Qué hacer si necesito eliminar estilos de una tabla sin afectar la accesibilidad?

Usa CSS para modificar la apariencia sin alterar la semántica, en lugar de role="presentation".

¿Qué alternativa usar en lugar de role="presentation" en tablas de datos?

Mantén la semántica y usa scope="col" y scope="row" en los encabezados para definir la relación entre datos.

¿Es obligatorio usar ARIA para mejorar la accesibilidad en tablas?

No siempre, ya que HTML proporciona una semántica adecuada. Sin embargo, aria-labelledby puede ser útil para describir tablas complejas.

Recursos relacionados

Pruebas y validación

Procedimiento

  • Inspeccionar el código HTML y buscar elementos con role="presentation".
  • Verificar si se ha aplicado a elementos estructurales como <table>, <ul>, <ol> o <h1>.
  • Usar herramientas como axe DevTools o NVDA para comprobar cómo se interpretan los elementos por los lectores de pantalla.
  • Si el role="presentation" elimina información esencial, se debe corregir eliminándolo o aplicando scope en su lugar.

Resultados esperados

  • Si los elementos estructurales mantienen su semántica, el contenido cumple con WCAG 2.1.
  • Si role="presentation" elimina información semántica importante, el contenido falla el Criterio 1.3.1 y debe corregirse.

El uso inadecuado de role="presentation" en contenido con significado estructural puede afectar gravemente la accesibilidad, dificultando la navegación para usuarios de lectores de pantalla. Para cumplir con WCAG 2.1, es fundamental aplicar este rol únicamente en elementos decorativos y mantener la semántica en tablas de datos y listas.

¡Optimiza la accesibilidad de tu sitio hoy mismo! 🚀 Si necesitas ayuda para mejorar la accesibilidad web, contáctanos y te asesoraremos en la implementación de buenas prácticas. 💡

¿Tienes dudas? Solicita una consultoría inicial gratuita

Evaluamos tu sitio web para identificar barreras que dificultan el acceso a personas con discapacidad. Te entregamos un informe con errores detectados y soluciones para que tu web sea usable por todos.