Skip to content

UX quality bar (7 criteria)

Measurable thresholds gated in CI.

Seven measurable UX criteria. Each will be gated in CI when its tooling lands (tracked in ROADMAP.md Epic 12).

The 7 criteria

#CriterionToolThreshold
1a11y violationsaxe-core via Playwright0 serious, 0 critical
2Lighthouse Performance@lhci/cli mobile preset≥ 90
3Lighthouse a11y + Best Practices@lhci/cli mobile preset≥ 95 each
4prefers-reduced-motion respectedlint: every motion/react animate= is inside LazyMotion + useReducedMotion() branch (or tailwindcss-motion)0 unguarded
5WCAG AA contrastbuild-time check on :root / .dark var pairs0 failures (≥ 4.5:1)
6Keyboard nav + visible focusPlaywright tab-walk on /showcase100% reachable + :focus-visible ring
7Theme-toggle zero-flash on Slow 3GPlaywright with network throttling0 FOUC frames

Visual regression vs ux:check

These are separate gates with a shared Playwright runner:

  • Visual regression (tests/__screenshots__/) — catches unintended change
  • npm run ux:check — catches intentional harm (dark patterns, contrast failures, motion violations)

Status

As of June 2026, criteria 6 (keyboard nav) has a Playwright test in tests/a11y/keyboard-nav.spec.ts. Full ux:check wiring (axe-core, Lighthouse CI) is planned for Epic 12.

See docs/PRINCIPLES.md §5 for the full rationale.

Report an issue

Show diagnostics

Environment

 

Console errors

 

Failed requests