Skip to system
11 / Accessibility

Access is part of the interface

Keyboard, touch, zoom, screen-reader, forced-color and reduced-motion behavior are tested as product states, not release notes.

Automated + manual
productiontests/accessibility.spec.ts + docs/development/accessibility-protocol.md

Accessibility state lab

Choose a state family and inspect the contract as a product state, not a release-note promise.

Tab · Shift+Tab · Enter · Space · arrows · Escape

Keyboard path

Focus follows reading order, selected state remains visible and Escape returns to the trigger.

No accessibility state announced yet.

Representative state matrix

StateTest surfacePass condition
KeyboardTab, Shift+Tab, Enter, Space, arrows, EscapeVisible focus and logical return
Touch320px, coarse pointer, safe area44 × 44px minimum action target
Zoom and reflow200% browser zoomOne reading column; no two-axis scroll
Screen readerNames, landmarks, state and live regionsMeaning survives without graphics
Motionprefers-reduced-motionNo decorative loop or essential spatial dependency
Forced colorsforced-colors: activeBorders, focus and selected state remain visible

Accessibility verification chain

Automation blocks serious and critical regressions. True-device screen-reader, switch-control and motor-path checks remain explicitly manual.

01Static contract

Semantic owners and 44px geometry

02Automated browser

Axe, landmarks, focus and overflow

03Visual modes

Light, Dark, reduced motion and forced colors

04Manual device

VoiceOver, TalkBack and switch input

Finding record

FieldRequired valueExample
SeverityCritical / serious / moderate / minorSerious
SurfaceRoute + component + stateVisual System / mobile index / open
ModeTheme + viewport + inputDark · 320px · keyboard
EvidenceReproduction + screenshot or traceTab to close key; target is 40px
OwnerSource path + follow-upvisual-system.css · PETS issue