ScreenshotNeo

BlogHow-to

Applitools Eyes Test Results Not Showing Screenshots: How to Fix It

Find out whether the missing image is a checkpoint, baseline, or incomplete full-page capture, then trace the Eyes run and fix the cause.

By the ScreenshotNeo team4 October 20268 min read

If Applitools Eyes test results show no screenshot, first identify which image is missing: the whole test or step, the checkpoint image, the baseline, or content at the bottom of a full-page capture. Those symptoms point to different causes. Confirm the test reached an Eyes visual checkpoint, open the result for the right batch and step, and then follow the matching fix below.

Eyes captures an image when your test calls a visual checkpoint. The SDK uses the application driver to capture the screen and sends it to the Eyes Server for comparison. The server returns result details and a link to review the test. If the test never reaches that checkpoint, the dashboard cannot show its screenshot. Applitools’ system overview describes this flow.

1. Identify what is missing

What you see Likely area to investigate
No test, run, or result link Test execution, batch selection, SDK setup, API key, or connectivity to the configured Eyes server.
Test and step exist, but no checkpoint image Whether the test reached the checkpoint, whether the checkpoint ran successfully, and whether the report is displaying the right result.
Checkpoint and diff show, but baseline is absent in a Playwright HTML report Viewer authentication. In the enhanced Playwright report, logged-out viewers can see results, checkpoints, and diffs, but baseline images are hidden.
Screenshot exists but is short or missing lower-page elements Lazy loading, scroll-triggered content, or full-page capture mode.
Screenshot exists and the test failed, but the change is hard to see Zoom into the diff and inspect the relevant checkpoint step and regions.

2. Trace the test to an Eyes checkpoint

  1. Read the test output and look for an Eyes result URL, batch name, or session details. A missing result link is a clue to investigate execution before dashboard display.
  2. Check the test code for a visual checkpoint call and verify the test reaches it. A test that exits, throws, or skips before the checkpoint has no image from that step to display.
  3. Check that the Eyes SDK is initialized with the intended API key and, if applicable, the correct server URL. The API key authorizes test execution; dashboard access to view or change protected results is a separate access concern.
  4. Look at the run logs for setup, browser/driver, network, or SDK errors. Resolve the first failure in the run before diagnosing missing images in the results UI.

Configuration differs by SDK, so use the setup guide for the integration actually running your test. For example, Applitools’ Storybook quick start describes checkpoint discovery and a dashboard link printed by its CLI; its Appium Python quick start shows an API key configured through the environment or SDK. Those are integration-specific examples, not universal setup instructions.

3. Open the correct batch, test, and step

  1. Use the result link printed by the run when available.
  2. In the Eyes dashboard, locate the relevant batch. Use the available filters, such as date, application, batch, or status, to narrow the list.
  3. Open the test inside that batch, then select the checkpoint step. Check whether the image is a baseline, checkpoint, or diff before concluding the screenshot is missing.
  4. If you use Playwright’s enhanced HTML report, check that its reporter is configured for your project and open the generated report with npx playwright show-report. This command applies to Playwright projects using that report.

The Dashboard documentation describes navigating batches, tests, and steps. The Playwright integration guide explains its report and logged-out visibility rules.

4. Fix missing or incomplete full-page content

If there is an image but its lower content is absent, determine whether the page loads content as the user scrolls. Lazy-loaded pages can grow during capture, after Eyes has already determined the page length. Some elements are not loaded until scrolling reaches them.

  1. Before the visual checkpoint, scroll down through the page in viewport-sized increments so scroll-triggered content has a chance to load.
  2. Wait for the expected content or images to appear. If your app exposes a stable selector, wait for that selector using your browser automation framework.
  3. Scroll back to the top and take the checkpoint only after the page is in the intended visual state.
  4. Re-run and compare the capture. Jumping directly to the footer may not trigger every intermediate lazy-loaded section.

Applitools’ lazy-loading troubleshooting article recommends loading all expected content before capture and describes scrolling down and back up. It notes that scrolling screen by screen can be more reliable than jumping to the bottom.

If content is loaded but a full-page image is stitched incorrectly, check the capture mode available for your SDK and account. Applitools documents CSS mode as the default and recommended option in the described settings context, particularly for fixed-position elements; Scroll mode uses JavaScript window scrolling. Try the alternative mode if the current full-page capture remains problematic, and verify the relevant SDK’s configuration instructions before changing code. See Defining Eyes Visual AI Settings.

5. Inspect a subtle visual difference

A failed visual comparison does not necessarily mean the entire screenshot is obviously different. Open the relevant step and use its comparison views, such as side-by-side, toggle, or diff overlay, to locate the changed area. Zoom in on small regions and check annotations or regions that affect how the comparison is interpreted. Current dashboard controls may differ from older support instructions, so prefer the controls visible in your report and current documentation.

