Head to head4 min read

Playwright vs Percy for visual testing

Playwright's screenshot assertions are free and unlimited; Percy adds a hosted review workflow you cannot build cheaply. What you actually trade, and the point where self-hosting stops paying.

VisualMax EngineeringProduct team

This is not really a like-for-like comparison, and framing it as one is how teams end up disappointed. Playwright is a test runner with built-in image comparison. Percy is a hosted review platform that you point a test runner at — including Playwright. The honest question is not which, but whether you need the hosted half at all.

  • Engineers are the only people who review visual changes
  • Your covered surface is small and stable — tens of routes, not hundreds
  • You want no per-screenshot bill at any volume
  • Nothing may leave your CI environment
  • Designers or PMs need to review changes without cloning the repo
  • You want baselines out of your repository
  • Responsive coverage matters — DOM re-rendering gives several widths per capture
  • You are already a BrowserStack customer

At a glance

PlaywrightPercy
What it isTest runner with built-in comparisonHosted review platform
CostFree, unlimitedFree to 5,000/mo, then not published
Comparisonpixelmatch with thresholds you tunePixel plus a Visual AI engine
Where it capturesYour own browser, in your CIDOM uploaded and re-rendered in Percy's cloud
BaselinesPNGs committed to your repositoryStored by Percy
Platform namingname-chromium-linux.png — per browser and OSHandled server-side
ReviewHTML report, localHosted UI with approvals
Approval trailGit history of image commitsIn-app, auditable
ResponsiveRe-run per viewportSeveral widths from one capture
Percy's dedicated pricing page returned HTTP 404 when checked on 13 September 2026.

What Playwright gives you for free

More than people expect. toHaveScreenshot() retries until the rendered image is stable before comparing, which eliminates a whole class of timing flake that naive screenshot-then-diff implementations suffer from. It uses pixelmatch underneath, handles animation suppression, masking and per-pixel tolerance, and ships an HTML reporter showing expected, actual and diff side by side.

ts
await expect(page).toHaveScreenshot("pricing.png", {
  threshold: 0.2,
  maxDiffPixelRatio: 0.01,
  animations: "disabled",
  mask: [page.getByTestId("last-updated")],
});

For a team of engineers covering thirty stable routes, that is genuinely sufficient, and paying for a platform would be waste. Setup detail in Playwright visual regression testing.

What you are actually buying with Percy

Three things, and only the first is hard to replicate.

1. A review workflow for non-engineers

This is the real product. When a designer needs to confirm that a spacing change is intended, "pull the branch, run the suite, open the HTML report" is not a workflow they will use. A hosted UI with approvals, comments and an audit trail is genuinely difficult to build and the main reason to pay.

2. Baselines outside your repository

Playwright commits PNGs. A hundred routes across two viewports and two platforms is four hundred binaries, re-committed on every redesign, permanently in your history. Git LFS mitigates it if you adopt it before the first baseline lands; afterwards the blobs stay in every clone forever.

3. Cheap responsive coverage

Percy's DOM upload means one capture can be re-rendered at several widths server-side. With Playwright, each viewport is a separate test execution. If you cover three viewports, that is three times the CI minutes — a real cost that does not appear on Playwright's $0 price tag.

The honest cost comparison

Playwright is free of licence cost, not free.

CostPlaywrightPercy
Licence$0Free to 5,000, then unpublished
CI minutesYours — multiplied per viewportYours, but one capture covers several widths
Baseline storageRepository weight, permanentlyIncluded
Determinism workEntirely yoursPartly absorbed
Review workflowBuild it, or do withoutIncluded
Per-route maintenanceA spec you write and maintainA snapshot call you write and maintain

Note the last row. Percy does not reduce the authoring burden at all — you still write the test, you just add percySnapshot() to it. If your problem is that nobody has time to maintain the suite, Percy does not solve it and neither does Playwright.

You can also use both

Worth stating because the versus framing obscures it: Percy has an official Playwright integration. Teams commonly run Playwright's built-in assertions for fast engineer-facing checks in CI, and Percy for the routes where design review matters. The two are not mutually exclusive, and the decision is per-route rather than global.

When self-hosting stops paying

  1. A second person needs to approve a change. Writing files to a directory stops being a workflow. This is the clearest threshold.
  2. Baselines exceed a few hundred images. Repository weight becomes everyone's problem, including CI clone times.
  3. You are comparing branches, not just commits. Branch-aware baseline selection is a real engineering problem — see screenshot comparison tools.
  4. Your `ROUTES` list is out of date. That is a coverage problem no platform on this page solves, though a whole category of tools now generates its own coverage.

If it is the first three, a hosted platform is worth it — though Percy is not the cheapest one with published pricing; see Percy alternatives. If it is the fourth, neither tool helps.

Frequently asked questions

Do I need Percy if I use Playwright?

Not for comparison — Playwright's toHaveScreenshot() already captures, diffs, and retries until the image is stable, for free. You need Percy when non-engineers must review visual changes, when committed baseline images are bloating your repository, or when you want several viewport widths from a single capture.

Is Playwright visual testing good enough to replace Percy?

For an engineering team covering a modest, stable set of routes, yes. What you give up is the hosted review and approval workflow, baselines stored outside your repository, and server-side responsive re-rendering. What you keep is zero licence cost at any volume.

Can you use Percy and Playwright together?

Yes — Percy provides an official Playwright integration. A common pattern is running Playwright's built-in assertions for fast engineer-facing checks in CI and Percy for the routes where designers or product managers need to review changes.

Sources

  1. Playwright visual comparisons documentationchecked 2026-09-13
  2. Percy by BrowserStack product pagechecked 2026-09-13
  3. Percy parallel test suites documentationchecked 2026-09-13