En el Módulo 5 cerramos con una duda incómoda: ya sabemos construir componentes accesibles —un acordeón con aria-expanded, un modal con focus trap, un vídeo con <track>—, pero ¿realmente funcionan? Un aria-expanded que no se sincroniza, una trampa de foco con fuga o un alt que suena raro en NVDA no los descubre el código: los descubre alguien probando. Este módulo es la fase de verificación, y empieza por lo más barato y lo más revelador: probar a mano, tú mismo, sin licencias caras. En esta lección aprenderás a auditar la ficha de curso de Cursalia usando solo tu teclado, un lector de pantalla gratuito, el zoom del navegador y las DevTools.
Contenido
- Por qué empezar por lo manual
- Prueba solo con teclado
- Prueba con lector de pantalla para desarrolladores
- Prueba de zoom y reflow
- Verificación de estructura con DevTools
- Comprobación manual de contraste
- El patrón "primer criterio que revientan las prisas"
- Checklist manual reutilizable
- Por qué empezar por lo manual
Las herramientas automáticas (que veremos en la lección 06-02) detectan solo un 30-40% de los problemas: ven que falta un alt, pero no si el texto del alt tiene sentido. Las pruebas manuales cubren el juicio humano que ninguna máquina tiene: ¿el orden de foco es lógico?, ¿el nombre accesible describe lo que hace el botón?, ¿el foco visible se ve de verdad?. Y no necesitas más que lo que ya tienes en tu equipo.
La regla mental: si tú no puedes usar la página con el teclado y con un lector de pantalla, tu usuario tampoco.
- Prueba solo con teclado
Guarda el ratón en un cajón. Muchos usuarios (Lucía, con movilidad reducida) navegan solo con teclado. Las teclas fundamentales:
| Tecla | Acción esperada |
|---|---|
Tab |
Avanza al siguiente elemento interactivo |
Shift+Tab |
Retrocede |
Enter |
Activa enlaces y botones |
Espacio |
Activa botones, marca checkboxes |
Esc |
Cierra modal, menú o desplegable |
| Flechas | Mueven dentro de un widget (tabs, radios, menú) |
Recorrido de la ficha de curso de Cursalia
Abre la ficha del curso "Python desde cero" y, sin tocar el ratón, comprueba:
- Foco visible: en cada
Tab, ¿ves claramente dónde está el foco? Si el diseño hizooutline: nonesin sustituto, este es el fallo número uno (WCAG 2.4.7 Foco visible; y 2.4.11 Foco no oculto en WCAG 2.2). - Orden lógico: el foco debe seguir el orden de lectura: cabecera → migas de pan → título → botón "Matricularme" → pestañas de descripción/temario/opiniones → footer. Un
tabindexpositivo suele romperlo. - Sin trampas de teclado: entra en el reproductor de vídeo o en el modal de matrícula. ¿Puedes salir con
TaboEsc, o te quedas "atrapado"? (WCAG 2.1.2 Sin trampas para el foco del teclado). - Skip link: al pulsar
Tabnada más cargar, ¿aparece un enlace "Saltar al contenido"? Debe hacerse visible al recibir foco y llevar al<main>. - Operar el filtro del catálogo: los checkboxes de categoría y el selector de nivel deben marcarse con
Espacio/flechas y aplicar sin necesidad de clic. - Operar el modal de matrícula: al abrirlo, el foco debe entrar en el modal;
Esclo cierra; y el foco debe volver al botón que lo abrió.
Consejo: recorre la página entera dos veces, hacia delante y hacia atrás. Muchas trampas solo aparecen con Shift+Tab.
- Prueba con lector de pantalla para desarrolladores
No hace falta ser experto para detectar problemas gordos. Marta usa NVDA a diario; tú puedes arrancarlo 10 minutos y aprender mucho.
- Windows: instala NVDA (gratuito, nvaccess.org). Arranca con
Ctrl+Alt+N. La teclaInsertes la "tecla NVDA". - Mac: VoiceOver ya viene incluido. Actívalo con
Cmd+F5. La combinaciónCtrl+Optes la "tecla VO".
Comandos básicos para desarrolladores:
| Objetivo | NVDA (Windows) | VoiceOver (Mac) |
|---|---|---|
| Leer siguiente elemento | ↓ |
VO+→ |
| Saltar por encabezados | H |
VO+Cmd+H |
| Listar landmarks/regiones | D |
rotor VO+U |
| Ir a campos de formulario | F |
rotor VO+U |
| Abrir lista de elementos | Insert+F7 |
rotor VO+U |
| Silenciar la voz | Ctrl |
Ctrl |
Qué escuchar en la ficha de Cursalia
- Navega por encabezados (
H): ¿el<h1>es el título del curso? ¿La jerarquía baja de forma lógica (h1 → h2 → h3) sin saltos? - Navega por landmarks (
D): ¿se anuncianbanner,navigation,main,contentinfo? - Ve al botón "Matricularme": ¿NVDA lee un nombre accesible claro ("Matricularme en Python desde cero, botón") o solo "botón" sin más?
- Escucha las imágenes: el
altde la foto del profesor, ¿suena natural o dice "IMG_2043.jpg"? - Abre el acordeón de temario: al expandir, ¿anuncia "expandido/contraído"? Aquí compruebas el
aria-expandeddel Módulo 5 sonando de verdad.
Cierra los ojos un minuto y trata de completar la matrícula solo con oído. Es incómodo, y esa incomodidad es exactamente el hallazgo.
- Prueba de zoom y reflow
Sofía tiene baja visión y navega con zoom. Dos comprobaciones distintas:
- Zoom del navegador al 200% (
Ctrl/Cmd++): WCAG 1.4.4 (Redimensionamiento de texto) exige que el texto escale al 200% sin pérdida de contenido ni funcionalidad. Sube hasta el 400%. - Reflow a 320px (WCAG 1.4.10 Reflujo): reduce la ventana a 320 CSS px de ancho (o zoom 400% en 1280px) y comprueba que no aparece scroll horizontal y que nada se solapa ni se corta. El contenido debe "reflowar" a una sola columna.
Qué falla típicamente en Cursalia: la barra de filtros que se sale por la derecha, el precio que se superpone al botón, o un texto en píxeles fijos que no crece. Si necesitas hacer scroll en dos direcciones para leer un párrafo, es un fallo. (El cómo se arregla —unidades relativas, media queries— está en el Módulo 4).
- Verificación de estructura con DevTools
No necesitas nada externo: el navegador ya inspecciona el árbol de accesibilidad (el que vimos en el Módulo 2).
- Chrome/Edge: DevTools → pestaña Elements → panel Accessibility. Selecciona el botón "Matricularme" y lee su Computed name, su Role y sus estados. Ahí ves si el nombre accesible que oíste en NVDA viene del texto, de un
aria-labelo de un<label>. - Firefox: DevTools → pestaña Accessibility. Tiene comprobaciones integradas de contraste y de teclado, y muestra el árbol como lista navegable.
Comprueba la estructura de encabezados y landmarks de forma visual: un árbol con un solo main, un h1 único y una jerarquía sin saltos. Si el árbol muestra un botón "sin nombre" (name vacío), acabas de encontrar lo que en NVDA sonaba a "botón" pelado.
- Comprobación manual de contraste
Para un caso puntual —el precio en gris claro sobre blanco, el texto del botón— no hace falta escanear toda la página. Usa el cuentagotas de contraste de las DevTools (Chrome muestra el ratio al inspeccionar color, con un ✓/✗ frente a AA/AAA) o un color picker que dé el ratio. Recuerda los umbrales del Módulo 4:
- Texto normal: 4.5:1 (AA).
- Texto grande (≥24px, o ≥18.66px en negrita): 3:1 (AA).
- Componentes de interfaz y estados de foco: 3:1 (WCAG 1.4.11 Contraste no textual).
- El patrón "primer criterio que revientan las prisas"
Cuando un equipo va con prisa, casi siempre cae lo mismo primero. Ténlo en el radar:
- Foco visible eliminado (
outline: none"porque quedaba feo"). - Botones sin nombre accesible (iconos sin texto: la lupa de buscar, la X de cerrar).
- Imágenes con
altvacío o basura en imágenes informativas. - Orden de foco roto por
tabindexpositivos o por maquetar moviendo el orden visual con CSS. - Modal sin gestión de foco (no entra, no atrapa, no devuelve).
Si solo tienes 15 minutos, revisa estos cinco: son los que más usuarios afectan por menos esfuerzo.
- Checklist manual reutilizable
CHECKLIST DE PRUEBA MANUAL — página: ______________________ fecha: ______
TECLADO
[ ] Foco visible en TODO elemento interactivo
[ ] Orden de foco lógico (adelante y con Shift+Tab)
[ ] Sin trampas de teclado (Esc/Tab siempre salen)
[ ] Skip link visible al enfocar y funcional
[ ] Todos los controles operables (filtros, tabs, acordeón, modal)
[ ] Modal: el foco entra, queda atrapado y vuelve al disparador
LECTOR DE PANTALLA (NVDA / VoiceOver)
[ ] h1 único y jerarquía de encabezados sin saltos
[ ] Landmarks anunciados (banner, nav, main, contentinfo)
[ ] Botones/enlaces con nombre accesible claro
[ ] Imágenes con alt con sentido (o vacío si decorativas)
[ ] Estados anunciados (expandido/contraído, seleccionado)
[ ] Formulario de matrícula: cada campo anuncia su etiqueta
VISUAL
[ ] Zoom 200% sin pérdida de contenido
[ ] Reflow a 320px sin scroll horizontal ni solapes
[ ] Contraste AA en textos y componentes clave
ESTRUCTURA (DevTools)
[ ] Árbol de accesibilidad sin roles/nombres vacíos
[ ] Un solo <main>, landmarks correctosGuarda esta checklist como plantilla: es tu primera línea de defensa antes de tocar cualquier herramienta automática.
Errores Comunes y Consejos
- Probar con ratón "por costumbre": si tocas el ratón, ya no estás haciendo prueba de teclado. Sé estricto.
- Confundir "yo, desarrollador, con NVDA" con "un usuario real de NVDA": tú sabes dónde está todo. Esto detecta fallos técnicos, no de usabilidad (eso es la lección 06-03).
- Probar solo el "camino feliz": prueba también errores de formulario, estados vacíos y el modal abierto/cerrado varias veces.
- Fiarte del foco en un solo navegador: el foco visible y el reflow varían; revisa al menos Chrome y Firefox.
- Consejo: automatiza lo repetitivo (06-02) y reserva tu tiempo manual para el juicio (orden, nombres, sentido del
alt).
Ejercicios
Ejercicio 1. Recorres con Tab la ficha de curso de Cursalia y detectas que, al abrir el modal de matrícula, el foco no entra en él y sigue detrás, en la página. ¿Qué criterio WCAG se incumple y a qué personas afecta más?
Ejercicio 2. Con NVDA navegas por encabezados (H) en el catálogo y oyes: h1, luego h3, luego h2. ¿Qué problema hay y por qué importa para Marta?
Ejercicio 3. Diseña una mini-sesión de 15 minutos para revisar el reproductor de vídeo de Cursalia solo con teclado y lector de pantalla. Lista 4 comprobaciones concretas.
Soluciones
Solución 1. Se incumple 2.4.3 Orden del foco (y la gestión de foco del patrón modal del Módulo 5): al abrir el modal el foco debe moverse a él. Afecta sobre todo a Lucía (solo teclado) y a Marta (lector de pantalla), que quedan "fuera" del diálogo sin saber que se ha abierto. El arreglo está en el patrón de modal del Módulo 5.
Solución 2. Hay un salto de nivel de encabezado (h1 → h3 → h2): la jerarquía no es coherente. Incumple el uso correcto de encabezados (1.3.1 Información y relaciones). Marta usa los encabezados como índice para saltar por la página; una jerarquía rota le da un mapa mental equivocado de la estructura.
Solución 3. Ejemplo: (1) ¿Se llega al botón Play con Tab y se activa con Enter/Espacio? (2) ¿Los controles (volumen, subtítulos, barra de tiempo) son operables por teclado y anuncian su nombre en NVDA? (3) ¿El botón de subtítulos anuncia su estado activado/desactivado? (4) ¿El foco es visible sobre los controles y no queda atrapado dentro del vídeo?
Conclusión
Las pruebas manuales son tu red de seguridad más barata y más honesta: con teclado, lector de pantalla, zoom y DevTools detectas la mayoría de los problemas graves antes de escribir una línea de test. Pero son lentas y dependen de tu disciplina. En la siguiente lección, 06-02 Herramientas de Pruebas Automatizadas, veremos cómo delegar en máquinas la parte repetitiva y objetiva —recordando siempre que lo automático solo cubre un 30-40% y jamás sustituye a lo que acabas de aprender aquí.
Curso de Accesibilidad Web
Módulo 1: Introducción a la Accesibilidad Web
- ¿Qué es la Accesibilidad Web?
- Importancia de la Accesibilidad Web
- Visión General de las Leyes y Normas de Accesibilidad
- Introducción a WCAG
Módulo 2: Comprensión de Discapacidades y Tecnologías de Asistencia
- Tipos de Discapacidades
- Visión General de Tecnologías de Asistencia
- Cómo las Personas con Discapacidades Usan la Web
Módulo 3: Principios del Diseño Accesible
- Perceptible: Hacer el Contenido Disponible a los Sentidos
- Operable: Interfaz de Usuario y Navegación
- Comprensible: Información y Operación
- Robusto: Compatibilidad con Tecnologías Actuales y Futuras
Módulo 4: Implementación de Accesibilidad en HTML y CSS
- HTML Semántico
- Formularios Accesibles
- Uso de Roles y Propiedades ARIA
- Contraste de Color y Redimensionamiento de Texto
Módulo 5: Accesibilidad en JavaScript y Multimedia
- Creación de Widgets de JavaScript Accesibles
- Accesibilidad del Teclado
- Contenido de Video y Audio Accesible
- Proporcionar Alternativas de Texto para Imágenes
Módulo 6: Pruebas y Evaluación de la Accesibilidad
- Técnicas de Pruebas Manuales
- Herramientas de Pruebas Automatizadas
- Pruebas de Usuario con Tecnologías de Asistencia
- Interpretación de Informes de Accesibilidad
