The audit-driven death spiral
Here's the lifecycle most organizations are stuck in. Once a year (or before a big contract), an external auditor reviews the product. The report lands: 340 findings. They get triaged into a spreadsheet, the spreadsheet becomes tickets, the tickets compete with the roadmap and lose, and by the time the worst 60 are fixed, two quarters of new feature work have introduced 200 more.
Nobody in this story is lazy or indifferent. The system fails because the feedback arrives months after the decision that caused it. The developer who wrote <div onClick> in March has no memory of it in November, no context, and — by then — six other components copied from it.
The cost curve is brutal
The shift-left argument in quality engineering is decades old, and accessibility is its most extreme case, because the same defect costs wildly different amounts depending on where it's caught:
- In the editor, as you type: the fix is a quick-fix. Seconds. No ticket, no review cycle, no QA pass. The knowledge transfers instantly — you learn the rule the moment you break it.
- In CI, at pull-request time: minutes to hours. Still cheap, still in context, but now there's a failed build and a context switch.
- In a manual QA pass: a ticket, a triage discussion, a sprint allocation. Days of elapsed time per defect.
- In an external audit: all of the above, plus consultant fees, plus the finding is now in a document your legal team has seen.
- In a user complaint or demand letter: now it's not a bug, it's a liability.
An accessibility violation is the same five lines of HTML at every stage. Only the price changes.
Why the editor is the right first gate
Automated accessibility checks famously catch "only" 30–40% of WCAG issues, and audit advocates use that number to argue tooling can't replace experts. They're right — it can't, and shouldn't. But the framing hides the operative fact: that 30–40% is the high-volume, mechanical majority of findings in a typical audit report. Missing alt text. Unlabeled inputs. Bad ARIA roles. Contrast failures. Click handlers on non-interactive elements.
These are exactly the defects a linter-class tool catches perfectly, the moment they're written, with zero process overhead. Clearing them at the editor does two things:
- It makes the eventual human audit dramatically cheaper and more useful — the expert spends time on focus order, semantics, and flow logic instead of cataloguing missing labels.
- It teaches the team. A developer who sees "WCAG 1.3.1: form input has no associated label" fifty times in their editor stops writing unlabeled inputs. Audit PDFs teach nobody anything.
The three-layer setup that actually works
- Editor (continuous): real-time WCAG inspections with quick-fixes. This is where 80% of violations should die — before they're ever committed.
- CI (per pull request): the same rule set as a merge gate, plus branch comparison so a PR can't quietly lower the accessibility baseline. The gate's job isn't to find issues — it's to guarantee the editor layer wasn't skipped.
- Human testing (per release / per quarter): keyboard-only passes and screen reader sessions on critical flows, plus periodic expert review. Humans validate experience; machines validate rules.
One rule set, every layer. The single most common failure mode in shift-left rollouts is the editor checking one thing, CI checking another, and the auditor checking a third. Pick a WCAG version and level (2.1 AA is the EAA-aligned floor; 2.2 AA is the future-proof choice) and configure every layer against it.
What changes culturally
Teams that move the first check into the editor report the same shift: accessibility stops being a department and becomes a property of code, like type safety. Nobody schedules a meeting about a red squiggle. They just fix it.
That's the whole thesis. Make the right thing the path of least resistance, and put it where developers already live.
Put the first gate in your IDE
Accessibility Compliance Helper Pro runs 40+ WCAG checks as you type, with quick-fixes, SARIF export for pull-request annotation, and a CI gate CLI that fails the build when your accessibility score drops.
Install from JetBrains Marketplace