Skip to main content

Designing Clarity in Accessibility Testing

Accessibility work shouldn't require three tools, a spreadsheet, and a prayer. It should be fast, in context, and something your whole team can act on.

Chrome Extension
Developer Tools
Vibe Coding
Designing Clarity in Accessibility Testing

Project Overview

Completing a full VPAT in a previous role changed how I think about accessibility. Not because the issues were hard to find, but because everything that came after was. Cross-referencing findings across multiple tools. Translating technical violations into language that meant something to stakeholders. And then the part that was the most frustrating: watching developers deprioritize issues that felt urgent.

"That's an edge case, we'll fix it later." "That's not a real blocker for users." These weren't bad-faith responses. They were the predictable result of a broken handoff. When accessibility findings are abstract, scattered, and hard to verify in context, they stay on the backlog.

The tool didn't exist that could surface issues clearly, in context, in a format anyone on the team could act on. So we built it.

Za11y (pronounced 'Zall-eye') is a fast, lightweight Chrome extension that helps teams find and understand accessibility issues directly in the browser, without the complexity of traditional accessibility tools. It works on any website or app, stores no user data, and delivers clear, actionable results in seconds. View Chrome extension here.

Challenges

  • Translating complex WCAG criteria into insights that are immediately useful to non-experts
  • Designing for three distinct users, designers, developers, and QA, whose needs and expectations from the same tool differ meaningfully
  • Balancing on-page highlighting with visual noise, making issues visible without disrupting the page being tested
  • Bridging automated scanning with manual testing in a single coherent workflow
  • Designing within the strict UI constraints of a Chrome extension side panel

Who It's For

Za11y was designed for three people: the designer doing a pre-launch audit, the developer who needs to verify a specific element, and the QA engineer building a compliance report. The challenge was creating one tool that respected each of their contexts without compromising for any of them.


Design Thinking

I started by mapping the object matrix and user flows to define what each role needed from the tool and how they'd move through it. This grounded the five design decisions that follow in real workflow thinking rather than assumptions.

1

Translating accessibility complexity into usable insights

Accessibility violations are technical by nature. WCAG criteria, success levels, and failure techniques are precise language for auditors but noise for most designers and developers trying to move fast.

Decision

I paired plain language descriptions with contextual highlighting, so every issue is explained in terms of what it means and shown exactly where it lives on the page. Understanding the problem and locating it happen in the same moment.

Showing plain language and highlighting issues on the page
2

Designing for designers, developers, and QA

Each role approaches accessibility from a different angle. A designer wants to understand the visual and experiential impact. A developer wants to know what to fix and where in the code. A single undifferentiated results view serves neither well.

Decision

I introduced role-specific views and filters so each user can orient the results around what they actually need. The underlying data is the same, the lens changes based on who is looking.

Showing role specific views
3

Balancing visibility vs UI noise on-page highlighting

Highlighting every issue at once creates visual chaos on complex pages. But hiding highlighting entirely removes the contextual value that makes the tool useful in the first place.

Decision

I made highlighting per-issue and user-initiated rather than automatic. Selecting an issue activates its highlight, keeping the page readable while preserving the ability to locate any specific element on demand.

4

Bridging automated and manual testing

Automated tools catch a real but limited subset of accessibility issues. Presenting automated results without acknowledging that gap creates a false sense of completeness, which is a real problem for teams doing compliance work.

Decision

I separated automated results and manual checks into distinct tabs, made the UI explicit about what automation can and cannot catch, and designed the manual checklist to complement rather than duplicate the automated findings. The two work together as a complete picture, not as overlapping lists.

Automated reviews and manual checks are separated into distinct tabs
5

Designing within Chrome extension constraints

Za11y opens as a side drawer rather than a popup, which gives more flexibility than a traditional extension but still comes with real constraints. Width is bounded by a maximum and height is limited to the viewport. Users can scroll to see more, but the order and hierarchy of information matters. What appears before the scroll has to earn its place, and getting that priority right was the central layout challenge.

Decision

I used progressive disclosure for issue detail, expanding inline within the results list rather than navigating to a separate view. This keeps the most important information visible before the scroll while giving users access to full issue context without losing their place in the list.

Showing how Za11y opens next to your website, illustrating it's limited space

How I Used AI

AI wasn't a shortcut on this project. It was a collaborator we had to brief, direct, and sometimes override. Claude, Cursor, and the Figma MCP server were present at every phase, and each one played a distinct role.

Design to code

Figma MCP

