Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Accessibility pass on battles and practice

Open
#23 0 comments 0 reactions 0 assignees View on GitHub

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

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

accessibility help wanted

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.js used on dark backgrounds.
  • Respect prefers-reduced-motion for the animations on these pages.
  • Add automated checks with @axe-core/playwright to the Playwright specs in frontend/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 lint and node scripts/check-boundary.js pass.
Dominant language
JavaScript
Stars
0
Forks
2
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from sennaicodes/codearena

All issues in sennaicodes/codearena

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.