Perceivable
Content and UI can be perceived through more than one sense.
- Body text meets 4.5:1 contrast (1.4.3).
- Meaningful images carry descriptive text alternatives (1.1.1).
Design systems · Accessibility launch gate
A reusable WCAG 2.2 AA gate for a B2B SaaS application: the checklist that defines done, the design-handoff contracts that move accessibility upstream, and the human verification model that proves it — shown here through live components that pass the criteria they describe.
Context
Most teams agree accessibility matters and still ship inaccessible products. The failure is rarely intent — it is timing and ownership. Requirements arrive late, get translated loosely from design to code, and land on QA in the final week with no shared definition of what "accessible enough to ship" means.
This engagement treats a representative B2B SaaS application and asks a narrower question: what would it take to make accessibility a gate the release cannot pass without clearing? I scoped the work around the journeys where a barrier is most costly.
Problem
The most common shortcut is to equate "we ran axe and it's green" with conformance. It is not. Automated tooling is necessary but partial, which is exactly why a credible gate has to put humans on the criteria machines cannot judge.
The share of WCAG issues automated tools can detect, by widely cited industry estimates. The remaining majority — meaningful alt text, logical focus order, sensible screen-reader output, keyboard operability of custom widgets — needs a person. The gate is built around that gap, not against it.
My role
Process
The checklist is organised around WCAG's four principles, with each one expressed as concrete criteria a designer or engineer can act on. Below, one headline per principle plus two representative criteria; the full set lives in the filterable checklist further down.
Content and UI can be perceived through more than one sense.
Every function works by keyboard, with time and input under the user's control.
Interfaces read clearly, behave predictably, and help users recover from errors.
Markup exposes correct name, role, value and state to assistive technology.
Depth · Design-phase handoff
The design-led difference is moving these decisions upstream: contrast, focus indication, semantic structure, and component behaviour are specified and annotated before code exists. Color is the clearest example — and the easiest to get wrong, because a vivid brand palette can fail on its own canvas.
Boron's brand greens and red read fine to a designer's eye yet fail AA as small text on the cream canvas. Toggle the fix to swap in the AA-safe text aliases; the ratios beside each row are computed live from the rendered colors, not typed in.
Depth · Component contracts
Reusable components are where accessibility either scales or silently breaks. Each one carries a contract: its accessible name, role and value; its keyboard model; and its focus behaviour. Here is the dialog contract, with a working demo you can drive entirely from the keyboard.
role="dialog", aria-modal="true", labelled by its heading.Built on the native <dialog> element — native HTML first, ARIA only to fill gaps.
Try it with the keyboard: open, then Tab through, then press Esc. Focus returns here.
Depth · Verification model
Conformance is claimed against a standard, per criterion, at a point in time — and only after a human has confirmed the things tooling cannot. The gate splits verification into four methods and names the assistive-technology matrix every critical flow is tested across.
| Screen reader | Browser | Platform | Tier |
|---|---|---|---|
| NVDA | Firefox / Chrome | Windows | Primary |
| JAWS | Chrome | Windows | Primary |
| VoiceOver | Safari | macOS | Primary |
| VoiceOver | Safari | iOS | Primary |
| TalkBack | Chrome | Android | Primary |
| Narrator | Edge | Windows | Secondary |
Also in scope where applicable: screen magnification, voice control (Dragon, Voice Access, Voice Control), and switch access. Where possible, testing includes people with disabilities — the strongest signal there is.
The artifact
Every item from the checklist is here — filter by principle and area, priority, or verification method, and mark items as you clear them. Counts update live. This is the working artifact; the sections above are the parts I feature at depth.
Focus order
Logical focus order (2.4.3) and a visible focus indicator (2.4.7) are the difference between a keyboard user gliding through a form and getting lost in it. I annotate the intended tab path at handoff. Toggle the overlay to see the order on this sample form — then Tab through it for real; the current stop is outlined as you go.
Focus stop: none. Press Tab to move through the form.
Outcomes / impact
This is a methodology artifact, so the honest framing is what the gate is designed to produce, paired with the limit of each claim. Real project numbers slot into the marked fields.
Accessibility becomes a release gate with explicit blocker, high, and medium tiers — not a subjective late-stage opinion. Teams can say, per criterion, whether a build clears.
Caveat A gate only holds if leadership lets it block a launch; without that authority it degrades into a checklist nobody enforces.
Design-phase annotation moves contrast, focus, and semantics before code, reducing rework. ‹REPLACE: e.g., "defects found in design review rose from X% to Y% across two releases"›
Caveat Upstream catch depends on designers and engineers actually using the annotations; the artifact enables the shift but does not guarantee adoption.
A WCAG 2.2 AA target verified across six assistive-technology configurations with a documented known-issues list. ‹REPLACE: e.g., "N blockers and M high-priority issues resolved before launch"›
Caveat Conformance is to a standard at a point in time. It is not a claim that the product is "fully accessible" or barrier-free for every user.
An accessibility statement, a feedback channel, named ownership, and acceptance criteria in the definition of done keep the gate standing for future work.
Caveat Governance decays without a named owner and triage budget; a statement with no one behind it is worse than none.
Reflection
The hardest tradeoff was scope versus depth. A gate that lists every success criterion feels thorough but stalls a team; a gate that only lists blockers ships faster but lets real barriers through. I landed on a tiered model — block on the few things that exclude users outright, schedule the rest with dates — because a gate that is never cleared is just a document. The part I trust most is the verification model: measuring contrast and tabbing through flows on real assistive technology surfaced issues no scan reported. The part I would keep pressure on is governance, because every accessibility win quietly erodes the moment no one owns it.
Designer's note · David Paterni
Final QA
A case study about accessibility that fails its own checks would refute itself. These six checks are read from the live DOM when the page loads — what you see is the actual result, not a screenshot.