Accessibility pass on battles and practice
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript, nextjs, nodejs, playwright
- Domain
- accessibility, frontend, testing
Research direction
Start by reading frontend/pages/battle.js, the matchmaking, practice, and results flows, backend/elo.js, and the related Playwright specs in frontend/e2e/. Map the full keyboard path and current announcements, then run the existing checks to establish a baseline. Done means the requested VoiceOver or NVDA notes are included, axe reports no serious or critical violations, and npm test, npm run lint, and node scripts/check-boundary.js pass.
Written by the indexing model from the issue text.
Description
The battle page is the heart of CodeArena and has never had an accessibility pass. A timed race is exactly where keyboard and screen reader gaps hurt most: a blind player cannot hear that the opponent just passed 3 of 8 tests or that 30 seconds remain.
Scope
frontend/pages/battle.js, matchmaking, practice and the results screen.
What to do
- Full keyboard path: queue, accept a match, write code, run, submit, read results and rematch without a mouse. The Monaco editor traps Tab by default, so document and test the escape key combination.
- Live regions for events that matter mid-battle: opponent progress, time warnings at 60 and 10 seconds, run results, battle end. Announce them politely and do not flood.
- Visible focus styles everywhere, and color contrast at WCAG 2.2 AA, including rank tier colors in
backend/elo.jsused on dark backgrounds. - Respect
prefers-reduced-motionfor the animations on these pages. - Add automated checks with
@axe-core/playwrightto the Playwright specs infrontend/e2e/for these pages, failing on serious and critical violations.
Definition of done
- A short screen recording or notes from a real VoiceOver or NVDA run through a full battle, in the pull request.
- Axe checks pass with zero serious or critical issues on the pages above.
npm test,npm run lintandnode scripts/check-boundary.jspass.
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sennaicodes/codearena
-
Add issue and pull request templatesMay be free again @franciscorodr26 claimed this 17 days ago, and no pull request is open. Opendocumentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
sennaicodes/codearena#13 · 1 comment ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 45/100
sennaicodes/codearena#34 ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 35/100
sennaicodes/codearena#33 ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 45/100
sennaicodes/codearena#32 ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 38/100
sennaicodes/codearena#31 ·
All issues in sennaicodes/codearena
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
AOSSIE-Org/BabyNest#284 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
seek4science/seek#2762 ·
Maintainers usually reply within 5 days
-
feedback simulation workshop
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
githubnext/gh-aw-workshop#5009 ·
Maintainers usually reply within 1 day
-
Clinic sharing: fast sync refusal message suggests Delete Data, which only developer builds haveOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
avniproject/avni-client#2228 ·
-
Add: K+ Sport 2 LogoOpencheck:passed logos:add
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 6 days