---
name: capture-playback-testing
description: Use when asked about record-and-replay test tooling — recording user interactions to generate automated regression tests — as distinct from writing BDD scenarios by hand (see behavior-driven-development), which capture/playback tools can also help automate.
---

# Capture/Playback Testing

Capture/playback testing records user interactions with an application
during a capture phase, then replays them automatically during a
playback phase — letting testers generate automated test scripts by
performing actions on the interface, without writing test code by hand.

## How it works

During capture, a tool records mouse clicks, keyboard input, and the
application's responses. During playback, those recorded actions execute
automatically and the results are checked against what was recorded (or
against updated expected values) — well suited to regression testing and
repetitive scenarios that would be tedious to script manually.

## Combining with BDD

Capture/playback pairs naturally with [[behavior-driven-development]]:
a recorded interaction sequence often maps directly onto a Given/When/
Then scenario's steps, so a scenario written collaboratively with
business stakeholders can be automated by recording the corresponding
actions rather than hand-coding every step definition — keeping the
living-documentation benefit of BDD while lowering the technical bar for
who can contribute automated coverage.

## Strengths and limits

Makes automated testing accessible to non-programmers, since a script is
generated by demonstration rather than written in code. The real
weakness: a recorded script is tightly coupled to the exact interface it
was recorded against, so any UI change (a moved button, a renamed field)
breaks it, requiring re-recording or manual patching.

## Common pitfalls

- **Treating a recorded script as a permanent asset with no maintenance
  plan** — capture/playback scripts are unusually fragile to UI change
  compared to hand-written, locator-based automation; budget for regular
  re-recording.
- **Recording brittle, absolute selectors** — some tools record
  coordinate- or index-based interactions rather than semantic selectors,
  making scripts fail on minor, cosmetically-irrelevant layout shifts.
- **Using capture/playback for anything beyond regression of stable
  flows** — it's a poor fit for a UI still under active design churn,
  where scripts would need constant re-recording.

## Learn more

- [[behavior-driven-development]] for the Given/When/Then framing capture/playback scripts often implement.
- [[regression-testing]] for the broader discipline capture/playback most commonly serves.
