Access
Career Discovery accessibility
Career Discovery targets WCAG 2.2 AA. The checklist below is honest about what is covered by an automated unit or component test today versus what still needs a human pass — nothing here is marked done until it has real evidence. Site-wide statement: Accessibility.
Questionnaire
- Automated — Each prompt is a labelled fieldset/legend with a radiogroup, not bare divs
tests/unit/career-matcher-a11y-cm8.test.tsx + component structure - Automated — Every choice is a real <label>/<input> pair reachable by keyboard alone
QuestionnairePlayer markup review - Automated — No timers; progress and save/resume never expire a session
session-store.ts has no TTL/expiry logic - Automated — Screen-reader users hear live progress updates ('Question 3 of 60')
aria-live="polite" region in QuestionnairePlayer - Pending manual review — Full keyboard-only completion of Quick, Full, and Career Change flows
Requires a human keyboard-only run; see CM8_HUMAN_REVIEW.md - Pending manual review — Screen-reader run-through (NVDA/VoiceOver) of a full questionnaire
See CM8_HUMAN_REVIEW.md
Matcher results, dashboard, and job opportunities
- Automated — Save / remove-saved and compare buttons name the specific career family, not just 'Remove'
tests/unit/career-matcher-a11y-cm8.test.tsx - Automated — 'Apply' and 'Report' links on job cards name the job title and employer
tests/unit/career-matcher-a11y-cm8.test.tsx - Automated — Outbound job-search links name the source and search terms, not just 'Search'
tests/unit/career-matcher-a11y-cm8.test.tsx - Automated — Headings descend in order (h1 route heading, h2 sections, h3 job/family cards)
Component review of matcher-results-view.tsx and job-listing-card.tsx - Automated — Errors and status messages use role="alert"/role="status" so they are announced
matcher-results-view.tsx and matcher-dashboard.tsx loading/error states - Automated — Delete actions require an explicit confirmation before removing local data
matcher-dashboard.tsx and questionnaire-player.tsx confirm() prompts - Pending manual review — Visible focus indicator on every interactive matcher-results and dashboard control
Requires visual/manual verification; see CM8_HUMAN_REVIEW.md - Pending manual review — Layout and content remain usable at 400% zoom / 320px width
Requires manual browser zoom check; see CM8_HUMAN_REVIEW.md - Pending manual review — Reduced-motion preference is respected (no forced animation on results)
Requires manual OS-level reduced-motion check; see CM8_HUMAN_REVIEW.md
Exports
- Automated — Printable HTML export uses a real table with header cells, not styled divs
careerResultToPrintableHtml in src/lib/careers/matcher/exports.ts - Automated — PNG share card is a supplementary visual export, not the only way to see results
CSV, JSON, and HTML exports are offered alongside the PNG card - Pending manual review — Screen-reader review of exported HTML/CSV/JSON files
See CM8_HUMAN_REVIEW.md
Reporting a barrier
If a Career Discovery page or flow does not work with your assistive technology, use the “Report a change or missing information” link on that page, or contact us through the site Accessibility page.
Pending human review
Automated tests cover labelled controls, accessible names, and export structure. Full keyboard-only and screen-reader passes (NVDA/VoiceOver), 400% zoom, and reduced-motion checks still require a human — nothing here is marked complete until real findings are recorded via the pending-review checklist on methodology.