The real WCAG failure on gov.uk that axe doesn't report
The UK government’s site is the most cited accessibility reference on earth. GOV.UK’s design system is studied, copied, and praised. And its search button fails WCAG 2.2 AA — in a way the industry’s default scanner does not report.
The finding
The “Search GOV.UK” button renders its label in #1d70b8 on a #d2e2f1
background at 13px. That is a contrast ratio of 3.91:1. Normal text at
that size needs 4.5:1 (criterion 1.4.3, level AA). It fails — and it
fails for every low-vision user in a glare-lit room, which is the user WCAG
writes for.
I know because my tool computed it. Not sampled, not estimated: the rendered audit loads the page in Chromium, resolves the effective colors (including transparency stacks), applies the official relative-luminance formula, and compares against the threshold at the element’s actual size and weight.
Why axe doesn’t tell you this
Run axe-core on GOV.UK’s homepage and the color-contrast rule lands in
“incomplete”, not “violations”. That is a defensible engineering choice —
contrast is genuinely hard to compute in the general case (gradients,
background images, z-stacks), and axe would rather say “needs review” than
guess. On today’s run, axe reports one violation type (region); contrast
isn’t in the list.
But here’s the thing about “incomplete”: agents don’t read it as a task. They read it as noise. An AI coding assistant running the default pipeline gets a violations list, and an incomplete list, and acts on the first. The failure mode isn’t that axe is wrong — it’s that the honest shrug gets dropped on the floor.
So a11y-toolkit makes the opposite bet: compute it. Resolve the real background through every alpha layer, apply the formula, and say the number. Where it truly can’t be computed (text over photos), it says so in the findings and points you at pixel-sampling instead of pretending.
Reproduce it yourself
The toolkit is a free MCP server for AI agents (19 tools, zero dependencies at the core). Or use the online analyzer:
The audit returns the ratio, the two colors, and the exact element — plus 49 other criteria signals (target sizes, focus traps, shadow DOM, 320px reflow, form errors, the works).
The uncomfortable general point
Automation covers roughly 92% of WCAG 2.2 A/AA criteria. Everyone says it; almost no tool behaves as if it were true. The two honest failure modes are:
- Overclaiming — the overlay vendors, one of which took a $1M FTC fine for it.
- Under-delivering the checkable part — filing computable facts as “incomplete” and letting them vanish.
The first is a lie. The second is a shrug. Users with low vision are failed by both. I built a toolkit that does neither: it computes everything computable, refuses to compute what isn’t, prints the boundary between them, and hands you a hash-verified evidence pack for the human who signs the rest.
That last part matters most. A conformance claim needs a person behind it — reachable, attributable, dated. The machine’s job is to shrink and sharpen that person’s work to exactly what judgment it actually requires.
a11y-toolkit: 19 MCP tools + 5 prompts, 50 of 54 WCAG 2.2 A/AA criteria with automated signals, zero dependencies at the core, es/en, MIT. Available on PyPI, the MCP Registry, and Zenodo (DOI: 10.5281/zenodo.22843722).