RELE · 10-accessibility.md · 12 de 22

En esta página 1. Objetivo 0%

10 — Accesibilidad — RELE

1. Objetivo

Orientar el vertical slice L2 a WCAG 2.2 AA en lo razonable para una app daily de portfolio: contraste, teclado, labels, estados no solo-color, y mensajes de error.

No se declara certificación formal AA. Esto es checklist de diseño e implementación.

2. Principios aplicados

PrincipioAplicación en RELE
PerceptibleContraste navy/fog; badges con texto; alt en hero
OperableTargets ≥ 44px en CTAs; formularios nativos
ComprensibleLabels visibles; errores en texto; estados con nombre
RobustoHTML semántico razonable; Angular standalone

3. Contraste

ParUsoMeta
#0C2340 sobre #EEF1F4Texto body≥ 4.5:1
#FFFFFF sobre #2F8F8CBotón sea≥ 4.5:1
#FFFFFF sobre #0C2340Botón ink / login panel≥ 4.5:1
#FFFFFF sobre #E07A5FBotón coral≥ 4.5:1
#5A6B7D sobre fogMutedVerificar; subir a ink si falla

Acción: si muted falla en labels pequeños, usar ink o subir peso.

4. Teclado y foco

ControlExpectativa
Links navTab order lógico logo → entrar → CTA
Loginemail → password → submit
Listacada card es link; Tab entre items
Form nuevacampos en orden DOM → submit
Detalle ADVISORnota → REVIEWED → FLAGGED

Mejora L2+: focus ring visible (focus-visible:ring-2 ring-sea) en todos los interactivos.

5. Formularios

Requisitov1
Label asociado<label> con span + input (implícito wrapping)
requiredatributos HTML en login
Errorestexto coral bajo el form
type email/password
No placeholder-onlylabels siempre visibles

6. Color y estado

RiesgoMitigación
Solo color para statusBadge incluye texto del enum
Coral = error y flagContexto de pantalla distinto + texto
Stats “abiertas” en coralLabel ABIERTAS presente

7. Media

Elementoa11y
Hero homealt="Contador y entorno doméstico de energía"
Decorativeno hay iconos vacíos críticos

8. Estructura semántica

PantallaEstructura
Homeheader + sections + headings jerárquicos
Loginheadings h1/h2; form
Listaheader + main + h1 + lista ul/li
Detallemain + h1 periodo

9. Auth y timeouts

  • No hay timeout de sesión UI en v1; JWT expira según config server.
  • Logout explícito limpia storage.
  • Mensajes de 401 en flujos protegidos: redirect login (soft).

10. Lectores de pantalla (notas)

ÁreaRecomendación
StatsPreferir texto “Total 5” legible; evitar solo dígitos sueltos sin label
BadgesEl texto del status es suficiente
Botones estado“Marcar REVIEWED” es verboso y correcto

11. Mobile

Requisitov1
Touch targetbotones rounded-full con py suficiente
Zoomno bloquear scale en viewport meta de forma hostil
Orientaciónlayout apilado ok

12. Matriz de pruebas a11y (manual)

#PruebaCriterio pass
A1Tab por home y loginFoco no se pierde
A2Login solo tecladoSubmit OK
A3Zoom 200% listaSin solapamiento crítico
A4Contraste botonesTexto legible
A5Empty/errorMensaje en texto, no solo color
A6Badge statusNombre del estado anunciable

13. Deuda a11y aceptada (no bloquea L2)

ÍtemPrioridad
Focus rings sistemáticosL2+
Live regions al patch statusL2+
Route guards + anuncios de páginaL2+
Auditoría axe automatizada en CIL2+
i18n de enums a españolL2+

14. Criterio de aceptación a11y v1

  1. No hay información crítica solo por color.
  2. Hero tiene alt descriptivo.
  3. Forms tienen labels visibles.
  4. Errores de login y lista son textuales.
  5. CTAs principales son alcanzables por teclado.