ContactSign inSign up
Contact

Introducing SteadySnap

Updates to our algorithm that reduces test flake by stabilizing frontend rendering

loading
Varun Vachhar
@winkerVSbecks
Last updated:

Flaky tests erode trust. You run your suite, it fails, you rerun it, it passes. Nothing changed. Most visual testing tools snapshot at arbitrary times, mid-load or mid-animation, which results in flake. 

Chromatic was built to kill flake. We run tests in a clean-room browser with a diffing algorithm designed to stabilize snapshots and surface only the bonafide changes. 

Now we’re taking it further, we discovered new techniques to improve snapshot stability which reduced visual inconsistencies by 34%. Today, I’m excited to share our next gen diffing algorithm SteadySnap.

What's new?

Debugging inconsistent test renders has always been a frustrating challenge—especially when those inconsistencies appear sporadically and seem impossible to reproduce. SteadySnap addresses this issue head-on with an improved baseline algorithm and new automated mechanisms that resolves such issues without requiring manual intervention.

Render stabilization

Resource loading and asynchronous data fetching make it hard to figure out when the UI is stable and ready for a snapshot. Initially, the browser loads your code and begins rendering the UI. Static assets may need fetching, and your code might initiate API requests. Additionally, there may be subsequent re-renders based on the responses to these API requests.

SteadySnap monitors network requests, asset loading, and rendering states to determine when the UI is truly stable. In the latest release, we've improved its heuristics to better evaluate the UI state and ensure more reliable snapshots.

Auto-freeze dynamic content

Dynamic elements with CSS animations, transitions, SVG animations, or autoplaying videos create inconsistent renders because snapshots are captured at different moments in time. SteadySnap proactively pauses these elements, ensuring your tests capture the same consistent state every time.

We've also improved handling of video services like BrightCove and Wistia, which use ephemeral source URLs that previously caused encoding errors when autoplay was enabled. SteadySnap now handles these correctly by displaying either the video poster or a clean blank state when no poster is available.

Burst capture

Often, components have side effects that trigger repaints and redraws. Additionally, some UIs, like dynamically generated graphs, can introduce subtle variations. Even with stabilization and content freezing, this leads to unpredictable rendering behavior. To capture stable snapshots in such cases, we created burst capture.

Instead of relying on a single render, SteadySnap captures multiple renders and selects the most stable one to snapshot. This eliminates hard-to-reproduce instabilities without impacting your snapshot usage.

34% fewer inconsistencies

SteadySnap comes standard with all Chromatic plans.  We started rolling out SteadySnap to select customers in March, then silently deployed it to everyone and saw it reduce visual inconsistencies by one-third across our platform.

The seamless rollout—with zero service disruptions—reflects the tremendous effort our platform engineers put into ensuring smooth infrastructure upgrades.

The SteadySnap algorithm detects and automatically resolves intermittent issues that would otherwise require time-consuming manual debugging. For tests with persistent inconsistencies, you can easily reproduce and debug them using our trace viewer.

Did this article help you?

Get free UI development guides and tutorials like this emailed to you.

4,255 developers and counting

We’re hiring!

Join the team behind Storybook and Chromatic. Build tools that are used in production by 100s of thousands of developers. Remote-first.

View jobs

Popular posts

Accessibility Testing & Dashboard are live

Introducing our component-driven approach to accessibility
loading
Dominic Nguyen

Sneak peek: Accessibility Regression Testing

Catch accessibility issues where they start – components
loading
Dominic Nguyen

Accessibility Regression Testing: A must-have for European Accessibility Act compliance

Demonstrate compliance without stopping to fix every accessibility issue
loading
Dominic Nguyen
Company
AboutCareersTerms of ServicePrivacySecurity • SOC 2StatusContact Sales
Chromatic
© Chroma Software Inc. Made by the maintainers of Storybook.