Loading...
Loading...
Records visual proof while testing UI behavior — the agent tests the app hands-on via computer use while a screen recording with structured test/assertion annotations captures the session — then posts the video and a results summary to the PR and tracker issue. Use whenever a change needs verifiable evidence that it works, instead of prose claims — including headless environments (scripted screenshots and probes) and non-UI changes (measured numbers, output pairs).
npx skill4agent add michaelshimeles/skills evidence-driven-testingcua-driverscripts/evidence.pyevidence.mp4report.mdmanifest.jsonEVIDENCEscripts/evidence.py~/.claude/skills/evidence-driven-testing/scripts/evidence.pypython3 $EVIDENCE doctorffmpegffprobelibx264assreadycapture_readyautocapture_ready--source auto| OS | Source | Needs |
|---|---|---|
| Linux X11 / XWayland | | |
| Linux Wayland | | |
| macOS | | Screen Recording permission granted to the terminal / agent host app; |
| Windows | | any standard ffmpeg build; |
--geometry WxH--offset X,Ywaylandraw.tsstopevidence.mp4startstopstop.requestrecorder-exit.jsonstopstop--accept-untracked-recorderdoctorcua-driver recording start <dir>stopscreencapture -v out.movassertions.mdsetuptest_startassertion--source testtests/test_evidence.pygit rev-parse HEADgit branch --show-currentpython3 $EVIDENCE start \
--output .artifacts/<task-name> \
--title "<what is being verified>" \
--commit "$(git rev-parse HEAD)" --branch "$(git branch --show-current)" \
--environment "<OS / browser / display / deployment>"sessionsourceSESSION=...--source--geometry--offset--display--xauthority--screen-index--output-namedoctorsetuppython3 $EVIDENCE annotate "$SESSION" --type setup \
--message "Logged in, navigating to connectors page"test_startpython3 $EVIDENCE annotate "$SESSION" --type test_start \
--message "It should execute the tool directly when permission is 'always'"assertion--result passedfaileduntestedpython3 $EVIDENCE annotate "$SESSION" --type assertion --result passed \
--message "Tool ran without a permission prompt"untestedpassedpython3 $EVIDENCE stop "$SESSION"evidence.mp4report.mdmanifest.json"verified": truefinalization_failedstoprecorder_loststopffmpeg -ss <t> -i evidence.mp4 -frames:v 1 frame.pngreport.mdreport.mdgh pr commentevidence.mp4before-and-aftercua-driveruntestedcua-driver doctorcua-driverlaunch_appget_window_stateelement_tokenclicktype_textpress_keyverify_stateverify_stateassertiondoctorcapture_ready: yescua-driver recording start <output-dir>cua-driver recording stopcua-driver serve<output-dir>/recording.mp4action.jsonclick.pngrecording.mp4assertions.mdtest_startassertion.artifacts/<task-name>/before-and-after@vercel/before-and-afterAGENT_BROWSER_ARGS="--no-sandbox"npx --yes --package=playwright node record.mjsnpx playwright node record.mjsnode--package=playwrightrecord.mjsimport { chromium } from "playwright";
const browser = await chromium.launch();
const context = await browser.newContext({
recordVideo: { dir: ".artifacts/<task-name>/" },
});
const page = await context.newPage();
await page.goto("http://localhost:3000/path-under-test");
// ...drive the flow, one meaningful state change per step...
await context.close(); // finalizes the .webm
await browser.close();01-precondition-signed-in.png02-it-saves-on-blur-passed.pngassertions.mdtest_startassertionpassedfaileduntestedprobe-output.txtlsof -i :<port>lsofss -ltnp "sport = :<port>"ps -p <pid> -o args=before-and-after before.png after.png --markdown