October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
CI

Storybook Visual Regression Testing Without Chromatic

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

You can test Storybook visually without Chromatic by capturing stories with Playwright, comparing those images with approved baselines, and reviewing the resulting diffs in your own CI workflow. That gives your team control over where images live and how changes are approved—but you also own browser consistency, baseline updates, and useful failure reports.

What visual regression testing checks

A visual regression test renders a component or page in a known state, takes a screenshot, and compares it with an image saved as the expected result. A difference is a signal to inspect, not automatic proof of a bug: a changed button may be an unintended regression or an approved redesign.

  1. Render: open a selected Storybook story with controlled props, data, and state.
  2. Capture: save the rendered view using a consistent viewport and browser setup.
  3. Compare: compute an image diff against the accepted baseline using a threshold appropriate to the project.
  4. Review: inspect the changed pixels and decide whether the code or the expected image should change.

Keep these responsibilities distinct. Playwright can capture screenshots and compare them; your repository or a service must provide baseline storage, review, and acceptance.

What Storybook provides without Chromatic

Storybook’s documented visual-testing workflow uses its official visual-testing addon, @chromatic-com/storybook, and connects the workflow to a Chromatic account. Its documented visual-testing panel is not a Chromatic-free local image-diff engine. If you want to avoid Chromatic, choose a separate capture and comparison workflow.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
The IXL Ultimate 3rd Grade Math Workbook, Activity Book for Kids Ages 8-9 Covering Addition, Subtraction, Multiplication, Division, Fractions, Geometry, and More Mathematics (IXL Ultimate Workbooks)
  • Carefully designed questions: Ensuring a solid understanding of concepts
  • Engaging activities: Offering a mix of enjoyable exercises
  • Problem-solving techniques: Providing strategies for tackling challenges
  • Vibrant, full-color visuals: Enhancing learning with captivating illustrations

For Vite-powered Storybook projects, check the current testing guidance before following older tutorials: Storybook says its Jest- and Playwright-based Test Runner has been superseded by the Vitest addon and recommends the Vitest addon for Vite-powered frameworks. The legacy runner remains documented, including local and CI use, but it should not be presented as the default for those projects.

A DOM snapshot is not a screenshot comparison. Storybook’s snapshot-testing guide demonstrates a postVisit hook that saves story snapshots; that example captures DOM output, not pixel images. It can catch structural changes, but does not answer whether the rendered story looks different.

Build a DIY Playwright workflow

This example captures one story at a time, compares it with a committed baseline using Playwright Test’s screenshot matcher, and serves a previously built Storybook. It is a small foundation: expand the test list to cover the stories that matter, and configure your CI to retain failure artifacts.

1. Install Playwright and build Storybook

In a project with Storybook already configured, install Playwright Test and its Chromium browser:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npm install --save-dev @playwright/test
npx playwright install chromium
npm run build-storybook

These commands assume the project has a build-storybook script. Confirm the installed Playwright version, Node version, and Storybook framework work together; package compatibility changes over time. Storybook’s Playwright addon compatibility page currently lists Storybook 10, Playwright approximately 1.59, and Node.js 24.15 or later for that addon, and notes React-focused testing and Component Story Format constraints. Those requirements concern the listed addon, not every standalone Playwright setup.

2. Configure the test to serve Storybook

Create playwright.config.ts in the project root. The example uses the built static Storybook output and a local server; adapt npm run preview-storybook and the port to your project’s script and build output.

Rank #2
YAFIYGI Eye Chart Snellen and Rosenbaum Combo Vision Test Card for Exams Near Point Charts for Professional and Pediatric Use 2 in 1 Eye Exam Chart Set Kids Gifts Eye Exams and Vision Screening 2 PCS
  • Dual Functionality: Our Pocket Eye Chart set includes both the 2 eye charts, offering a versatile solution for measuring visual acuity at a distance and in limited spaces. This 2-in-1 design caters to various vision testing needs
  • Compact and Convenient: Sized at 6.5*3.5 inches, these pocket eye charts are designed for portability. Whether you're a professional optometrist, student, or need a handy tool for vision tests on the go, our compact pocket eye chart set fits conveniently in your pocket 
  • Color Vision Test: The eye chart features Red and Green color bars, providing an easy and helpful color vision test. This additional feature enhances the versatility of our pocket eye chart set, making it suitable for a range of vision examinations
  • Durable and Washable: Crafted from durable plastic, our pocket eye charts are built to last. The washable material ensures easy maintenance and hygiene, making them ideal for repeated use in optometry practices, schools, and offices
  • Pupil Gauge and Non-Reflective:The plastic pocket eye chart includes a pupil gauge, adding practicality to vision examinations. The non-reflective surface ensures accurate readings. This set is a reliable tool for professionals and a handy resource for quick vision assessments
