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.

A blank Cypress screenshot does not have one universal cause. First determine whether the application was actually blank when Cypress captured it, or whether the page looked correct while the capture failed because of timing, capture mode, browser state, scrolling, or the test environment. Identify the screenshot type, assert that the intended UI is ready, make the capture mode explicit, then compare browsers and local/CI runs before applying a workaround.

Start by identifying what “blank” means

Before changing Cypress configuration, classify the artifact. A screenshot can be empty because the app had not rendered, because the command captured a different region than expected, or because the browser could not produce a usable image. These branches require different fixes.

  • Blank application: the page itself was empty, still loading, redirected, or showing an error at the instant of capture.
  • Blank artifact: the page looked correct in the browser or video, but the saved image is white, gray, one pixel high, or otherwise incomplete.
  • Wrong artifact: the file came from a different run, a failure hook, or a different screenshot mode than you intended.

Record your Cypress version, browser and version, operating system, local or CI context, exact command, screenshot options, and whether the page uses canvas or WebGL. Those details determine which branches are plausible.

Manual versus automatic screenshots

Automatic failure screenshots

Cypress takes automatic failure screenshots during cypress run by default. They are not automatically produced in cypress open. A failure screenshot is captured as the Cypress runner view, so it includes the browser viewport and Cypress Command Log rather than being equivalent to a normal application-only capture.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
Philips 24 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 241V8LB
  • CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
  • WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
  • A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents

Manual captures with cy.screenshot()

Use cy.screenshot() when you need a controlled checkpoint during a test. Confirm the screenshot directory and filename, especially when retries or parallel CI jobs can create similarly named files. A manual capture in open mode is not the same artifact as an automatic failure image from run mode.

cy.get('[data-testid="dashboard"]').should('be.visible');
cy.screenshot('dashboard-ready', {
  capture: 'viewport',
  overwrite: true
});

The assertion is intentionally application-specific. It proves that a meaningful element is visible before the image is taken; an arbitrary sleep does not prove that the page reached the required state.

Confirm the application is ready at capture time

Cypress captures the state that exists at the instant the command runs. A route may have loaded its shell while data, fonts, images, transitions, or client-side hydration are still in progress. A screenshot can therefore be a valid image of an intermediate state.

Wait for observable application state

Prefer assertions tied to the UI or the request that supplies it. For example:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
cy.intercept('GET', '**/api/orders').as('orders');
cy.visit('/orders');
cy.wait('@orders').its('response.statusCode').should('eq', 200);
cy.get('[data-testid="orders-table"]')
  .should('be.visible')
  .and('contain.text', 'Order');
cy.screenshot('orders-ready');

If the page has a loading indicator, assert that it disappears and that the replacement content is present. If a transition or lazy-rendered component is genuinely required, wait on a stable condition rather than choosing a delay that only works on one machine.

Rank #2
Philips 22 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 221V8LB
  • CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
  • SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors

Use video or Test Replay as a timeline

When video or Test Replay is available, inspect the frames around the screenshot command. If the UI is blank there too, investigate routing, failed requests, authentication, JavaScript errors, or test data. If the UI is rendered in the recording but the image is blank, continue with capture-mode and browser checks.

Make the capture mode match your goal

Mode What it captures Typical diagnostic use
viewport The current application viewport. Check whether the visible page itself renders correctly.
fullPage The application from top to bottom, using scrolling and stitched screenshots. Capture a long document; investigate scroll or sticky-element artifacts.
runner The browser viewport including Cypress Command Log. Inspect a failure in the Cypress runner; this is the automatic failure mode.

These outputs are not interchangeable. A full-page capture scrolls the application and stitches multiple images. Fixed or sticky elements can consequently appear more than once. For a diagnostic run, switch to an explicit viewport capture or target a single element:

cy.get('[data-testid="invoice"]')
  .should('be.visible')
  .screenshot('invoice-element');

cy.screenshot('current-viewport', { capture: 'viewport' });

