¿Tienes conocimientos sobre accesibilidad web? ¿Nos ayudas a mejorar nuestros contenidos?

¡Hola! Estamos trabajando en mejorar en lo posible la accesibilidad de todos los contenidos de Civio. El otro día publicamos el Asistente de ayudas del coronavirus, y gracias a la ayuda de nuestro socio Francisco, vimos que tenía algunos problemas al ser usado con lectores de pantalla. Revisando buenas prácticas en accesibilidad hemos implementado todas las mejoras en cuanto a semántica que hemos encontrado, pero no estamos seguras de que el resultado funcione 100% bien.

Si encuentras alguna mejora relacionada y/o tienes algún consejo sobre este tema, somos todo oídos, ¡necesitamos seguir aprendiendo! Nos parece un aspecto fundamental. Queremos hacer las cosas bien para que la información llegue por igual a todas las personas, sin trabas. ¡Muchas gracias!

1 me gusta

Nos comenta Visanju por Twitter lo siguiente, lo reflejo por aquí para no perder nada de vista.

En la home hay unos pequeños problemas a nivel de código (imágenes sin alt, algún <li> que está fuera de un <ul>). Señala un atributo id duplicado pero probablemente sea un bug de lighthouse. El estilo del foco por teclado no es consistente, va cambiando y debería verse mejor.

Y nuestra respuestas, por si algo se nos escapa y nos lo queréis comentar por aquí:

Muchas gracias! Voy revisar todo lo que dices. Lo que más me preocupa es el Asistente de Ayudas en sí, el que funcione bien. Lo hemos hecho semánticamente lo mejor que hemos sabido (tags de <form>, <fieldset> <legend>, <labels>…) pero no estamos seguros de que sea suficiente.

También pasé el lighthouse sobre la app y me salió bien en accesibilidad (94/100) pero no me fío jeje. Antes de esas mejoras semánticas daba 84/100 y sin embargo descubrimos que no funcionaba bien con lector de pantalla en las partes clave. Por eso estamos indagando un poco más :nerd_face:

De parte del equipo Civio queremos darle las gracias de nuevo a Ramón Corominas por el mail que nos escribió la semana pasada lleno de consejos para mejorar la accesibilidad de nuestro Asistente de ayudas relacionadas con el coronavirus. Hemos aprendido muchas cosas nuevas, y esperamos incorporarlas desde el principio en todas las cosas nuevas que hagamos, ¡gracias!

A continuación dejo recopiladas las mejoras hechas, por si sirven de referencia. Seguramente haya más implementaciones posibles, pero estamos contentas de haber mejorado la aplicación tanto estos días gracias a las recomendaciones y consejos de la comunidad Civio. ¡Gracias por vuestra ayuda! :slight_smile:

Mejoras hechas (10/Julio/2020):

  • No nos habíamos dado cuenta de que, al ser heredados de otra aplicación, todos los radio inputs del asistente tenían una regla display:none para no ser visibles y eso nos rompía toda la accesibilidad de principio a fin. Los hemos ocultado correctamente con un clip-pattern como habíamos hecho con los labels y otros elementos no visibles pero importantes a nivel accesibilidad.
    .a11y-visually-hidden { position: absolute !important; height: 1px; width: 1px; overflow: hidden; clip: rect(1px 1px 1px 1px); */* IE6, IE7 */* clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

  • Añadido su label al input tipo select de “¿En qué situación te encuentras?” del bloque laboral.

  • Añadido el atributo name a todos los inputs tipo radio agrupados bajo un mismo fieldset para que sean grupos de verdad (ej: tienes que seleccionar una de las 4 opciones del bloque laboral, y una de las 3 opciones del de vivienda). La manera en la que esos botones de radio se relacionen entre
    sí como un grupo no es solo el fieldset, sino que deben compartir el mismo atributo name.

  • Mejorada la navegación con tabulador, haciendo tabulables los botones (acorde a los radio buttons reales que están ocultos) y marcando visualmente el focus y el checked.

  • La lista de resultados de ayudas posibles rehecha en modo ul, no table, porque generaba un ruido innecesario a nivel lector de pantalla. Al haber borrado otros elementos de los resultados y quedarnos con una lista unidimensional, no necesitábamos más.

  • Ramón nos recomendaba también meter un pequeño texto solo “leíble” para lectores de pantalla cuando entramos en preguntas dependientes de otras e información dinámica o de segundo nivel, para que el lector avise de ese nuevo contenido relacionado, ya que es info que un primer escaneo no habría aparecido. Hemos aprendido a hacer esto a través de aria-live tags, y los condicionales de Vue ( v-if... ) para configurar estos mensajes cada vez que al seleccionar algo que lanza una pregunta de segundo nivel relacionada, aparezca un mensaje para los lectores de pantallas que diga “Hay nuevas preguntas relacionadas con tu elección actual”.

  • De forma análoga hemos hecho otro mensaje con aria-live para los resultados, cuando los hay, indicando que “Se muestran las ayudas correspondientes. Navega mediante encabezados para ir a los resultados de nuestra guía con más información”.

  • La lista de categorías laborales que teníamos en el apartado de “Tienes una empresa” lo hemos mejorado semánticamente como lista (manteniendo su apariencia visual anterior) y lo hemos conectado a la pregunta y a las respuestas Si/No para que se “lea” todo en bloque correctamente en un lector de pantalla.

Por otra parte, hemos empezado a trastear con el Voice Over integrado en Mac para aprender a revisar y comprobar todas estas cosas antes de publicarlas, y aún estamos aprendiendo pero nos está resultando muy útil. Nos ha servido por ejemplo para detectar otro error importante:

  • Todas las preguntas de segundo cuya respuestas eran booleanas (“Sí”/“No”) funcionaban mal: no tenían la preguntada asociada realmente (Ej: Nosotras leemos ¿Eres autónomo de temporada? Si/No. — El voice over solo leía las respuestas “Opción sí, marcada, opción no. Opción sí no… etc” pasando de pregunta en pregunta sin asociarles nada, solo leyendo los labels de los inputs, que efectivamente son “Sí”/“No”. Para solucionarlo, hemos seguido esta referencia, agrupando con fielsets las preguntas mediante legends a los inputs, de forma que todo está agrupado semánticamente por bloques y accesible. De nuevo todos los inputs tipo radio comparten el atributo name para hacer la agrupación inequívoca en lectores de pantalla.
1 me gusta