Reporte de auditoría VoiceOver (AAA)
Auditoría manual con lector de pantalla de https://a11yequitas.org contra WCAG 2.2 AAA usando VoiceOver en macOS + Safari.
Ejecución · 2026-05-24 · Todas las verificaciones aprobadas43/43 verificaciones aprobadas · 100% completado · VoiceOver + Safari (macOS) · WCAG 2.2 AAA
Por qué una pasada manual con VoiceOverLos motores automáticos (axe-core, Alfa) detectan la mayoría de los problemas de contraste, ARIA y estructura. Una pasada humana con VoiceOver detecta lo que solo un oyente puede oír: calidad de los anuncios, intención del orden de lectura, cambios de estado en widgets personalizados y finalización de tareas con la pantalla apagada. Cada criterio AAA aquí abajo se verificó con una verificación en vivo.
Reporte sin procesarDescargue el JSON completo: voiceover-2026-05-24.json
0. Setup (do once)
5/5 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| — | Confirm core keys: VO = Control+Option, toggle ⌘F5, Rotor VO+U, Read-all VO+A, stop Control, next VO+→. | Aprobada |
| — | Set VoiceOver Utility → Verbosity → High for the audit (but don't design to High-only). | Aprobada |
| — | Test in Safari first, then spot-check Chrome — AT+browser combos differ. | Aprobada |
| — | Do at least one screen-off pass per page: complete the task by ear alone. | Aprobada |
| — | Decide record format: per-page notes (URL, criterion, pass / N-A reason / defect + repro). | Aprobada |
1. Global / every-page
9/9 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| 2.4.1 | [2.4.1] Skip link: first Tab hits 'Skip to main content'; activating moves VO focus into #main. | Aprobada |
| 1.3.1 / 2.4.1 | [1.3.1 / 2.4.1] Landmark sweep (VO+U → Landmarks): banner, nav, main, contentinfo present and named; no duplicate unlabeled navs. | Aprobada |
| 1.3.1 / 2.4.10 | [1.3.1 / 2.4.10] Heading sweep (VO+U → Headings): one h1, no skipped levels, coherent outline by ear. | Aprobada |
| 2.4.4 / 2.4.9 | [2.4.4 / 2.4.9] Link sweep (VO+U → Links): every link makes sense out of context; no 'click here / read more'. | Aprobada |
| 1.1.1 | [1.1.1] Logo link announces a text name, not 'image' or a filename. | Aprobada |
| 1.3.2 | [1.3.2] Reading order: VO+A read-all flows logically, matching visual layout. | Aprobada |
| 2.4.7 / 2.4.13 | [2.4.7 / 2.4.13] VO cursor and visible focus indicator stay together; focus never lands on an empty/unlabeled element. | Aprobada |
| 3.1.1 / 3.1.2 | [3.1.1 / 3.1.2] Correct voice/pronunciation; html lang set; inline foreign phrases marked. | Aprobada |
| 2.1.2 | [2.1.2] No keyboard/focus trap: Tab and VO+→ through and back out of every region. | Aprobada |
2. Masthead — font & theme switchers
5/5 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| 4.1.2 / 1.3.1 | [4.1.2 / 1.3.1] Font switcher (System/Lexend/Atkinson/OpenDyslexic): each announces name + role + current state; change is announced. | Aprobada |
| 4.1.2 | [4.1.2] Theme switcher (System/Light/Dark): name + role + selected state announced; selection updates state. | Aprobada |
| 1.3.1 | [1.3.1] State persists & is perceivable: after choosing OpenDyslexic and navigating back, VO still reports correct selection. | Aprobada |
| 2.1.1 | [2.1.1] Both switchers reachable and operable via VO+Space / arrows; no mouse-only behavior. | Aprobada |
| 1.4.12 | [1.4.12] OpenDyslexic is a visual-only change: VO output and reading order unaffected. | Aprobada |
3. How-to guide pages (content + embedded examples)
6/6 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| 1.3.1 | [1.3.1] Tables page: navigate live table with VO table commands — row/column headers announced per cell, caption announced, scope correct. | Aprobada |
| 1.1.1 / 1.3.1 | [1.1.1 / 1.3.1] Charts page (Chart.js bar + doughnut): canvas is aria-hidden/labeled, sibling data table reachable; numbers available by ear. | Aprobada |
| 1.1.1 / 2.1.1 | [1.1.1 / 2.1.1] Charts page (OpenStreetMap WA/OR/CA): text/data equivalent of map content exists; map isn't a pile of image announcements. | Aprobada |
| 1.1.1 | [1.1.1] Images page: informative images announce useful description; decorative ones silent; complex SVGs have reachable text equivalent. | Aprobada |
| 1.2.x / 4.1.2 | [1.2.x / 4.1.2] Videos page: VO operates player controls (name+state); captions toggle announced; transcript present and readable. | Aprobada |
| 3.1.3 / 3.1.4 / 3.1.5 | [3.1.3 / 3.1.4 / 3.1.5] Plain-language by ear: prose holds at Grade 8; abbreviations (ARIA, WCAG, DOJ) expanded or have accessible expansion. | Aprobada |
4. Custom ARIA components
4/4 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| 4.1.2 / 1.3.1 | [4.1.2 / 1.3.1] Accordion: headers announce as buttons with aria-expanded state; activation announces change; collapsed content not reachable. | Aprobada |
| 4.1.2 / 2.1.1 | [4.1.2 / 2.1.1] Tabs: tablist + tabs announce role + selected state; arrow keys move; panel associated. Test auto AND manual activation. | Aprobada |
| 4.1.2 / 2.1.1 / 2.1.2 | [4.1.2 / 2.1.1 / 2.1.2] Dropdown/combobox: native select announces value; custom combobox announces role/expanded/active option/selection; Escape returns focus audibly. | Aprobada |
| 4.1.3 | [4.1.3] Live regions: updates announced without moving focus, once, with correct politeness (status vs alert). | Aprobada |
5. Forms (where present)
4/4 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| 1.3.1 / 3.3.2 | [1.3.1 / 3.3.2] Every field announces a programmatic label (not just placeholder); required state announced. | Aprobada |
| 3.3.1 / 3.3.3 | [3.3.1 / 3.3.3] Errors announced; VO can navigate to the field in error; error text associated, not just colored. | Aprobada |
| 3.3.5 / 2.2.6 | [3.3.5 / 2.2.6] AAA help available where claimed (3.3.5); any timeout warned (2.2.6). | Aprobada |
| 1.3.5 | [1.3.5] Autocomplete/purpose set so field purpose is programmatically determinable. | Aprobada |
6. AAA-specific by-ear checks
6/6 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| 2.4.8 | [2.4.8] Location: breadcrumb or current-page indicator announced so a VO user knows where they are. | Aprobada |
| 2.4.12 / 2.4.13 | [2.4.12 / 2.4.13] Focus not obscured by sticky header/footer; focus indicator substantial (visual + VO-cursor correlation). | Aprobada |
| 1.4.6 / 1.4.8 | [1.4.6 / 1.4.8] Enhanced contrast holds across theme + font combos; check OpenDyslexic + dark theme. | Aprobada |
| 2.1.3 | [2.1.3] Everything operable by keyboard, including map and charts, or a documented accessible alternative. | Aprobada |
| 2.2.3 / 2.3.2 | [2.2.3 / 2.3.2] No timed content; no flashing in any chart animation. | Aprobada |
| 3.2.5 | [3.2.5] Font/theme switch and nav don't trigger unexpected context changes; nothing auto-navigates. | Aprobada |
7. Wrap-up
4/4 verificaciones aprobadas
| SC | Verificación | Resultado |
|---|---|---|
| — | Re-run screen-off task test end-to-end on the two most complex pages (charts page, one component demo). | Aprobada |
| — | For every AAA criterion you cannot meet, write the N/A rationale into the accessibility statement; match VPAT/ACR language. | Aprobada |
| — | Anything VoiceOver flagged that axe/Alfa/Insights passed → new Playwright assertion or permanent manual line-item. | Aprobada |
| — | Record browser/AT versions (Safari + VoiceOver build, macOS version). | Aprobada |
Metodología
Fuente de la lista: Lista de verificación VoiceOver (AAA). Cada criterio se probó al oído con VoiceOver en Safari, con al menos una pasada de tarea con pantalla apagada por página. Los resultados se exportaron como JSON desde la herramienta.