Playwright example: reach a checkpoint and open the report

For a Playwright project using the Applitools Playwright Fixtures SDK, the documented integration imports the extended test object and calls eyes.check(). This small example shows the checkpoint path; adapt it to your existing test, SDK version, and project configuration. It is not a generic configuration recipe for other Eyes SDKs.

npm install --save-dev @applitools/eyes-playwright @playwright/test
npx playwright install chromium
// tests/home.visual.spec.ts
import { test } from '@applitools/eyes-playwright/fixture';

test('home page visual checkpoint', async ({ page, eyes }) => {
  await page.goto('https://example.com');
  await page.getByRole('heading', { name: 'Example Domain' }).waitFor();
  await eyes.check('Home page');
});
// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: [['@applitools/eyes-playwright/reporter']],
  use: { browserName: 'chromium' },
});
# macOS/Linux: provide the key to the test process
export APPLITOOLS_API_KEY='YOUR_API_KEY'
npx playwright test
npx playwright show-report

Keep the API key in your environment or secret store, not committed in source. For other frameworks, use the equivalent checkpoint, key, and report setup documented for that SDK. See the Playwright integration documentation and Eyes SDK documentation.

Or skip the browser setup

If your immediate need is a website screenshot rather than an Eyes visual test, ScreenshotNeo returns an image or PDF from one API request. See the ScreenshotNeo API documentation.

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

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://example.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));

ScreenshotNeo accepts cookie and consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

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

Troubleshooting checklist

Symptom or error Cause to check Fix
No result link or batch The run did not finish, failed before the Eyes call, or could not reach the configured service. Find the earliest test or SDK error; confirm the API key and server configuration for your SDK; rerun and look for the generated result link.
Batch exists, expected step does not The test skipped or failed before the checkpoint, or the wrong batch/test is open. Confirm the checkpoint executed and inspect the batch produced by this run.
Playwright report shows checkpoint and diff but no baseline The report is being viewed while logged out. Authenticate to view the baseline; authentication is also required to accept or reject changes.
Full-page image cuts off the bottom Page height changed after lazy content loaded. Scroll incrementally, wait for content, return to the top, then capture.
Some images or sections are absent Loading is triggered by scrolling, or the test captured before the content appeared. Trigger the scroll behavior and wait for an app-specific selector or visible state before checkpointing.
Fixed header repeats or page stitching looks wrong Full-page capture mode may not suit the page. Check the SDK’s supported screenshot capture modes and try the alternative mode documented for your setup.
Only a tiny diff is visible The changed pixels occupy a small region. Zoom in and inspect the diff overlay and step details; do not approve a baseline until the change is understood.
API key works for execution but not dashboard actions Execution authorization and viewing or editing protected dashboard data are different. Sign in with an account that has the necessary dashboard access.

Performance, reliability, and cost considerations

  • Wait for the right condition. Waiting for a stable selector or expected app state is usually more reliable than adding an arbitrary long delay. Use a fixed delay only when the page offers no observable readiness condition.
  • Keep scrolling bounded. For lazy content, scroll by viewport-sized increments and stop when the expected content is present. Avoid unbounded loops on pages with infinite scrolling.
  • Make captures repeatable. Capture after the application reaches the same intended state each run. Variable content, late network requests, animations, and dynamic page height can make screenshots inconsistent.
  • Separate missing images from visual diffs. A checkpoint image proves capture occurred; an absent baseline or a diff is a separate report or comparison issue.
  • Check the run’s actual service configuration. Eyes supports different server configurations; investigate firewall or endpoint access only when the run evidence points to connectivity trouble.
  • Use the right tool for the job. Eyes is part of a visual testing flow that captures checkpoints and compares them with baselines. A screenshot API can capture a URL, but that does not replace an Eyes test, its baseline management, or its comparisons.

FAQ

Does a missing baseline mean the screenshot was not captured?

No. In the documented Playwright HTML report, a logged-out viewer can see the checkpoint and diff while the baseline remains hidden. Authenticate to view protected baseline images.

Will creating a new baseline restore a missing screenshot?

Not if the run never reached a checkpoint or the report is showing the wrong step. First confirm that the checkpoint image exists. Only update a baseline after reviewing an intentional visual change.

Can the title alone identify the cause?

No. The SDK, report type, run link, exact missing image, and whether the page is captured full-page all affect the diagnosis. Use the symptom table to narrow it down.

Can an MCP tool inspect results that have already been captured?

Applitools documents an MCP server with inspection tools for existing results, subject to its requirements and permissions. The setup and checkpoint tools have SDK support limitations; consult the Applitools MCP documentation for current details.