Accessibility
Last recorded automated check: Not verified
What is checked automatically
npm run a11y:check opens eight pages in a real browser and verifies, on the HTML those pages actually produce:
- each of them has exactly one
h1 - no heading level is skipped
- each image has an
altattribute (empty if decorative) - each interactive control has an accessible name
- no
divorspancarries a click handler on its own - each
ahas anhref - each form field has an associated label
- the document
langattribute is set and follows the selected language - links opening a new tab carry
rel="noopener" - modal windows declare
role="dialog"andaria-modal
What was done by hand
- The activity bar, explorer, tabs and status bar are real interactive elements: reachable with Tab and announced with their state.
- Modal windows (project image, command palette, PDF viewer) trap focus, close on Escape and return focus to the element that opened them.
- Single-letter shortcuts do not fire while typing in a field and never shadow browser combinations: Ctrl+F used to open full screen instead of find.
- Motion follows
prefers-reduced-motionand the explicit interface preference, which wins. - Ephemeral messages (email copied, form outcome) are announced through
aria-liveregions. - The contact form has real labels bound to their fields: they are visually hidden because showing them would change the layout, not because they are unnecessary.
What is NOT proven
No automated tool establishes WCAG conformance. The checks above catch structural errors, not whether an alt text actually describes its image or whether a flow makes sense through a screen reader. So the site does not claim "AA compliant": it states what has been verified, and how.