fix(a11y): unique nav landmarks + aria-current for active route #62
No reviewers
Labels
No labels
backend
bug
completed
documentation
duplicate
enhancement
feature
frontend
good first issue
help wanted
in-progress
invalid
performance
phase-1
Phase1
Phase2
Phase3
planning
question
refactor
security
test
testing
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Kalle/ATM!62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/a11y-nav-landmarks"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan
Continue the in-progress Release Hardening Accessibility audit pass (
[~]) — audit and fix WCAG AA violations in the primary navigation (MobileNavigation), the second most-touched surface after the lesson player. The previous iteration (PR #56) established the jest-axe infra and fixed the AudioPlayer; this iteration covers the app's navigation chrome.Outcome
Added a 4-assertion jest-axe accessibility suite for
MobileNavigation(src/components/__tests__/MobileNavigation.a11y.test.tsx). Fixed two concrete WCAG AA violations:landmark-unique(WCAG 1.3.1 / 2.4.1): the mobile bottom bar and the desktop sidebar both rendered a<nav>element with no accessible name, so screen readers could not distinguish them. Addedaria-label(main_navigation/sections_navigation, i18n into all 9 locales).aria-current(WCAG 1.3.1 / 2.4.8 Location): the active route was indicated only by colour, with no semantic location cue. Addedaria-current="page"to active links in both bars.Also added ambient jest-axe type declarations (
src/types/jest-axe.d.ts+src/types/vitest-jest-axe.d.ts) so baretsc --noEmitpasses locally (jest-axe ships no types of its own).Impact on release goals
Release Hardening → "Accessibility audit pass" stays
[~](second component now audited + green; AudioPlayer was first via PR #56). A keyboard-only or screen-reader user can now orient themselves in the app's navigation: the two nav regions are announced distinctly, and the current page is spoken. This protects the D1→D7 retention window for assistive-tech users — they can navigate to the library and back to home without sighted help.Blackbox
python3 scripts/blackbox_test.py --target testing→ green (36/36)tsc --noEmit→ cleanSix-perspectives check
Risk
Low. Changes are semantic attributes (
aria-label,aria-current) + i18n keys only; no visual or routing behaviour change for sighted mouse users. No Feldenkrais-principle surface touched.Merge note (parallel work): both this branch and PR #56 add
jest-axetopackage.json/package-lock.json. Whichever merges first will require a mechanical rebase of the other — there is no logic conflict, only a lockfile resolution.Checklist
dev(e8e268a)test:,fix:,docs:)This PR was created by an AI agent (OpenHands) on behalf of the ATM automation.
View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.