Capture browser tests as MP4 video with live panel overlays. Minimal dependencies, easy install. SDKs for Python, Ruby, Go, TypeScript, Node, and Java. Generate interactive HTML reports where clicking a step seeks the video to that exact moment.
Your browser was right there doing the thing. You just weren't watching.
A test fails in CI. You read the stack trace. You try to reproduce locally. You can't. You add more logging, push, wait 20 minutes for CI, read logs again. You do this three more times before you find the actual problem: a modal was covering the button.
Every scenario is recorded as MP4 video with a live panel overlay showing test status, current step, and any context you want. The HTML report lets you click a step and the video seeks to that exact moment. You see the modal covering the button in five seconds.
Minimal dependencies, easy install.
Records the Xvfb virtual display via ffmpeg with H.264 encoding. One video per scenario. Mobile-compatible MP4 output.
Named columns below the browser viewport with live-updating text. Fixed or auto-width layout. Smart scrolling keeps the active line visible.
Single-page HTML with embedded video players. Click any step to seek the video. Playback highlights the current step automatically.
Works with Behave, pytest-bdd, Cucumber, or any runner. The report takes a simple list of dicts — no framework coupling.
Pure Python stdlib. No pip install chain. No version conflicts. Just add it to your Docker image and go.
Example Dockerfile included. Works with any CI system that supports Docker. Just mount a volume for the recordings.
One server process. Any language. The recorder runs as a service that your test suite talks to via HTTP.
SDKs for Python, Ruby, Go, TypeScript, Node, and Java. Minimal dependencies, easy install. Same API everywhere.
Start the server, connect from any language, or use the CLI directly from bash.
Click a step. Watch what happened. Dark-themed, responsive, single-file HTML.
Recordings of green tests are living proof that your features actually work, updated every time your suite runs.
QA can communicate issues effectively by sharing documented video evidence of both successes and failures. No need to reproduce bugs or explain what happened — the recording shows exactly what the browser did.
New team members can watch the test suite to understand what the app does. It's a demo reel that's always current, generated automatically from the test run.
Product managers want to see features working, not test output. Recordings are proof that the sprint deliverables actually function in a real browser.
Some industries require evidence that testing was performed. Video recordings with timestamped steps are a far stronger artefact than a JUnit XML report.
You don't need a test framework. Write a Python script that drives a browser, narrates each scene in the overlay panel, and produces a polished MP4. Ship a fresh demo video with every release — no presenter required.
One server manages multiple independent sessions. Pretend to be Alice, Bob, and Carol at the same time: each gets their own virtual display, their own recording, and their own panel overlay — driven by threads or separate processes from a single script.
A single thea serve process manages any number of concurrent recording
sessions. Each session gets its own Xvfb display, its own ffmpeg process, and its own
panel overlay — completely isolated from every other session.