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).