Connected Figma directly to the build environment, translating design specs into component code without manual handoff.

Build and iteration

Cursor and Claude

Used for real-time iteration on the extension UI and for building the za11y.com website from design through to working code.

Strategy and thinking

Claude

A thinking partner throughout. Used for working through decisions, structuring flows, and prototyping ideas quickly enough to bring into developer conversations.

What Changed About How I Work

The most significant shift wasn't speed, though the speed was real. It was that I could show up to developer conversations with working ideas instead of static designs. Prototyping something in the browser before a review session meant decisions happened faster and with more shared context. We spent less time translating and more time building.

Building the za11y.com website was where this clicked most clearly. Using the Figma MCP and Claude together, I went from design to a working site faster than any traditional handoff process I'd been part of. The designer in me then spent time going through every detail to make sure it was pixel perfect, which is a very different problem to have than waiting on a build.

The bottleneck shifted from "can we build it" to "is this exactly right" — and that's a much better place to spend your time.

Where It Got Tricky

AI-generated code that looks right isn't always right. There were moments where Claude produced output that conflicted with our existing component structure, and others where the Figma MCP translation introduced spacing and layout errors that were subtle enough to miss if you weren't looking carefully. In both cases, catching the problem required designer judgment: something felt off visually before I could articulate why technically. The fix was usually a combination of describing the problem precisely back to Claude and correcting it visually in the output. That back-and-forth loop is real work, and it's where experience matters. AI moves fast, but you still have to know what good looks like.


Screenshots of the Extension

Initial state screen on open with URL selected
Initial state screen on open with URL selected
User has the option to scan for all or selected WCAG standards and levels
User has the option to scan for all or selected WCAG standards and levels
The results page opens to show automated issues
The results page opens to show automated issues
Users can filter results by WCAG compliance level
Users can filter results by WCAG compliance level
Selecting the target button in the top right provides additional details on hover
Selecting the target button in the top right provides additional details on hover
Selecting “Checklist” tab opens a list of manual checks
Selecting “Checklist” tab opens a list of manual checks
Manual checks can be labeled ‘Passed’, ‘Failed’ or ‘N/A’
Manual checks can be labeled ‘Passed’, ‘Failed’ or ‘N/A’
Each issue can be expanded for more information
Each issue can be expanded for more information
No results found suggests users apply manual checks or the option to “Go to Home”
No results found suggests users apply manual checks or the option to “Go to Home”

Download Your Results

Accessibility work doesn't end at identifying issues. Teams also need a clear way to document progress, share findings, and demonstrate compliance, and that part of the workflow is often where things fall apart. We designed the export feature to translate scan results and manual checks into structured, usable data that supports the full cycle: tracking remediation, collaborating across teams, and producing the documentation that compliance deliverables like VPAT reports actually require.

Za11y download file examples

Collaboration & Build

Bringing Za11y from design to a shipped Chrome extension required close partnership with a developer throughout, not just at handoff. We made decisions together: what made it into the MVP, how results should be structured, where to draw the line between clarity and feature complexity. Those conversations shaped the product as much as the design work did.

Working with an engineer also pushed me to think differently about my own role. I came to reviews with working prototypes instead of static designs, which changed the quality of the decisions we made together. When something needed to change, we could see it and test it rather than debate it in the abstract.

Exploring Future Iterations

Shipping an MVP meant making deliberate calls about what to leave out. Two features we designed but held back:

Dark mode We built a full dark mode design but cut it before launch to keep the initial release focused. It's the most requested addition and the most ready to ship.

Notes on individual issues Adding notes per issue would meaningfully improve collaboration and reporting workflows, particularly for teams producing VPAT documentation. We scoped it out to avoid overcomplicating the first version of the results view.

Za11y Branding

Chrome extension submissions require a live website and privacy policy, which gave me the push to build something I'd been wanting anyway. I developed the full Za11y brand from scratch, including the logo, typography, color system, and the Za11y cat mascot, all visible in the UI kit below. Using the Figma MCP server and Claude, I went from design to a working marketing site faster than any traditional handoff process I'd been part of before. It also pushed me past a real barrier: I'm now comfortable in the terminal in a way I wasn't before this project. The designer in me then spent a good amount of time making sure every detail was pixel perfect.

Explore the Za11y website and Chrome extension.

Final Thoughts

Za11y started as a solution to a problem I'd lived through. It became something bigger: proof that a designer can own the full arc of a product, from identifying the problem through shipping the thing that solves it. That's the kind of work I want to keep doing.