Files
undercooked/.agents/user_stories/US-12_play_accessibly.md
T
ducoterra f84c6ebaef Scaffold project and author 14-phase roadmap
Browser co-op kitchen game: FastAPI + native WebSockets, server-authoritative
20 Hz simulation, in-memory anonymous lobbies, data-driven YAML levels, Canvas 2D
vanilla ES-module client with locally authored SVG art and no external CDNs.

.agents/PLAN.md records the LOCKED decisions; .agents/user_stories/ holds the 12
flow contracts; .agents/phases/todo/ breaks them into 14 sequential, test-gated
phases (71 task files), each leaving the app launchable and the suite green.

LLM-Generated: true
2026-10-05 17:05:56 -04:00

30 lines
1.7 KiB
Markdown

# US-12 — Play accessibly
**As a** player with low vision, motor limitations, or motion sensitivity,
**I want** readable contrast, keyboard-only lobby use, and motion controls,
**so that** I can play and follow the game state.
## Acceptance criteria
1. All non-canvas UI (lobby, level list, result, HUD text) is real HTML with a logical
focus order, visible focus rings, and ≥ 4.5:1 text contrast (3:1 for large text).
2. The entire lobby → level-select → start → result loop is operable with the keyboard
only (no pointer required), with sensible default buttons.
3. Round start, score changes worth ≥ 10 points, order missed, and the round result are
announced through a polite `aria-live` region; per-frame data is never announced.
4. `prefers-reduced-motion: reduce` removes screen shake, flicker, and parallax, keeping
static hazard markers; the setting is also togglable in-game and persisted locally.
5. No information is conveyed by color alone: cooks, orders, and hazards have shape,
label, or icon differences; a colorblind-safe palette option is provided.
6. Canvas has a text alternative: `role="img"` + an `aria-label` summarizing state, and
a DOM "state panel" (toggleable) listing score, timer, orders, and hazards.
7. Text scales to 200% without loss of function; hit targets stay ≥ 44 px.
8. Sound is optional, off by default, and never required to know the game state.
## E2E suite
`tests/e2e/test_us12_accessibility.py` — keyboard-only loop, focus order, contrast audit
of computed styles, `aria-live` announcements for result, reduced-motion class applied.
## Phases
`07_canvas_client_and_hud`, `11_campaign_levels_and_progression`,
`14_accessibility_polish_and_hardening`