The platform
One commit. One review. Four kinds of evidence.
Coverli is not two products stapled together. It is one engine that drives your components the way your users do — and everything we ship is captured off that single walk.
- Spoken output
- What real screen readers announce, captured at the synthesizer layer.
- Visual states
- Resting, focused and interaction frames, captured deterministically.
- Markup
- The offending code, quoted verbatim at file-and-line.
- Accessibility tree
- The structure assistive technology actually navigates.
The shared walk
Interacting with your components is what we do for a living.
- 01
Commit
A GitHub App builds your Storybook. Change detection fingerprints every component — unchanged stories are skipped and free.
- 02
One walk
The engine focuses, activates, toggles and arrows through every component, exactly as an assistive-technology user would.
- 03
Four captures
Announcements, state screenshots, markup and the accessibility tree all come off that single walk — no second run, no second bill.
- 04
Diff against baseline
Each stream diffs against its own approved baseline. Identical bytes short-circuit; only genuine differences reach analysis.
- 05
One decision per story
Transcript, screenshot and every state frame are one commit's truth. They are approved or rejected together, in one click.
transcript diff · Select.stories.jsx
NVDA 2025.1 · Windows 11approved baseline
- button, "Filter results", collapsed
- listbox, "Filter results", 6 items
- option, "Newest first", 1 of 6, selected
this commit
- button, collapsed
- listbox, 6 items
- option, "Newest first", 1 of 6, selected
the cause
- <button aria-expanded="false" aria-label="Filter results">+ <button aria-expanded="false">
The spoken experience changed: the trigger no longer announces what it filters. Blocked in review until a human approves the new baseline.
state filmstrip · Select.stories.jsx
4 frames capturedSelect, closed
Trigger holds keyboard focus
- Newest first
- Oldest first
Listbox open, option 1 active
- Newest first
- Oldest first
Option committed
No interaction test code. The engine already opens, focuses and toggles every component to test what it announces — the shutter simply opens at the peak of each state.
The review
Comment on the pixels themselves.
Three ways to see every change, all at 100% resolution — judging a one-pixel shift through a scaled-down thumbnail is guesswork.
- Side by side
- Baseline and new capture together, at true pixel size whenever they fit.
- Instant toggle
- Flip between baseline and new in place — the mode reviewers actually spot pixel shifts with.
- Difference overlay
- Switch the diff on and off over the capture.
A note can ride the rejection — it blocks, and it ships to the pull request — or stand alone as guidance. Comments anchor to the specific state frame, and every decision lands in the same immutable approval trail as the rest of the platform.
pull request comment · coverli
rejected · 2 storiesConfirm deletion
This removes the component and its baselines.
- 1
Focus ring missing on the primary action.
- 2
Dialog header shifted 2px — heading no longer aligns to the grid.
The engineer who broke it sees exactly what the reviewer saw — in the pull request, with no login and no tab-switch.
Configuration
Escape hatches without config sprawl.
Mark an element to be ignored — live data, embeds — with one attribute in your markup, so it versions with your code rather than with a dashboard setting. Opt a story out of visual comparison with one tag. That is the whole configuration surface, by design.