Loading...
Loading...
Drive an engine app headlessly in a pty, record a video of the whole verification, and open a summary page (video + timeline + checks) with pixel open.
npx skill4agent add zenbu-labs/terminal-browser verifytools/verify-recorder/import sys
sys.path.insert(0, "<repo>/tools/verify-recorder")
from driver import Driver
from recorder import Recorder
rec = Recorder("wheel-pan", title="Wheel pan keeps cursor anchored")
d = Driver(["<repo>/engine/target/debug/typing"], rec,
cols=120, rows=32, xpixel=1200, ypixel=800)
d.pump(3.0) # pump between actions so frames arrive
rec.check("app painted", d.frame_size is not None, f"{d.frame_size}")
w, h = d.frame_size # REAL framebuffer size — always use this
d.text("hello", "type into editor") # every input takes a description
d.click(w // 2, h // 3, "select the note") # mouse coords are pixels (1016 mode)
d.wheel(w // 2, h // 2, down=True, n=3, description="scroll content")
d.pump(1.0)
rec.check("scroll redrew", len(rec.frames) > 40, f"{len(rec.frames)} frames")
rec.still("after-scroll") # named snapshot for the summary page
d.stop("ctrl+c") # or "ctrl+q" depending on the app
rec.finish() # composites markers, encodes mp4, writes summaryDriver\x1b[?1016$pa=T,f=32,o=z["npx", "tsx", "src/main.tsx", ...]cwd=key("enter"/"esc"/"ctrl+q"/"super+shift+z")textclickpressdragreleaseclickmovewheelrec.check(name, ok, detail)rec.still(name)recorder.png_read(rec.frames[-1]["path"])rec.finish()pixel open file:///tmp/verify-runs/<name>-<stamp>/summary.htmld.frame_sized.stopd.key("esc")\x1bmove/tmp/verify-runs/<name>-<stamp>/frames/events.jsonlrun.jsonverification.mp4summary.html