litmusly
SAMPLE PR#247REAGENTS 3 WALKEDRESULT 1 · 2 · 1

Watch a pull request
get a litmus test.

This is a sample run, start to finish. Open a PR and Litmusly finds its preview deploy, sends a swarm of grounded reagents to walk it, and posts what they find in one comment. The content below is illustrative, not a real project.

SPECIMEN · LIVE WALKRUN_a8f3
0:00reagent sam initialized · 1440×900
0:03GET / → 200 · 1.1s
0:11"Okay, so what does this actually do?"
0:19"Lots of charts. Where do I click first?"
0:34tab ×6 → focus never reaches CTA
0:35"The button won't take my keyboard."
1:02nav → /pricing · 240ms
2:51walk complete · comment → PR#247 · $0.24
REACTION
strongly acidic
THE LOOPOPEN PRDISCOVER PREVIEWWALKONE COMMENT · EDITS ITSELF
HOW A REVIEW HAPPENS

From the commit you push to the comment on your pull request.

01 · OPEN

You open or update a PR.

Install the GitHub App once. After that, every pull request you open and every commit you push starts a review. Nothing else to wire up.

02 · DISCOVER

Litmusly finds the preview.

Using the GitHub Deployments API, it locates the preview build for the pull request. This works with Vercel and any host that publishes deployment statuses.

03 · WALK

A swarm of reagents walks it.

Each reagent is grounded and opinionated. Every one walks the homepage and the primary call to action, then reports what helped and what got in the way.

04 · READ

One comment, edited in place.

Findings tagged blocker, friction, or nit land in a single comment. On each new commit the comment is edited in place, so the PR never fills with review spam.

WHAT A REVIEW LOOKS LIKE

One comment. Edited in place.

Below is a generic example of a single review comment, not a real project. Three reagents walked the homepage and the primary call to action. Here is what the PR ended up with.

REACTION SCALE · THIS RUN
0 · BLOCKERNIT14 · FRICTION
1
1
2
LlitmuslyBOTREVIEWED THE PREVIEW DEPLOYMENT
BLOCKER
The button won't take my keyboard. I tab and tab and focus never lands on it.
SAM · FIRST-TIMER · HOMEPAGE

The primary call to action is not keyboard reachable, so some visitors cannot reach the sign up flow.

FRICTION
The heading is sitting on top of the nav. I can't read the first line on my phone.
MARCUS · MOBILE · 390PX

On a narrow viewport the hero heading overlaps the navigation, which makes the main message hard to read.

FRICTION
I read the whole first screen and still don't know what this does.
DANA · BUYER · HOMEPAGE

The value proposition leans on internal terminology. It is not obvious what the product does within the first screen.

NIT
The button and the page title name the same action two different ways.
PRIYA · A11Y · KEYBOARD

The call to action label and the page title describe the same action with different wording.

SYNTHESIZED VERDICT · TEAM AND BUSINESS

Across reagents, the highest impact issue is the keyboard trap on the primary call to action. Fixing it unblocks sign up for the widest group of visitors and should come before the smaller copy and layout notes.

EDITED IN PLACE ON THE LATEST COMMIT · NO NEW COMMENT WAS CREATED
BLOCKER

Stops a visitor from completing the primary action.

FRICTION

Slows a visitor down or creates doubt, without fully blocking them.

NIT

A small, low risk polish item.

YOUR TURN

Put Litmusly on your
next pull request.

Add the GitHub App and your next preview deployment gets reviewed automatically. Read your first reaction in under five minutes.

Get startedCompare tiers ↗