Description
Audit revealed several accessibility gaps:
Findings
- Keyboard navigation: most games (SchulteGrid, StroopTest, NBackTest, etc.) rely entirely on mouse/touch clicks. No keyboard support for core gameplay.
- Focus management: AuthModal and FeedbackModal do not trap focus. Tab can reach elements behind modal. Focus not restored on close.
- ARIA labels: most icon-only buttons (mobile menu toggle, close, theme toggle) lack aria-label. Only 3 aria-labels exist in the whole codebase.
- Navigation landmarks: header nav uses with onClick navigators. Screen readers don't recognize these as navigation. Should be with /.
- Skip-to-content: no skip link for keyboard users to bypass header.
Acceptance Criteria
- Add keyboard event handlers to all game components (Tab + Enter/Space for primary actions)
- Implement focus trap in AuthModal and FeedbackModal with restore on close
- Add aria-label to all icon-only buttons
- Replace nav buttons with / elements with role=navigation
- Add skip-to-content link at top of App.tsx
- Verify with axe DevTools or similar a11y scanner
Severity: Medium
- Modal focus escape is a WCAG failure
- No a11y testing in CI currently
Description
Audit revealed several accessibility gaps:
Findings
Acceptance Criteria
Severity: Medium