Skip to content

WCAG 2.2 receipts

This is the credibility page. Every WCAG 2.2 Success Criterion that applies to a combobox-with-listbox component is listed here, alongside the automated test, manual checklist item, or both that proves we satisfy it.

If you find a violation, please open an issue with the SC reference and your repro steps.

SCTitleHow we satisfy itStatus
1.1.1Non-text ContentThe combobox has a programmatic name via the consumer’s <label htmlFor>. We do not introduce decorative non-text content; consumers’ avatars must include alt="" (a11y addon flags missing alt).auto
1.3.1Info and Relationshipsrole="combobox" + aria-controls + aria-expanded + aria-activedescendant + role="listbox" + role="option" correctly model the relationship between input and popup.auto
1.3.2Meaningful SequenceListbox follows the input in the accessibility tree; live region appears after the listbox.Manual checklist
1.4.3Contrast (Minimum)The unstyled component ships no colors. The default theme passes 4.5:1 in light and dark mode, verified by axe color-contrast rule.planned
1.4.10ReflowThe component reflows down to 320×256px viewports — listbox uses Floating UI’s size middleware to clamp its height.auto
1.4.11Non-text ContrastDefault-theme focus rings and highlight backgrounds meet 3:1 against adjacent surfaces.planned
1.4.12Text SpacingThe unstyled component sets no letter-spacing, line-height, or word-spacing; consumer styles control spacing.auto
1.4.13Content on Hover or FocusThe listbox is dismissible (Escape), hoverable, and persistent until the user closes it or the trigger window collapses.Manual checklist
SCTitleHow we satisfy itStatus
2.1.1KeyboardEvery action — open, navigate, accept, cancel — is reachable via keyboard alone.auto
2.1.2No Keyboard TrapTab moves focus out (or accepts and moves out, configurable). Escape closes the listbox without losing input focus.auto
2.1.4Character Key ShortcutsWe define no single-character shortcuts outside the editing area.N/A
2.4.3Focus OrderWe use aria-activedescendant, not focus-moving. The textarea retains DOM focus throughout.auto
2.4.7Focus VisibleDefault theme paints a 2px outline on the textarea. The unstyled component does not strip the user agent’s focus ring.Manual checklist
2.4.11 (2.2)Focus Not Obscured (Min)Listbox uses Floating UI flip() and shift() to stay on-screen. Manual checklist verifies it does not obscure the textarea’s focused caret.Manual checklist
2.5.3Label in NameThe textarea’s accessible name is the visible label (consumer-controlled). Listbox options’ accessible names match their visible text.Manual checklist
2.5.7 (2.2)Dragging MovementsNo drag interactions.N/A
2.5.8 (2.2)Target Size (Minimum)Default theme’s listbox option min-height: 40px. The unstyled component ships no styles; consumers must verify.planned
SCTitleHow we satisfy itStatus
3.2.1On FocusFocusing the textarea does not open the listbox; the listbox opens only when a trigger character is typed.auto
3.2.2On InputTyping in the textarea may change the listbox contents but does not change context.auto
3.2.6 (2.2)Consistent HelpN/A — the component does not provide help mechanisms.N/A
3.3.7 (2.2)Redundant EntryInserted mention tokens are visible in the textarea; users do not have to re-enter them.auto
3.3.8 (2.2)Accessible AuthenticationN/A.N/A
SCTitleHow we satisfy itStatus
4.1.2Name, Role, ValueAll ARIA roles, names, and states are correct, verified by axe-core’s aria-* rules on every Storybook story in CI.auto
4.1.3Status MessagesA polite aria-live="polite" region announces result count, loading, error, and the active descendant by name. Debounced to avoid SR chatter.auto

Run before every minor release. Results are posted in the GitHub release notes.

SR + browser + OSStatusLast verified
NVDA + Firefox (Windows)TBD
JAWS + Chrome (Windows, free 40-min mode)TBD
VoiceOver + Safari (macOS)TBD
VoiceOver + Safari (iOS)TBD
TalkBack + Chrome (Android)TBD

Manual SR test plan template — file an issue using this template after a manual run.