Accessibility Notes
Target: WCAG 2.2 Level AA.
Implemented In Current Surface
- Industry, pathway, and occupation pages use semantic sections and visible headings.
- Industry cards and occupation cards are keyboard-focusable links.
- Tag definitions are rendered as visible content on occupation pages and as title-supported labels on pathway cards.
- Approved launch templates include a skip link targeting `#main-content`.
- Search inputs expose explicit accessible names.
- Region selection uses a labeled select, labeled ZIP entry, and explicit fallback message.
- External resource links are keyboard reachable and visible.
- Color is not the only carrier for tag meaning; labels and definitions are present.
Manual Checks
- Keyboard path: `/` -> industry card -> occupation card -> provider/resource link.
- Mobile layouts: home industry grid, industry pathway groups, and occupation details.
- Screen reader pass: region selector, tag definitions, export links, and source status.
Lightweight Automated Coverage
Launch-source command:
npm run accessibility:launch-routes
Scope:
- `/`
- `/career-pathways`
- `/industries/aerospace`
- `/industries/construction`
- `/careers/10`
- `/resources`
- `/docs/mvp/accessibility-notes`
Evidence from June 19, 2026:
- Command completed with exit code 0.
- The checker passed all 7 approved public launch evidence routes.
- The checker verifies source-level coverage for one main landmark, at least one page-level heading, skip-link/main-target pairing, image alt text, and accessible names for links, buttons, and inputs.
- The checker intentionally stays source-based and dependency-free so it can run quickly without starting the full Next.js app.
- `/analytics/readiness` is intentionally excluded from this launch accessibility scope while `/analytics/*` remains outside the public production boundary.
Full browser WCAG command, with the local app running:
npm run accessibility:wcag-aa
Additional evidence from June 19, 2026:
- Browser-based axe coverage completed with exit code 0 against `http://127.0.0.1:3000`.
- The checker audited 835 sitemap and seed routes for WCAG 2.1 A/AA rules.
- The checker now prints progress during long route sweeps, uses `domcontentloaded` plus a settle delay for streamed Next.js pages, and retries failed routes under lighter concurrency before declaring a route inaccessible.
Optional preview/live command, when a local or deployed app URL is available:
ACCESSIBILITY_BASE_URL=https://example-preview-url npm run accessibility:launch-routes:live
Open Items
- Batch health-check workbook link candidates before launch.
- Confirm final MCJ/CDLE naming and label approvals.