Skip to content

How facetshot compares

facetshot is built on Playwright, which does all of its browser work: pages, device emulation, Electron, and the accessibility snapshots that list what can be clicked. facetshot adds the project around it (builds, servers, sign-in, test data, devices and display settings) and puts the results side by side. The tools below do jobs of their own, and many projects use one of them alongside facetshot.

Tool What it does well What facetshot adds When to use the other
Playwright’s toHaveScreenshot Visual assertions inside a test suite: compares each screenshot with an approved one in the repository and fails the test when it differs beyond a threshold. Looking while you work: many devices and display settings on one contact sheet, checks for common layout problems, the app’s logs, and no test code to write. You want a build to fail when a screen changes.
A one-off Playwright script Full control over any page in a few lines, with nothing else to install. The preparation a script repeats every time: building and serving the app, signing in, test data, waiting until the page is ready, and keeping all of it running. You need one screenshot once, or something facetshot’s steps can’t express.
Hosted visual regression (Chromatic, Percy, Argos, …) A review and approval workflow for visual changes, baselines kept per branch, consistent rendering in their cloud, and history across a team. Runs on your own machine against your own servers and data, keeps the logs with each screenshot, and lets an agent look and act on a screen. A team reviews and approves visual changes on every pull request.
Playwright MCP A general-purpose browser for an agent: any site, any task, step by step. Sessions open your own app already built, served and signed in, on a device and setting from your config, and can be saved as a flow to replay. An agent needs to browse the web or automate a site that isn’t your app.
Storybook’s test runner and visual tests Runs every story as a test, with interaction tests in play functions; its visual tests add snapshots on top. Storybook stories next to your app’s pages, on the same devices and variants, in the same contact sheets. You test components in Storybook and want those tests in CI.
swift-snapshot-testing Reference images inside Swift tests, failing the test when a view changes. SwiftUI scenes on several devices and settings in one sheet; FacetshotKit only draws the views so facetshot can take screenshots. You want snapshot assertions in your Swift test suite.

facetshot’s own comparisons are for checking your work and never fail a run (Comparing). You can still fail a CI job from the manifest (Continuous integration).