Concepts

Deterministic replay

Why replays are fast, model-free and resistant to the usual sources of flakiness.

Recorded tests replay with no model in the loop. The rules:

  • Cached locators, web-first assertions, auto-wait only.
  • No fixed sleeps and no idle-network waits. Readiness is your app's own signal.
  • Sessions are created deterministic: animations and transitions off, the clock pinned, random seeded, reduced motion emulated. Each test gets a fresh browser context.
  • Free riders on every step: console errors, uncaught exceptions and unexpected 4xx/5xx responses are collected; a page error or a 5xx fails the step.

The readiness signal

The broker arms the check when the browser announces a navigation request, before any request is in flight, so a form submit is verified against the next document rather than the one being left. Two consecutive good polls confirm readiness. Typical cost is 30 to 60 milliseconds after a navigating action and nothing otherwise.

Typing

Replay types with a single insert-text command followed by a real Enter when the step submits. Per-character key events remain reserved for a human's own keystrokes during a takeover, where they are what the page expects.

Actionability

A step waits up to 1.5 seconds for its element to have a layout box, scrolling it into view and retrying, and then fails with a typed message. A rejected act is a failed step, not an infrastructure retry, so a broken locator is reported as such and can be healed.

The benchmark

A test in the suite replays a recorded case and fails if the median non-navigating step exceeds 150 milliseconds. It runs on every change to the replay path.

Deterministic replay · Handoff