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

1.7 KiB

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