feat(a11y): wire axe serious/critical gate (criterion stays not-assessed — contrast finding)#76
Draft
bdelanghe wants to merge 1 commit into
Draft
feat(a11y): wire axe serious/critical gate (criterion stays not-assessed — contrast finding)#76bdelanghe wants to merge 1 commit into
bdelanghe wants to merge 1 commit into
Conversation
…sed) Vendors the conformance-kit axe-gate (hash-pinned in conformance-kit.lock.json; byte-identical to conformance-kit PR #6) and adds .github/workflows/axe.yml to run axe-core (WCAG 2.x A/AA) over every built page via Playwright/Chromium, failing closed on any serious/critical violation. HONEST: a real axe run over the built dist is NOT clean — index.html has a serious color-contrast (WCAG 1.4.3) violation (4 distinct foreground/background pairs, 22 nodes): - .hero__lock > .eyebrow--light #7fb8a2 on #0c5a42 → 3.62:1 (need 4.5) - .start-here__alt #bac6bf on #ffffff → 1.76:1 (need 4.5) - .seams__lead #7d8982 on #ffffff → 3.63:1 (need 4.5) - code-comment tokens (.c) #6f9f8c on #073d2c → 4.09:1 (need 4.5) So `a11y.axe-serious-critical` is deliberately LEFT not-assessed in data/conformance-evidence.json (not marked met) — no overclaim. The gate is wired and will turn green (and the criterion can then be asserted) once these contrasts are fixed in the brand tokens. package.json: axe-core + @axe-core/playwright + playwright (devDeps) + npm run axe. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011uU1XvPggEPNMiXBUrV8hy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wires an automated axe-core accessibility gate into the contract family so
a11y.axe-serious-criticalbecomes continuously ENFORCED. Honest outcome: the criterion staysnot-assessedbecause a real axe run is not clean yet (details below) — it is NOT marked met.Changes
gates/axe-gate.mjsintovendor/conformance-kit/(hash-pinned inconformance-kit.lock.json;verify-vendorgreen at 44 files). Byte-identical to conformance-kit PR blog: minimal writing surface (publishes post #1) #6..github/workflows/axe.yml— buildsdist, runs the gate via Playwright/Chromium over every built page, fails closed on any serious/critical violation.package.json—axe-core+@axe-core/playwright+playwright(devDeps) + annpm run axescript.data/conformance-evidence.jsonis unchanged — axe is deliberately leftnot-assessed(noaxeevidence asserted). Conformance stays 11/27 met.Why not-assessed: a real serious finding (this gate will be RED until fixed)
axe-core(WCAG 2.x A/AA) over the built dist found a seriouscolor-contrast(WCAG 1.4.3) violation onindex.html— 4 distinct fg/bg pairs, 22 nodes:.hero__lock > .eyebrow--light#7fb8a2#0c5a42.start-here__alt#bac6bf#ffffff.seams__lead#7d8982#ffffff.c#6f9f8c#073d2cAll other 8 pages (404, conformance, blog index + 5 posts) are clean. These are genuine contrast failures (muted "light"/"alt" text + dark-block syntax-comment tokens), not harness artifacts — the gate serves the full dist so brand CSS resolves. Fixing them is a brand-token decision, out of scope for this PR, so the criterion honestly stays not-assessed. Once the four colors are bumped to ≥ 4.5:1, this gate goes green and
axe: { serious: 0, critical: 0 }can be asserted.Companion PRs: conformance-kit #6 (the gate) and
bdelanghe/site#153 (same wiring; that site is axe-clean, so it asserts the criterion met).🤖 Generated with Claude Code