import { defineConfig } from '@playwright/test';

export default defineConfig({
  testDir: './visual-tests',
  workers: process.env.CI ? 2 : undefined,
  reporter: process.env.CI ? 'html' : 'list',
  use: {
    baseURL: 'http://127.0.0.1:6006',
    browserName: 'chromium',
    viewport: { width: 1280, height: 800 },
    deviceScaleFactor: 1,
    reducedMotion: 'reduce',
  },
  webServer: {
    command: 'npm run preview-storybook -- --host 127.0.0.1 --port 6006',
    url: 'http://127.0.0.1:6006',
    reuseExistingServer: !process.env.CI,
    timeout: 120_000,
  },
});

Some Storybook versions provide a storybook CLI command for serving static output; others use a project-specific preview script. If you do not have the script shown above, add one that serves the directory produced by your Storybook build, or run Storybook in dev mode consistently in both baseline generation and CI. Do not silently compare screenshots from different serving modes.

3. Write a test for a stable story

Story IDs are derived from the component and story export names. Find the exact ID in your Storybook’s story index or URL, then use it in the test. This example assumes the story is available as button--primary and that the Storybook iframe route is reachable from the configured base URL.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import { test, expect } from '@playwright/test';

test('Primary button visual baseline', async ({ page }) => {
  await page.goto('/iframe.html?id=button--primary&viewMode=story');
  await page.evaluate(() => document.fonts.ready);
  await expect(page.locator('#storybook-root')).toHaveScreenshot(
    'button-primary.png',
    { animations: 'disabled' },
  );
});

Save this as visual-tests/button.spec.ts. Playwright’s first run creates a baseline when it cannot find one; inspect and commit that image rather than treating initial output as automatically correct. On later runs, the matcher compares the rendered image with the stored baseline. The animations option helps avoid transient movement but does not make changing data, timestamps, external images, or browser rendering deterministic.

4. Create and update baselines deliberately

Run the test locally to create or check the baseline:

npx playwright test visual-tests/button.spec.ts

When a design change is intentional, regenerate the expected screenshot explicitly:

npx playwright test visual-tests/button.spec.ts --update-snapshots

Review every regenerated image and include baseline changes in the same code review as the UI change. Avoid bulk-accepting snapshots without inspecting diffs; an update command can bless an accidental change just as easily as an intentional one. In CI, run the ordinary test command without --update-snapshots so failures remain visible.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. Make CI failures reviewable

Run the same Storybook build, browser version, test command, and environment used to produce the approved baselines. Preserve Playwright’s failure output and HTML report as CI artifacts so reviewers can compare expected, actual, and diff images. Decide whether the workflow should require a maintainer’s approval for baseline updates, and keep those updates traceable in version control.

Start with a focused set of high-risk or high-traffic stories instead of capturing every story by default. Add coverage when it is stable and useful; a flaky screenshot check costs review time and can obscure real changes.

Keep screenshots stable enough to trust

Screenshot comparisons are sensitive to their rendering environment. Browser version, operating system, fonts, device scale, viewport, timing, and dynamic content can all change pixels without a meaningful product change. Pixel-perfect stability is not guaranteed simply because the test uses a fixed URL.

  • Control story inputs: use fixed fixtures and deterministic state. Avoid live APIs, current timestamps, random values, rotating ads, and user-specific data.
  • Pin the rendering environment: use the same browser build, operating-system or container image, installed fonts, viewport, and device scale factor when creating and checking baselines.
  • Wait for content: ensure fonts and essential images have loaded before capture. Prefer a targeted readiness condition over an arbitrary long delay where possible.
  • Control motion and timing: disable or reduce animations and transitions where appropriate. Make clocks, carousels, and delayed UI states deterministic in the story fixture.
  • Choose thresholds intentionally: exact comparisons can be noisy across environments; generous thresholds can hide genuine layout or color defects. Evaluate the diff behavior against representative changes.
  • Require human review: use the image diff to focus attention, then decide whether the change is intended. Store accepted baseline changes with reviewed code.

Visual tests can create meaningful review work. A 2026 preprint analyzing 307 visual-regression-test pull requests from 103 repositories and 299 comparison pull requests reported a 3.8-times longer median resolution time for the VRT-related group. That is an association in the paper’s dataset, not evidence that visual testing causes slower resolution or a prediction for every team. The authors categorized the 189 VRT-flagged issues they analyzed across layout, appearance, color, text, state, test, and image issues; those proportions describe that issue set, not all interface defects. See the paper and its methods before generalizing the result.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Storybook’s Playwright addon and other routes

