Skip to content
testcritic

Visual Regression Testing

Catch the CSS change that broke a page no test asserted on.

6 specialist tools1 free or open source3 self-hostable

What this category is really about

Functional tests assert on what you thought to check. Visual tests screenshot the page and compare it to a known-good baseline, which catches the entire class of bugs nobody wrote an assertion for — a collapsed layout, an overlapping modal, a font that failed to load.

The whole category lives or dies on false positives. Anti-aliasing, animation, dynamic content and date strings all produce diffs that mean nothing, and a tool that surfaces forty meaningless diffs per PR gets muted. Judge candidates on how well they suppress noise, not on how many pixels they can compare.

What to evaluate

01

Noise suppression

Ignore regions, dynamic-content masking, animation freezing and perceptual (not per-pixel) diffing.

02

Baseline management

Branch-aware baselines matter. Approving on a feature branch must not corrupt main's baseline.

03

Review workflow

Approve/reject in a PR check, by the person who made the change, in seconds.

04

Screenshot cost

Nearly all vendors bill per screenshot. Viewports x browsers x stories multiplies fast — model your real number before signing.

Common mistakes

  • Snapshotting every page at five viewports on every commit and blowing the quota in week two.
  • Letting baselines rot until 'approve all' becomes routine, at which point the suite tests nothing.
  • Running visual tests against a live backend, so unrelated data changes register as visual regressions.

6 tools built for this

Sorted by how widely adopted they are, not by preference. Tick the compare boxes to put two or more side by side.

Filter these

Tools that also cover this

These are built primarily for something else but handle this category as part of a broader platform — often a way to consolidate two subscriptions into one.