For the developer opening the pull request
Proof that a human ran your change, on the pull request.
You already test a change by hand before you merge it. qa-capture watches that session from outside the app and turns it into evidence a reviewer can trust: every screen, every tap, and every control that did nothing, attached to the pull request. Nothing goes into your app.
npm install -g qa-capture
where the finger landed · an element the diff touched · the whole screen, as recorded; click one for a bigger view
How it works
The person drives. The tool records, from outside the app.
Three mechanisms carry the whole thing: what the tool reads from the device while you drive, how the pull request's diff tells it which screens matter, and how it decides what a tap did. No model is involved in any of them.
adb shell input bypasses: a session whose screen changed with no touches recorded is marked partial, not presented as a person's work. On a real phone the clocks disagree by however long the phone has slept; the tool measures the gap at the start of each session and then checks the video timing against the taps themselves (verified on a Galaxy A25).What it is not
Four things it deliberately does not do.
Not an agent that tests for you.
That space is crowded and mostly free. The person drives; the tool records.
Not an AI that decides whether the app works.
It reports which checklist items a session reached. Whether they passed is a human verdict, and nothing in the codebase can write one.
Not snapshot testing.
Previews show components in isolation. This shows the flow after three taps, with whatever was really on screen.
Not a QA-team tool yet.
Android, tethered to an emulator or a phone over USB, for the developer opening the pull request. An iOS Simulator producer exists and is early.
Get started
Five commands, from your app's repo.
Anything that sends data somewhere prints what it would send and does nothing until you add --send or --post.
qa-capture doctorCheck adb, ffmpeg, gh and the device before you need them.adb ok · ffmpeg 7.1 ok · gh 2.100 ok · device emulator-5554qa-capture start --highlight --notifyRecord until Ctrl-C while you drive the app. Changed screens are shot the moment you reach them.capture “Add a tip” - a screen this change touchedqa-capture viewBuild the session page and ask one question: do these steps describe what you did?gestures 4 · steps 6 · no-op taps 1 · live shots 1qa-capture checklist add "Pay with a tip" --pr 42Items are tied to the screens the diff names, and marked reached when the session was there.chk_01 “Pay with tip”qa-capture comment --postPut it on the pull request through your own gh login, screenshots attached.Screens this change touched · 5 of 5 reached
Tested by hand
Brew 1.0.0 · emulator · Android 14 · commit f6db20b
Screens this change touched · 5 of 5 reached
6 steps recorded · 1 tap produced no visible change