Compare / Percy
Screenery vs Percy
Percy, from BrowserStack, re-renders your pages in several browsers and gives your team a review screen. Screenery publishes the screenshots your own tests took, at URLs that follow your default branch.
What Percy does well
- Cross-browser rendering. Percy's SDK sends a DOM snapshot, and Percy renders it in Chrome, Firefox, Safari and Edge at several widths. You write one test and get four browsers.
- A generous free tier. 5,000 screenshots a month with unlimited users.
- A review screen people know. Approve or reject a build in the browser. Approving sets the new baseline, and a status check reports on the pull request.
- Wide SDK coverage. Playwright, Cypress, Selenium, Storybook, WebdriverIO, Appium and more.
- Real devices. The Desktop & Mobile plan adds real mobile devices and browsers.
- AI review help. Percy's Visual Review Agent writes plain-language summaries of each change, and BrowserStack's MCP server lets an agent fetch Percy changes and approve builds.
Side by side
| Percy | Screenery | |
|---|---|---|
| Capture | DOM snapshot, rendered in Percy's cloud | Your test writes the image. Screenery stores it as pushed |
| Browsers | Chrome, Firefox, Safari, Edge | Whatever your tests run |
| Review | Approve or reject in Percy. Approval sets the baseline | Pull-request comment against @latest. Baseline is a committed folder or the previous version |
| Agents | BrowserStack MCP server, with Percy tools | Screenery MCP server: diff @pr-N against @latest |
| CI auth | PERCY_TOKEN secret | GitHub OIDC, no stored secret. Other CI: SCREENERY_TOKEN |
| Public, stable image URL | No. Public projects share build pages by link, not embeddable images | Yes. @latest, @pr-N, and versions that never change |
| History | 1 month on Free, 1 year on Desktop | Every push is kept as a version |
| Free tier | 5,000 screenshots a month | A Free plan. Limits not published yet |
| Entry price | $199 a month, billed annually, checked October 2026 | Not published yet |
Percy pricing, checked October 2026
From BrowserStack's Percy pricing page. Percy counts screenshots: one snapshot in one browser at one width is one screenshot.
| Plan | Price | Screenshots a month | Extra screenshot |
|---|---|---|---|
| Free | $0 | 5,000 | n/a |
| Desktop | $199 a month, billed annually | 10,000, 25,000 or custom | $0.036 |
| Desktop & Mobile | $599 a month, billed annually | 25,000 or custom | $0.048 |
| Enterprise add-on | On request | n/a | n/a |
Four browsers at two widths turn one snapshot into eight screenshots, so check the multiplier before you compare plans.
Where Screenery differs
The screenshots leave the review screen. A Percy build lives inside Percy. A public Percy project lets anyone with the link see its builds, but a build page is not an image you can embed, and it does not follow your default branch. Screenery gives each accepted screenshot a plain image URL, so the README and the help centre show the same pixels your tests approved:

A push on the default branch moves @latest. A pull request gets @pr-N and never moves @latest. Each push is also a version such as @v_a1b2c3d4e5f6, which never changes. See How @latest moves.
No token to store on GitHub Actions. Percy's GitHub Actions guide starts by adding PERCY_TOKEN to your secrets. Screenery's Action asks GitHub for an OIDC token and trades it for a credential that lasts five minutes, so there is nothing to rotate. A pull request from a fork cannot publish to your project.
An agent compares against what you shipped. Screenery's MCP server compares a pull request's @pr-N with @latest and lists what was added, removed or changed, with a URL for both sides. A review note from an agent never moves @latest. See Agents.
You keep your own assertions. If you use toHaveScreenshot, it stays your pixel gate, and Screenery publishes the goldens it accepted. Goldens live beside your tests, not in test-results, so give them a folder of their own and push that folder:
// playwright.config.ts
export default defineConfig({
snapshotDir: './goldens',
});
- uses: screenery/push@v1
with:
project: acme/dashboard
path: goldens
See Playwright goldens.
When to pick Percy instead
- You need Safari, Firefox and Edge from one test run, or real phones.
- Designers and product managers approve changes in a browser and should not touch Git.
- You test Storybook, Cypress or Selenium suites. Screenery has no SDK for those; it stores the files your tests write.
- You need SSO and an enterprise contract today.
- Your screenshots never leave the review step, so published URLs are no use to you.
Moving a Playwright suite
Percy's Playwright SDK sends a snapshot from inside the test. With Screenery you save the image yourself. Before:
import percySnapshot from '@percy/playwright';
test('checkout', async ({ page }) => {
await page.goto('/checkout');
await percySnapshot(page, 'Checkout');
});
After:
test('checkout', async ({ page }) => {
await page.goto('/checkout');
await page.screenshot({ path: 'test-results/checkout/payment-form.png', fullPage: true });
});
The file's path becomes its name, so this one is served as checkout/payment-form. Use lowercase paths; a capital letter fails the push. See Screenshot URLs.
Then swap npx percy exec -- npx playwright test for a plain npx playwright test, delete the PERCY_TOKEN secret, and add the Action after your tests:
permissions:
id-token: write
contents: read
pull-requests: write
steps:
# … check out, install, run your Playwright tests …
- uses: screenery/push@v1
with:
project: acme/dashboard
path: test-results
That publishes on every push. To fail the job on a visual change before anything is published, add diff-baseline. See Visual testing. The full setup is in Getting started.
Nothing stops you running both for a while. Keep Percy for cross-browser review and add the Screenery step to publish the Chromium screenshots your docs need.
FAQ
Is Screenery a Percy alternative?
For teams that run Playwright and want the screenshots outside a review screen, yes. Screenery stores the screenshots your tests took and gives each one a URL that follows your default branch. It does not re-render pages in other browsers, so for Safari, Firefox, Edge or real phones from one test run, Percy is the better fit.
Is Screenery cheaper than Percy?
Screenery's paid prices are not published yet, so that comparison cannot be made today. Checked October 2026, Percy's Desktop plan starts at $199 a month, billed annually, and its Free plan gives 5,000 screenshots a month. Percy counts each browser and width as a screenshot, so four browsers at two widths turn one snapshot into eight.
Can I embed Percy screenshots in a README?
Not as images. A public Percy project shares build pages by link, but a build page is not an image you can embed, and it does not follow your default branch. A Screenery URL is a plain image, so it works in a README, a docs page or a help centre.
Sources
Checked October 2026.
- Percy pricing
- Percy product page
- Percy with GitHub Actions
- Percy public projects
- BrowserStack MCP server: Percy tools
See also: all comparisons.