Check that the file you open is the artifact produced by this invocation, not an older full-page or runner image left in the screenshots folder.

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

Chromium: check for a paused Cypress-tab renderer

Cypress documents a Chromium-specific condition in which the renderer process for the Cypress tab is paused. Opening a new tab, commonly through a link with target="_blank", can leave Cypress unable to capture its own tab. Cypress attempts to activate the Cypress tab during capture; focus behavior can be particularly noticeable in open mode.

How to isolate it

  1. Find the navigation or click immediately before the blank image.
  2. Re-run without the new-tab action, or change the test flow so the destination is visited in the same tab for the diagnostic run.
  3. Compare the screenshot and video around that navigation.
  4. If you use the Cypress browser extension, keep it enabled while testing the documented focus behavior; disabling it can make Cypress force the main tab to the front and steal focus in open mode.

This is a Chromium condition, not an explanation for every blank screenshot and not a reason to apply the same workaround in Firefox automatically.

When scrolling and rendering are out of sync

Element and full-page screenshots may interact with scrolling, lazy rendering, and CSS movement. A repository report opened January 10, 2024 described an element image that was one pixel high or partly gray when scrolling had not finished. The reported setup was Cypress 13.6.1, Node 18.15.0, Windows 11, and Chrome 120. The reporter used scrollIntoView({ duration: 750 }) followed by a one-second wait.

Rank #3
Sale
Dell 24 Monitor - SE2426H - 23.8-inch FHD (1920x1080) 144Hz 1ms Display, in-Plane Switching (IPS) Technology, AMD FreeSync™, TÜV 3-Star 2X HDMI, Tilt
  • Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
  • Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
  • Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
  • In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
  • Ultra-thin bezels: Maximize your viewing experience with thin bezels.

That report is a historical, case-specific example rather than confirmation of a current general defect. First ensure that the element has reached its intended position and that its content is stable:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
cy.get('[data-testid="chart"]')
  .scrollIntoView()
  .should('be.visible')
  .and(($el) => {
    expect($el[0].getBoundingClientRect().height).to.be.greaterThan(10);
  });
cy.get('[data-testid="chart"]').screenshot('chart');

If a fixed delay is temporarily unavoidable, document why and replace it with a condition-based wait when the application exposes one. Re-test with a current Cypress release before treating an old workaround as a permanent fix.

Canvas, WebGL, and browser-specific rendering

Graphics-heavy content can follow a different rendering path from ordinary HTML. A historical issue opened October 11, 2022 described a blank screenshot of a Mapbox GL/WebGL map in Firefox 91.7.0 ESR with Cypress 9.5.2, while the map appeared in video and Electron. It asked whether upgrading Cypress changed the result; it does not establish that current Firefox or all WebGL screenshots are broken.

  • Run the same test in another supported browser and compare the result.
  • Check whether the canvas or map appears in video or Test Replay.
  • Record the exact Cypress and browser versions before choosing a workaround.
  • Reduce the test to a page containing only the problematic graphics component.

A browser change that makes the image appear is a useful isolation result, not proof that the application or every Firefox capture is defective.

Local, CI, viewport, and runner differences

Cypress troubleshooting guidance recommends comparing browsers and environments rather than assuming that CI caused the failure. Use the same fixed viewport and, for visual comparisons, generate and compare images in the same environment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Samsung 27" Essential S3 (S36GD) Series FHD 1800R Curved Computer Monitor
  • CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
  • SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
  • MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
  • KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
  • INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient

Run a controlled comparison

  1. Run the minimal test locally with a fixed viewport.
  2. Run it in CI with the same browser family and viewport.
  3. Repeat in another supported browser.
  4. Compare the image with video or Test Replay and save the exact command and versions.
  5. Remove unrelated routes, intercepts, plugins, and test data until the failure is smallest.

The Cypress Command Log can add performance pressure in some situations. To isolate runner UI effects, try:

CYPRESS_NO_COMMAND_LOG=1 cypress run
cypress run --no-runner-ui

These are diagnostic options. With the Command Log disabled, screenshots and videos do not include it; they do not repair an application canvas that failed to render.

A complete diagnostic checklist

  1. Identify the artifact: manual or automatic, cypress run or cypress open, expected folder and filename.
  2. Prove readiness: assert meaningful content or a completed network-backed state before capture.
  3. Inspect the timeline: use video or Test Replay to see what the browser displayed at that moment.
  4. Make options explicit: test viewport, fullPage, or an element capture separately.
  5. Check tabs: in Chromium, investigate a recent target="_blank" navigation.
  6. Check movement: wait for transitions, lazy content, and scrolling to settle using observable conditions.
  7. Compare environments: fixed viewport, local versus CI, and more than one browser.
  8. Reduce the case: create the smallest reproducible test before consulting historical issue reports.

Common symptoms and targeted fixes

Symptom Likely branch Next action
White image and blank video frame Application or navigation was not ready. Assert route data and visible content; inspect failed requests and errors.
Video shows the page, image is white in Chromium Renderer focus, capture mode, or browser path. Check new-tab navigation, use explicit viewport capture, compare browsers.
Only full-page image is wrong Scroll-and-stitch or lazy-render timing. Try viewport/element capture and wait for stable positions.
Element image is one pixel or gray Scroll had not completed; historical reports show this in specific setups. Assert geometry and visibility, reproduce on current Cypress.
Only WebGL/canvas content is missing Browser-specific graphics path. Compare supported browsers and inspect video; minimize the test.
Only CI fails Environment, viewport, resource, or timing difference. Match versions and viewport, then reproduce locally and in a minimal CI case.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your goal is a clean website image rather than a Cypress test artifact, ScreenshotNeo provides a one-request screenshot API and MCP server. It accepts consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and each response reports the page verdict and billing status in headers.

cURL (see the ScreenshotNeo documentation):

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

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo also offers full-page and element capture, device and retina settings, custom CSS and JavaScript, waits, request blocking, cookies and headers, PDF output, caching, signed links, asynchronous webhooks, bulk capture, usage reporting, and an MCP server with take_screenshot, get_page_info, and capture_pdf for AI clients. The Free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

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

FAQ

Why is a Cypress screenshot blank but the browser looks fine?

That combination points toward capture mode, tab renderer state, scrolling, or browser-specific rendering rather than an obviously blank application. Use video or Test Replay and a minimal reproduction to separate those possibilities.

Does cy.screenshot() work in cypress open?

Yes, manual screenshots use cy.screenshot(). Automatic failure screenshots are the behavior associated with cypress run by default.

Best Value
Sale
Sceptre New 22-Inch Gaming Monitor, FHD 1080p, Up to 144Hz, HDMI, DisplayPort, Built-in Speakers, Machine Black (E225W-FW144 Series, 2026)
  • 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
  • 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
  • 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.

Should I add a long sleep?

Only as a temporary diagnostic. An assertion tied to the required UI state is more reliable across machines and CI.

Can a blank screenshot prove that the page is broken?

No. It may be a faithful image of an intermediate application state or a capture-path failure. Compare the image with the browser timeline and another capture mode.

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

Frequently Asked Questions

Why is a Cypress screenshot blank when the browser looks fine?

That usually warrants checking capture mode, tab renderer state, scrolling, and browser-specific rendering with video or Test Replay and a minimal reproduction.

Does cy.screenshot() work in cypress open?

Yes. Manual screenshots use cy.screenshot(); automatic failure screenshots are produced by cypress run by default.

Should I fix blank screenshots with a long sleep?

Use a condition-based assertion whenever possible. A fixed delay is only a temporary diagnostic for genuinely time-based rendering.

Can a blank screenshot prove that my page is broken?

No. It can represent an intermediate app state or a capture-path problem, so compare the image with the browser timeline and another capture mode.

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

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.