Frontend Quality Checks
When to use
- A frontend task needs standalone quality validation outside ring:running-dev-cycle-frontend (which owns these checks in Gate 0).
- You want to run one specific check (a11y, visual, e2e, or performance) against
changed UI components, or
allof them at once.
Skip when
- Backend-only project with no UI components.
- Task is documentation-only, configuration-only, or non-code.
- Changes limited to build tooling, CI/CD, or infrastructure.
- Inside ring:running-dev-cycle-frontend — that orchestrator already runs these in Gate 0.
Related
Complementary: ring:running-dev-cycle-frontend, ring:qa-frontend
Modes
| Mode | What it checks |
|---|---|
accessibility | axe-core automated scans, zero WCAG 2.1 AA critical/serious violations, keyboard nav, focus management |
visual | Snapshot tests across all component states and viewports (mobile 375px / tablet 768px / desktop 1280px) |
e2e | Playwright user-flow tests across Chromium, Firefox, and WebKit (happy + error paths) |
performance | Lighthouse > 90 and Core Web Vitals (LCP < 2.5s, CLS < 0.1, INP < 200ms), bundle budget |
all | Runs all four modes in parallel and aggregates the verdicts |
The deep per-mode requirements live in the agent's mode files
(dev-team/agents/qa-frontend-modes/{accessibility,visual,e2e,performance}.md).
Do not duplicate them here.
Step 1: Validate Input
Required: unit_id (TASK id), implementation_files, gate0_handoffs.
Required: mode — one of accessibility | visual | e2e | performance | all.
Optional: components_list, user_flows_path, performance_baseline.
Step 2: Dispatch
For a single mode, dispatch the QA analyst with the selected mode:
yamlTask: subagent_type: "ring:qa-frontend" description: "Frontend {mode} checks for {unit_id}" prompt: | mode: {mode} unit_id: {unit_id} implementation_files: {implementation_files filtered to UI files} gate0_handoffs: {gate0_handoffs} # optional, when relevant to the mode: # user_flows_path, performance_baseline, components_list Load qa-frontend-modes/{mode}.md and follow it.
For mode: all, dispatch the four modes in parallel (one Task batch — four
Task calls in a single message), each with the same inputs and its own mode.
Aggregate the four verdicts into the output below.
Output
Aggregated pass/fail per mode:
markdown## Frontend Quality Result unit_id | mode(s): {mode or all} | Mode | Result | Violations / Failures | Iterations | |------|--------|-----------------------|------------| | accessibility | PASS/FAIL | N | N | | visual | PASS/FAIL | N | N | | e2e | PASS/FAIL | N | N | | performance | PASS/FAIL | N | N | ## Overall: PASS | FAIL (FAIL if any dispatched mode failed.)

