facebook / facebook/astryx

[Tracker] Accessibility program — H2 guardrails, conformance tests, and bug burn-down

Open
#4,475 0 comments 0 reactions 2 assignees Claimed by @rubyycheung View on GitHub
accessibility enhancement
Dominant language
TypeScript
Stars
13.1k
Forks
1.1k
Avg merge
1d 14h
Merged PRs (30d)
669

Description

Umbrella tracker for the accessibility workstream this half: establish long-term a11y guardrails for Astryx components, encode APG/WCAG conformance as automated tests, and burn down the known accessibility bugs.

## Goals

- **Guardrails:** an automated, reusable conformance test suite so a11y regressions are caught in CI, not after release (see the aria-spec suite below).
- **Traceability:** every conformance check references a specific WCAG success criterion or APG pattern by number, so a passing/failing test maps to a concrete spec clause.
- **Completeness:** a rubric/checklist to review each spec test for coverage, since automated checks miss aspects of a11y that still need explicit assertions.
- **Burn-down:** resolve the known accessibility bugs, verified against the new suite.

## Testing infrastructure

- #4112 — Encode APG patterns as reusable ARIA conformance contracts (internal aria-spec suite)
- #4145 — Vibe test: Accessibility dimension is a false positive — invisible to component-level a11y quality
- #3343 — Accessibility & keyboard-management program: shared interaction primitives, then migrate components

## Known accessibility bugs

- #3654 — Widespread WCAG 2.1 AA colour-contrast failures across the design system
- #4421 — WCAG 2.1 A 1.4.1 use-of-colour failure — Breadcrumb Item
- #4414 — Badge `variant="error"` label fails WCAG AA contrast (4.14:1) in the neutral theme
- #4450 — Selector trigger has no accessible name, and its role changes with `hasSearch`
- #3764 — Selector doesn't allow keyboard to select by typing
- #3335 — TabList uses the navigation-links pattern, not ARIA Tabs (no role=tab/tabpanel, aria-selected, arrow-key nav)
- #4132 — CheckboxInput: description isn't part of the clickable label
- #4282 — Chat composer: ArrowUp/ArrowDown recall history mid-text, blocking multi-line caret navigation
- #4173 — Markdown-rendered headings have no id — Outline links never scroll to target

## Conventions (as we develop each spec test)

- **Spec traceability:** each test name embeds the WCAG name + number (or APG pattern id), and carries a machine-readable spec reference property so tests trace back to a clause.
- **Completeness rubric:** derive and apply a checklist/rubric to review each spec test for completeness (informed by prior a11y PRs). Automated conformance ≠ full a11y coverage.
- **Trial validation:** as part of the aria-spec trial, apply the contracts to the relevant existing core components.

_Add newly-filed accessibility issues here as they come in._

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.