ScreenshotNeo

BlogComparisons

Free Alternatives to Happo for Visual Regression Testing

Compare free visual regression options: Happo’s own free tier, Playwright Test, Argos, and Chromatic—and choose based on how your team captures and reviews changes.

By the ScreenshotNeo team4 October 202610 min read

Short answer: You may not need to replace Happo: its free plan currently includes 5,000 monthly snapshots in Chrome, with visual and accessibility testing. If you want a self-managed, no-cost visual check and already use Playwright, start with Playwright Test’s built-in screenshot assertions. If you want hosted capture review, compare Argos and Chromatic; each documents a free allowance of 5,000 screenshots or snapshots. Their workflows and counting models are not interchangeable.

For teams whose primary need is to capture website screenshots through an API, ScreenshotNeo is the first screenshot service to consider: cookie banners, popups, and chat widgets are removed before capture, and only clean shots are billed. It is a screenshot API and MCP server, not a visual-regression baseline review platform; the comparison below focuses on tools that document screenshot comparison or visual review.

Free software can still carry operational costs: CI time, baseline storage, reviewing screenshot diffs, and keeping rendering conditions stable. Choose based on your current framework, who owns baseline updates, whether you need hosted review, browser coverage, and what happens when a free quota is reached. Vendor allowances can change, so confirm the linked pricing pages before committing.

At a glance

Option Free allowance and workflow Best fit Watch for
ScreenshotNeo Screenshot API and MCP server; 1,000 shots/month free. Not a visual-diff review system. Developers or AI agents that need clean website screenshots as inputs or artifacts. It does not replace visual-regression baselines, approvals, or diff review.
Playwright Test Built-in screenshot assertions; snapshots stored with the project. No hosted visual-testing quota in this workflow. Teams already using Playwright that can maintain baselines in source control. Rendering consistency, CI runtime, baseline updates, and review are your responsibility.
Argos Hobby: up to 5,000 screenshots. Hosted visual-testing workflow with project integrations. Teams wanting hosted review and a published free allowance. Confirm how your capture type counts toward usage and what capabilities your project needs.
Chromatic Free plan: 5,000 billed snapshots per month; testing and review pause at the cap. Teams whose workflow fits Chromatic’s hosted review and Playwright integration. Plan for a pause if you exhaust the monthly allowance.
Happo Free plan: 5,000 snapshots/month in Chrome, visual and accessibility testing. Teams for whom the current allowance and browser coverage already suffice. Free accounts pause at quota; the documented free plan is Chrome-only.

Current vendor details: Happo pricing, Argos pricing, and Chromatic’s free-plan limit. Happo defines a snapshot as one component variant in one browser. Its rough usage estimate is component variants × browsers × runs. A test run for the same variant in three browsers therefore consumes three snapshots.

First check whether Happo is enough

A migration has a cost even when the destination is free: integration work, changing review habits, and moving or recreating baselines. Happo documents 5,000 free snapshots per month in Chrome, accessibility testing, no credit card, and no time limit. At the cap, free accounts pause until the next cycle or an upgrade. If your current workload fits and Chrome is sufficient, keeping Happo may be the simplest option.

Estimate your monthly usage using Happo’s model:

component variants × browsers × Happo runs per month = approximate snapshots

For example, 40 component variants checked in one browser across 80 monthly CI runs would be about 3,200 snapshots. Add browsers or variants and the total rises. Use your actual number of runs, including pull-request and main-branch builds, when estimating.

Playwright Test: self-managed screenshot comparisons

Playwright Test’s toHaveScreenshot() generates reference images on the first run and compares later runs against them. The snapshots live alongside the project, so your team decides how to review and update them. This makes it a strong free visual regression testing option when Playwright is already in your stack and you are comfortable owning baseline consistency.

Minimal runnable setup

Install Playwright Test, initialize its configuration, and install a browser:

npm init playwright@latest
npx playwright install chromium

Create tests/homepage.spec.ts:

import { test, expect } from '@playwright/test';

test('homepage visual baseline', async ({ page }) => {
  await page.goto('http://127.0.0.1:3000', { waitUntil: 'networkidle' });
  await expect(page).toHaveScreenshot('homepage.png', { fullPage: true });
});

