DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk4 min

How to Run BackstopJS Tests in Parallel

BackstopJS parallelizes capture and comparison internally. Learn which limits to tune, how to run tests in CI, and how to avoid memory and rendering pitfalls.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

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

BackstopJS already runs screenshot capture and image comparison work in parallel. To tune that work, set the root-level asyncCaptureLimit and asyncCompareLimit values in your configuration, then adjust them to the memory and capacity of the machine running the tests.

How BackstopJS parallelism works

BackstopJS processes image capture and image comparison in parallel, and controls those as separate stages. asyncCaptureLimit limits concurrent screenshot captures; asyncCompareLimit limits concurrent image comparisons. Raising either limit may increase throughput, but can also increase RAM use. The project README describes its memory guidance as approximate, not a guarantee. BackstopJS README

Set the concurrency limits

Add the settings at the root of your BackstopJS configuration file. For example:

{
  "asyncCaptureLimit": 5,
  "asyncCompareLimit": 20
}

These values are illustrative starting points, not universal recommendations. Lower limits reduce simultaneous work and may help on memory-constrained runners; higher limits may improve throughput when the host has capacity. The README lists defaults of 10 concurrent captures and 50 concurrent comparisons. Because its master README is mutable and does not identify a release date, check that your installed BackstopJS version supports the settings and verify its defaults before relying on them.

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

Choose limits without guessing

  1. Begin with the installed version’s documented defaults or conservative values appropriate to your runner.
  2. Run a representative test suite and observe whether the machine has sufficient memory while capture and comparison work is active.
  3. Change one limit at a time. If memory pressure occurs, lower the limit for the stage contributing to the load; if the host has headroom and throughput is insufficient, try a measured increase.
  4. Repeat the same workload after each change so you can compare results on consistent terms.

The README gives an approximate comparison-memory rule of thumb: 100 MB baseline plus about 5 MB per concurrent comparison. It is the project’s estimate, not an independently measured benchmark or a promise of safe memory use. Browser processes, screenshot dimensions, workload, and runner overhead can affect actual consumption.

Run the configured tests

Use the project’s existing configuration, or pass a different file with --config. BackstopJS supports JSON and JavaScript configuration files. A locally installed CLI can be run like this:

./node_modules/.bin/backstop test --config=backstop.json

Replace backstop.json with the path to your configuration if needed. You can also call the CLI from an npm script or use BackstopJS’s Node API when it needs to fit an existing build process. The README documents --filter for matching scenario names, which is useful for running a focused subset while debugging. BackstopJS README

Use parallelism in CI

For actionable pipeline results, the README documents CI reporting that generates JUnit output. It also documents the CLI exit status: 0 on success and 1 if anything fails. Configure your CI system to collect the report and treat a failing test command as a failed pipeline step.

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

BackstopJS’s internal concurrency limits are documented; the sources do not establish built-in sharding semantics for splitting a configuration among independent CI workers. Distribution across jobs is an orchestration choice and may require separate configurations or filters. Avoid assuming that multiple workers will coordinate safely without checking your setup.

Keep rendering consistent across environments

BackstopJS notes that text can render differently between environments and documents backstop test --docker as an option for reducing cross-environment rendering differences. The published Docker image documents mounting the working directory at /src; its listing also says backstop openReport is unsupported in that image. Check the current image documentation for execution details and limitations: BackstopJS Docker Hub listing.

Rank #4
The Web Testing Handbook
  • Used Book in Good Condition

Troubleshoot parallel runs

  • Memory use spikes or the run fails under load: reduce the relevant concurrency limit and repeat the run. The README’s memory estimate is approximate, so do not treat it as a guaranteed sizing formula.
  • Changing a setting has no effect: confirm the setting is at the configuration root, that the command is using the file you edited, and that the installed BackstopJS release recognizes it.
  • Local and CI screenshots differ: compare the rendering environments. The project documents Docker as an option when text differs across environments; note the published image’s openReport limitation.
  • The whole suite is too broad for diagnosis: use the documented --filter option to target matching scenario names, then rerun the full suite before treating the pipeline result as complete.
  • CI does not show test results or fail on regressions: enable the documented JUnit CI report and ensure the pipeline preserves the command’s exit status.

Or skip the browser setup

If you need screenshots by URL rather than BackstopJS baseline comparison, ScreenshotNeo offers a one-request screenshot API. See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
  • Cookie banners are accepted and removed before capture; known newsletter popups and chat widgets are removed too, and each cleanup step can be turned off.
  • Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; response headers report the page verdict and billing status.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents and MCP clients.
  • The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.

Sign up for ScreenshotNeo’s free plan.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Frequently Asked Questions

Can BackstopJS run multiple capture and comparison tasks at once?

Yes. Its README describes both stages as parallel work and exposes separate limits for capture and comparison.

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

Does increasing both limits always make a test run faster?

No. Higher concurrency can increase RAM use, and the available documentation does not establish one optimal setting for every runner or workload.

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.

More from the Wire

  1. Shenzhen desk3 min
    HONOR Expands Beyond Smartphones With Humanoid Robot RevealHONOR said it unveiled its first humanoid robot at MWC 2026 and named shopping assistance, workplace inspections, and supportive companionship as intended uses. Later Robotics D1 claims and a reported…
  2. Cupertino desk5 min
    Apple Unveils AirPods Max 2: The Upgrade That Should Have Happened Years AgoAirPods Max 2 adds H2-powered audio features and Apple claims up to 1.5× more effective ANC, but its design, Smart Case, and 20-hour battery rating are unchanged. Wired lossless audio…
  3. Cupertino desk4 min
    Apple’s OLED Touch MacBooks Are Coming—but the Dynamic Island Is the Real GambleApple has not announced an OLED touchscreen MacBook, but reports point to high-end models arriving in late 2026 or early 2027. The reported Mac Dynamic Island could be useful, but…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

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.