Skip to content

Replays

Use a replay to see why a finished run failed, without running it again.

Open Replay on a finished run. Jump to Failure or play through the calls. A suite has one replay per script.

Replay of a failed checkout-monitor run: the saved checkout page, the timeline with the failed click, the source line and the error.
KeyAction
Left / RightPrevious or next call
SpacePlay or pause
Home / EndFirst or last call
FJump to the failure
/Search

DOM shows the saved page. In Lab, test a replacement selector on it without rerunning. Without an online project agent, CSS and XPath results are marked Approximate and visibility is unknown. A replay cannot evaluate variables or retry a call.

Set replay in reflex.yaml, as a default or per job or suite. UI forms offer the same choices; they inherit the project default from Project Settings.

version: 1
defaults:
replay: on-failure
jobs:
nightly-orders:
script: flows/orders.lua
replay: always
ModeWhat is kept
offNo replay.
on-failure (default)The last 5 minutes of screenshots and DOM snapshots, plus the full call timeline. Kept only if the run fails, is lost, or passes with healing.
alwaysRecordings for every run. A crashed agent leaves a partial replay.
  • Runs with a debugger attached record as always.
  • Older page evidence rolls out after 300 seconds (agent.replay.bufferSeconds on the agent). Earlier calls stay in the timeline, but their page may be gone.
  • Recordings hold screenshots and DOM snapshots after browser calls, plus console and network events. The call timeline covers all libraries. It is not a video.
RunKept for
Failed, cancelled or lost30 days
Successful3 days
Dev and working-copy runs3 days

Administrators can change replay.retention.failedDays, replay.retention.succeededDays and replay.retention.devDays. Deleting a run deletes its replay. Each owner has a storage quota (replay.quota.bytesPerOwner, 10 GiB by default).

If a replay is missing, the viewer says why. You cannot record it afterwards.

  • Password inputs and fields filled with secret() are masked in DOM snapshots and blurred in screenshots.
  • Known secret values (including base64 and URL-encoded forms) become *** in text and DOM.
  • Credential headers and sensitive query parameters are masked. The network track has no bodies.

Other application data can still appear in a replay. Treat replays as project data.