Run the test once to create the reference, inspect and commit the generated snapshot, then run it again to compare:

npx playwright test tests/homepage.spec.ts
npx playwright test tests/homepage.spec.ts

For a real app, start its server before the test. Playwright’s initializer can create a starter config; a small explicit configuration might look like this:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  use: {
    baseURL: 'http://127.0.0.1:3000',
    browserName: 'chromium',
  },
  webServer: {
    command: 'npm run dev -- --host 127.0.0.1',
    url: 'http://127.0.0.1:3000',
    reuseExistingServer: !process.env.CI,
  },
  expect: {
    toHaveScreenshot: {
      animations: 'disabled',
      caret: 'hide',
      maxDiffPixelRatio: 0.002,
    },
  },
});

The example sets a small allowed difference ratio as a starting point, not a universal tolerance. Omit it for strict comparison, or tune it after reviewing real diffs. Snapshot assertions are part of Playwright Test’s runner; use the runner rather than assuming the assertion is a general-purpose browser-library feature.

Useful screenshot assertion options

  • fullPage: true captures the full scrollable page rather than only the viewport.
  • maxDiffPixels allows a fixed number of differing pixels; maxDiffPixelRatio allows a fraction of the image to differ. Avoid generous thresholds that hide regressions.
  • threshold adjusts the perceived color difference accepted for a pixel. The documented default is 0.2; higher tolerance can reduce noise but may also hide subtle changes.
  • animations: 'disabled' and caret: 'hide' help avoid variation from animated elements and blinking text cursors.
  • mask can cover volatile elements such as timestamps or avatars. Prefer controlling the data when possible, because a mask can conceal a real issue inside that region.
  • stylePath applies a stylesheet during capture. It can hide or normalize volatile content consistently; keep the stylesheet narrow and review what it masks.
  • A named image such as 'homepage.webp' can store the baseline as lossless WebP in current Playwright documentation. PNG remains the default.

These are screenshot assertion settings, not substitutes for stable inputs. Consult the Playwright visual comparisons guide for the current option reference.

Updating and reviewing baselines

  1. Run the visual test in the same browser, operating system, and environment used to generate the reference.
  2. Open the reported actual image and diff. Decide whether the change is intended before updating anything.
  3. If the UI change is expected, regenerate references with npx playwright test --update-snapshots.
  4. Review the resulting image files in the code review and commit them with the code change.
  5. Keep CI browser versions and fonts stable. If you deliberately change the capture environment, expect that baselines may need to be regenerated and reviewed.

For components rather than full pages, use a locator assertion such as await expect(page.getByRole('button', { name: 'Save' })).toHaveScreenshot('save-button.png'). Smaller snapshots narrow the area that can fail and make diffs easier to interpret. Full-page comparisons remain useful for layout and integration changes.

Argos and Chromatic: hosted review options

Argos

Argos lists a free Hobby plan with up to 5,000 screenshots and a Pro plan starting at $100/month with 35,000 included screenshots. Its pricing page describes hosted visual testing, integrations, and review features. Before adopting it, check whether your desired capture path is supported and how the screenshots it produces count against the allowance. The published Pro price and quota are vendor-listed details and can change. See Argos pricing.

Chromatic

Chromatic documents 5,000 billed snapshots per month on its free plan. When the free allowance is used, testing and review pause until the next billing cycle or an upgrade. Its Playwright documentation describes cloud snapshot capture and review. Check the cap behavior against your CI cadence so a quota pause does not surprise a release workflow. See Chromatic’s free-plan FAQ and Playwright setup documentation.

How to choose between hosted and local baselines

  • Choose Playwright’s built-in route when you want snapshots in your repository and are ready to own stable capture environments and baseline review.
  • Evaluate Argos or Chromatic when a hosted review workflow is important. Compare the exact capture integration, quota counting, access needs, and behavior at the free limit.
  • Keep Happo if its free quota and Chrome coverage meet the need; there is no benefit in migrating simply to replace a working free plan.

Do not compare allowances as if they count identical units: Happo describes a snapshot as a component variant in one browser, while the other vendors use their own screenshot or billed-snapshot terms. Check each vendor’s current definition and your expected build volume.

Or skip the browser setup

