qa-accessibility
[Testing] WCAG 2.2 AA accessibility audit: POUR + 2.2 additions, axe-core injection, Lighthouse MCP, keyboard walk, ARIA.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
[Testing] WCAG 2.2 AA accessibility audit: POUR + 2.2 additions, axe-core injection, Lighthouse MCP, keyboard walk, ARIA.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Initialize / onboard this agentic-QA plugin onto a deployment. Installs deps, then asks the operator only what genuinely shapes the config — the environment NAME, the bug tracker (Jira / Azure Boards), the code host (GitHub / Azure Repos), and an auth preference per axis (PAT recommended, else browser/CLI login). Everything else — whether it is a native-platform or a CLIENT project, the client org, the contribution mode, the fork account — is DERIVED from the token + the filled env + a live module/repo scan. Writes project-profile.json + .env.<env> + .env.local + .mcp.json and verifies access. The whole point is to make /qa-fix route each bug to the RIGHT repo (client custom code vs native platform) and file to the RIGHT tracker. Use when standing the plugin up on a new machine or for a new customer.
Initialize / onboard this agentic-QA plugin onto a deployment. Installs deps, then asks the operator only what genuinely shapes the config — the environment NAME, the bug tracker (Jira / Azure Boards), the code host (GitHub / Azure Repos), and an auth preference per axis (PAT recommended, else browser/CLI login). Everything else — whether it is a native-platform or a CLIENT project, the client org, the contribution mode, the fork account — is DERIVED from the token + the filled env + a live module/repo scan. Writes project-profile.json + .env.<env> + .env.local + .mcp.json and verifies access. The whole point is to make /qa-fix route each bug to the RIGHT repo (client custom code vs native platform) and file to the RIGHT tracker. Use when standing the plugin up on a new machine or for a new customer.
[QA Methodology] Gather ALL fresh CI prerelease artifacts for a change (modules + platform + vc-frontend) and deploy them together to the test env (vc-deploy-dev@<TEST_ENV branch>) in ONE manifest update: resolve a tracker ticket's linked PRs across all repos (or an explicit --module/--platform/--theme/--pr set) → each PR's latest vc3prerelease build → minimal-diff repin of backend/packages.json (AzureBlob/BlobName + PlatformVersion) and theme/artifact.json → dry-run combined diff (default) or a gated deploy PR (direct same-repo when the account has write, else a fork PR) → --verify polls the env-branch pin + /api/platform/modules per target. Never merges (a human merges to deploy); writes route through gh's keyring token; prints the web-edit URL when it can't push. Unblocks /qa-test PR#N and /qa-verify-fix.
[QA Method] Triangulate each BL invariant against docs + live + source code, auto-apply confirmed changes to business-logic.md, and reconcile test-case coverage. Delegates the live axis to qa-testing-expert; runs the triangulation via ba-system-analyzer.
Bring up a local Virto Commerce stack (backend + storefront + DB + ES) via start-local, pinned to the ACTUAL deployed package manifest (vc-deploy-dev @ vcptcore-demo); optionally augment it with the module/PR versions a JIRA task needs. Use when asked to spin up / run / provision a local VC environment, reproduce a deployed env locally, or stand up an env to test a specific ticket.
[QA Method] Defect management lifecycle: JIRA Bug Workflow, triage, classification, report validation, verification protocol, defect metrics.
| name | qa-accessibility |
| description | [Testing] WCAG 2.2 AA accessibility audit: POUR + 2.2 additions, axe-core injection, Lighthouse MCP, keyboard walk, ARIA. |
| argument-hint | page URL | component name | full audit |
Run an accessibility audit against WCAG 2.2 Level AA (the 2026 practical baseline — 2.2 is the current W3C Recommendation since 2023-10-05 and is backward-compatible with 2.1; 4.1.1 Parsing was retired). Covers POUR plus the six new 2.2 AA criteria (Focus Not Obscured, Dragging Movements, Target Size Minimum, Consistent Help, Redundant Entry, Accessible Authentication).
The six 2.2 additions are manual-first. Automated tooling covers only 2.5.8 Target Size (nascently); the other five — 2.4.11, 2.5.7, 3.2.6, 3.3.7, 3.3.8 — cannot be caught by axe and must be verified in the keyboard/manual pass. A clean axe run says nothing about them.
/qa-accessibility https://example.com/checkout # Audit a specific page
/qa-accessibility ProductCard # Audit a component (delegate to /qa-storybook)
/qa-accessibility full audit # Full site audit: homepage, sign-in, catalog, PDP, cart, checkout, account
/qa-storybook/qa-storybook — a11y addon inside stories (component-isolated; tune axe rules per component)./qa-accessibility — full-page audits against storefront/admin (keyboard journeys across landmarks, page-level contrast, modal focus return, dynamic ARIA announcements)./qa-storybook. A finding that only appears once composed into a page (focus order across landmarks, skip-link target, modal portal escape) belongs here.Determine audit scope:
/qa-storybook instead/, /sign-in, /search, PDP, /cart, /checkout, /account/orders. Skip-link and consent banner must be tested first (they affect every page).Theme scope: Run a11y assertions only on the Coffee theme — it's the only WCAG-compliant theme in this project (memory: feedback_a11y_coffee_only). Capture other themes for visual diff, not a11y gating.
Delegate to ui-ux-expert via Task tool (subagent_type: ui-ux-expert):
wcag-accessibility-checklist.mdlighthouse_audit, evaluate_script (to inject axe-core and run it), take_screenshot (focus states), and the network/console captureplaywright-firefox and playwright-edgeRun the four-layer scan per route:
axeRunSnippet() from scripts/lib/axe-runner.ts — pass it verbatim to evaluate_script (it self-loads axe if absent, runs WCAG A/AA tags only, trims the result). Await it (returns a Promise), then classifyAxeResults() maps impact→severity and surfaces incomplete as WARN-for-manual-review (best-practice already excluded). If axeAvailable === false (CSP blocked the load) the result is INCONCLUSIVE — never report it as clean. Don't hand-roll the injection — the extracted snippet is the single source.lighthouse_audit MCP and read the accessibility category. Lighthouse runs a subset of axe (~50 rules) — use for trend score, never as the only signal.document.activeElement with ACTIVE_ELEMENT_SNIPPET (from scripts/lib/axe-runner.ts) into an ordered trail, then classifyKeyboardTrail(trail) flags traps (P0), off-screen focus (FAIL), and non-monotonic order (WARN). Verify Escape closes modals and focus returns to the trigger.POUR checklist (per WCAG 2.2 AA) — the 2.2 additions marked [MANUAL] cannot come from axe; verify them by hand in the keyboard pass:
[MANUAL] (sticky elements must not cover focused field), 2.5.7 alternative to drag [MANUAL], 2.5.8 target size ≥ 24×24 CSS px (44×44 stays the mobile guidance). For composite widgets, exercise the widget-specific keys (arrows/Home/End/Escape) against the matching ARIA APG pattern.[MANUAL], 3.3.7 Redundant Entry [MANUAL] (don't re-ask for known data), 3.3.8 Accessible Authentication [MANUAL] (no cognitive-function tests without alternative; password managers must work).Output:
1.4.3, 2.4.11)color-contrast — VcButton ×14), not 14 rows. Repeated low-impact violations of one rule are usually a single root-cause fix — report the fix once. Listing every instance blows the reports.md size caps and buries the signal.data-test-id (see .claude/knowledge/automation/storefront-selectors.md) → role + accessible name → DOM path / tree position. Use the tag/role/label the keyboard walk already captured; if a finding can't be located, say so ("located by selector only")..claude/rules/reports.md (hard cap 80–150 lines per bug); include WCAG criterion ID, measured vs required values, and one annotated screenshotgetComputedStyle color + effective background; assert WCAG 2.x luminance ratio (4.5:1 normal text, 3:1 large/UI/focus indicator).best-practice tag — those are advisory, not WCAG failures. Treating them as conformance bugs creates noise and erodes the team's trust in the report.data-test-id → role + accessible name → DOM path; never invent a file:line.