Storybook’s Playwright addon documents screenshot generation and comparison helpers, including a toMatchScreenshots matcher using jest-image-snapshot and a programmatic image-diff route. It may suit teams that want Storybook-oriented helpers rather than maintaining all capture plumbing themselves. Check its live compatibility notes and your installed Storybook, Playwright, Node, framework, and story format before adopting it.

There are several separate choices to make: where screenshot capture runs, what performs image comparison, where baselines and artifacts are stored, and how reviewers accept changes. You can retain Playwright capture and use a separate comparison or review system; the word “visual testing” does not guarantee a particular review workflow.

Rank #4
Morning and Bedtime Routine Chart with 12 visual symbols pecs cards by Create Visual Aids to support routine, transition for children, autism, aspergers, ADHD, speech and language delay.
  • Creating calmer and happier mornings and bedtimes for the whole family by showing your child what they need to do to get ready.
  • Encourages independence and therefore boosts self esteem as children are no longer dependent on you reminding them what comes next.
  • Allows for processing time - the pictures, or pecs cards for autism, don't disappear like words do and therefore these are great for children with special educational needs, autism, ADHD, speech and language delay, ASD.
  • Eliminates the need for you to nag - children can see what they need to do for themselves in this routine chart.
  • Pictures cards can be moved around thanks to being attached using VELCRO Brand hook and loop, meaning you can order the routine to suit your family.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When a hosted visual-testing service may fit better

A hosted service can reduce some infrastructure and review-workflow work, but it does not remove the need for deterministic stories or careful review. Compare framework and browser support, pull-request workflow, access controls, image retention and upload policies, usage metric, limits, storage, seats, and recurring plan terms. With a DIY setup, software may be open source, but CI compute and engineering maintenance still have costs.

Argos is one hosted option. In an Argos-authored guide published July 30, 2026, Argos describes an addon that captures Storybook stories during Vitest or test-runner runs, as well as a DIY Playwright toHaveScreenshot approach. The guide states a price of $0.0015 per Storybook screenshot and up to 5,000 screenshots per month free. Those are vendor-published figures from that dated guide, not an independent comparison or a guarantee of current terms; check the Argos guide and current service terms before budgeting.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Or skip the browser setup

If you need screenshot capture without maintaining a local browser setup, ScreenshotNeo is a website screenshot API and MCP server. It can capture a Storybook URL, but it is a capture service, not a baseline approval system or pixel-diff engine; you still need to compare the result with an expected image in your own workflow. For a Storybook instance reachable by the API, a single GET request looks like this:

curl -G "https://api.screenshotneo.com/v1/shot" 
  -d access_key=YOUR_API_KEY 
  --data-urlencode url=https://your-storybook.example.com/iframe.html?id=button--primary&viewMode=story 
  -o button-primary.webp

See the ScreenshotNeo API documentation for request options. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots, and the free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month with no card.

Troubleshooting common failures

The test cannot reach the story

Check that the Storybook server is listening at the configured host and port, that the static build completed, and that the story ID is valid. Open the same /iframe.html?id=...&viewMode=story URL in a browser before debugging the matcher.

Every screenshot differs in CI

Compare the local and CI browser versions, OS or container image, fonts, viewport, and device scale factor. Check for animation, dynamic content, late-loading fonts or images, and browser-dependent text rendering before increasing the diff threshold.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The suite times out or runs out of memory

Reduce Playwright worker parallelism and check CI memory and browser setup. Storybook notes that large story counts and low RAM can contribute to Test Runner timeouts; the same resource constraints can affect browser screenshot suites.

Baseline updates produce noisy diffs

Confirm the expected and actual screenshots were captured under matching conditions. If they were, narrow the test to the meaningful component region or adjust the comparison threshold only after checking that real layout and color changes remain detectable.

A DOM snapshot passes but the UI looks wrong

DOM snapshots and image comparisons test different outputs. Add screenshot capture and visual comparison when the requirement concerns rendered appearance, while retaining DOM or interaction tests for structure and behavior.

Choose a workflow by ownership, not by label

Use DIY Playwright when you want to control capture, baselines, and storage and can maintain a consistent CI browser environment. Consider a hosted service when its review interface or integration offsets the cost and data-handling tradeoffs. Either way, the durable workflow is the same: render deterministic stories, compare against deliberately approved images, make diffs easy to inspect, and treat each update as a code-review decision.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Frequently Asked Questions

Does a Storybook visual test replace interaction tests?

No. A screenshot comparison checks rendered appearance for a particular state; it does not by itself verify that controls behave correctly across interactions.

Can I use the Storybook Test Runner for screenshot tests?

The legacy runner is still documented, but Storybook recommends its Vitest addon for Vite-powered frameworks. The workflow shown here uses standalone Playwright Test instead.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.