If your task is to capture a website image for documentation, monitoring, an AI workflow, or an asset—not to maintain visual-regression baselines—ScreenshotNeo provides a one-request screenshot API. See the ScreenshotNeo API documentation for the request options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', new Uint8Array(await res.arrayBuffer()));
  • Cookie banners, newsletter popups, and chat widgets are removed before the shot.
  • Bot checks, blank pages, and failed loads are never billed; response headers identify the page verdict and billing status.
  • An MCP server lets AI agents, including Claude, Cursor, and other MCP clients, take screenshots.
  • 1,000 screenshots a month are free with no card; paid plans start at $5 for 3,000. Every feature is on every plan.

Sign up free for 1,000 screenshots a month, with no card.

ScreenshotNeo can capture the current state of a page, but it does not provide the baseline comparison and hosted approval workflow covered by Happo, Argos, Chromatic, or Playwright Test. Keep a visual-testing tool for regression review.

Troubleshooting visual regression tests

Symptom Likely cause What to do
Many pixels change on every run Different OS, browser version, fonts, device scale, animation, time, or dynamic data. Use the same CI image and browser version; disable animation, freeze time or data where possible, and mask only genuinely irrelevant regions.
First run reports a missing snapshot No baseline exists yet. Review the generated image, then commit it as the approved starting reference.
CI fails but local run passes Local and CI rendering environments differ. Generate and compare baselines in the same CI environment, including browser and OS; check installed fonts and viewport settings.
Diff threshold hides a visible regression Pixel tolerance is too permissive or the snapshot covers too large an area. Lower or remove tolerance, and use focused locator screenshots where that gives a more useful assertion.
Screenshot captures a loading state The page or component was not ready, or network-idle is not a reliable readiness signal for that app. Wait for a meaningful selector or application-ready condition before capturing; make test data deterministic.
Updates create a large unexpected baseline change Snapshot update was run across unrelated tests or under a new environment. Update only after inspecting diffs; narrow the test selection and verify the capture environment before committing.
Free hosted service stops reviewing new builds The monthly quota was reached. Check usage and reset timing, reduce unnecessary snapshots or builds, or decide whether the paid tier is justified. Chromatic explicitly pauses free testing and review at its cap; Happo also says free accounts pause.

Performance, reliability, and cost

Performance: A visual test has to render the page and save or transfer image data. Full-page and multi-browser coverage increase work per test. Keep the suite focused on important states, reuse the application build in CI where appropriate, and avoid capturing the same unchanged state repeatedly without a reason. No measured speed comparison between these tools is established here.

Reliability: Visual diffs are reliable only when the capture inputs are controlled. Playwright warns that browser rendering can vary with host OS, version, settings, hardware, power source, headless mode, and other factors. Treat the environment as part of the test: pin browser versions, use repeatable CI images, control data and time, and review baseline changes rather than accepting them automatically. See Playwright’s guidance on visual comparisons.

Cost: Playwright’s built-in comparison avoids a hosted snapshot quota in this workflow, but the team still spends CI compute, repository storage, and review time. Hosted free plans trade some operational work for account and usage limits. Happo and Chromatic pause at documented free caps. Argos lists a $100/month Pro plan with 35,000 included screenshots; confirm current pricing before budgeting. A free allowance is useful only if its cap and capture model fit your real build frequency.

FAQ

Is Happo still free?

Happo’s pricing page currently lists a no-time-limit free plan with 5,000 monthly Chrome snapshots, visual and accessibility testing, and no card required. Free accounts pause at quota.

Can Playwright replace Happo?

It can replace the screenshot-comparison part for teams willing to store and review their own reference images. It does not provide the same hosted review workflow described for Happo.

Which option works best for visual regression testing for Storybook?

That depends on whether you prefer local baselines or hosted review and which integration matches your existing setup. Argos and Chromatic document hosted visual workflows; Playwright can compare component screenshots in tests. Verify the current integration instructions and quotas before choosing.

Are these services direct replacements for one another?

No. Compare the capture environment, baseline ownership, review workflow, browser coverage, quota definition, and cap behavior. Similar free numbers do not guarantee equivalent workflows.

Is ScreenshotNeo a visual regression testing service?

No. It captures screenshots through an API or MCP server. Use it when you need a clean screenshot, and use a visual testing tool when you need persistent baselines and reviewed diffs.