Test sessions
web
A session records everything a tester sees and does — DOM changes, scrolling, the mouse trail, clicks — and attaches the replay to the report that concludes it.
Starting and ending
- In the widget panel: Start test session. A pulsing REC badge with a live timer sits next to the button for the whole session — testers always know they're recorded.
- Sending a report ends the session and ships the recording with it. A failed send keeps the session running so nothing is lost.
- End test session in the panel discards without sending.
Or drive it programmatically, e.g. when a QA scenario starts:
qa-harness.ts
import { startSession, endSession } from "@tracebird/web";
await startSession(); // recorder chunk loads on demand
// … tester walks the scenario, sends a report from the widget …
endSession(); // only needed if no report was sentWhat gets recorded
- rrweb event stream — DOM mutations, scroll, viewport, mouse movement (sampled at 40 ms). Inputs are masked at the source; the widget itself is excluded.
- Click journey — a timestamped list of what was clicked (
button “Pay”), readable at a glance without playing the video.
In the dashboard, the report's Replay tab plays the stream in a frame locked to the tester's viewport — scroll is replayed, the viewer can't interact — with play/pause, 1–8× speed, skip-inactive and a timeline.
Sessions survive navigation
Full page loads don't interrupt a session. State persists in sessionStorage: on every load the SDK resumes the session (same id, running timer), archives the previous page's events as a compressed segment, and merges everything into one continuous recording at send time.
Limits
- 20 000 events per page — long sessions stop growing, not crash.
- 3 MB gzipped recording cap per report.
- 200 click breadcrumbs; under storage pressure the oldest video segment is dropped before the session is ever killed.
noteA minute of ordinary browsing compresses to roughly 50–100 KB — the recording is DOM events, not video pixels.