October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk6 min

Puppeteer Screenshot Testing for PDFs: How to Check Printed Page Output

A Puppeteer viewport screenshot cannot verify PDF pagination or print styling. Generate the intended PDF, rasterize its pages, and compare them with stable baselines.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To test what readers will see in a Puppeteer-generated PDF, generate the PDF with the intended print settings, render its pages to images, and compare those images with approved baselines. A screenshot of the webpage is not a screenshot of the PDF: page.pdf() uses print CSS by default, while page.screenshot() captures the browser page.

Why a webpage screenshot is not enough

Puppeteer’s Page.pdf() API generates a PDF using the print CSS media type. By contrast, Page.screenshot() captures the browser page. The two outputs can differ in page breaks, pagination, margins, print-specific styles, scaling, and color treatment.

As an Amazon Associate I earn from qualifying purchases.

For a visual check of printed-page output, test images rendered from the generated PDF itself. Puppeteer documents PDF generation and browser-page screenshots; the conversion and visual-diff stages below are a testing workflow, not a built-in Puppeteer PDF comparison feature.

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

Build a repeatable PDF visual test

1. Stabilize the page state

Use a known route, test data, and application readiness condition. Where practical, control external services and dynamic content that could change between runs. Navigation with waitUntil: 'networkidle0' is one possible signal, but it does not prove every application is ready; wait for an app-specific selector or other condition when necessary.

#1 Best Overall
Freestyle 5 Books of Freestyle Self Testing Log Book Total 5 Books
  • The FreeStyle log book includes sections for: Lunch, Dinner, Bedtime, Night
  • Comments for each day of the week
  • Log Book Dimensions L=4.25" x W=3.12" x H=0.12"
  • Contains 5 book

Puppeteer’s PDF guide says page.pdf() waits for fonts by default. That does not mean application data, images, or all other asynchronous work has finished. Establish those readiness conditions separately.

2. Generate the PDF using the intended media

For typical printed output, leave the page in print media: that is the PDF method’s documented default. If the product specifically generates a PDF from screen styles, call page.emulateMediaType('screen') before page.pdf(). Puppeteer documents screen, print, and null as supported values for emulateMediaType(). Test the media type the product is supposed to use rather than switching modes just to make a test pass.

3. Fix the output options

Set the paper geometry and appearance options explicitly so a baseline is not silently testing a different output contract. The current PDFOptions documentation describes these relevant choices:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Option What to decide
format Choose a paper format such as A4 or Letter. When provided, format takes priority over width and height.
width, height Set custom paper dimensions when the product uses a nonstandard page size; these are subordinate to format if both are supplied.
margin Specify top, right, bottom, and left margins to match the intended document.
landscape Set orientation explicitly if the output is landscape rather than portrait.
scale Set content scaling consistently. A changed scale can alter wrapping and pagination.
pageRanges Use a range when the test is meant to cover selected pages rather than the entire document.
preferCSSPageSize Set to true when CSS @page size should take precedence. Otherwise Puppeteer scales content to fit the selected paper size.
printBackground Set to true if backgrounds are part of the intended output. Its documented default is false.

These details are from the current Puppeteer documentation on the project’s main branch or documentation site; record your Puppeteer and browser versions with test artifacts rather than assuming option behavior is invariant across every release.

4. Render and compare the PDF pages

Save the PDF as an artifact, then use a suitable PDF renderer to rasterize each page. Compare the resulting images with versioned, approved baselines using the image-diff approach appropriate to your test suite. Puppeteer’s Page.screenshot() API can capture a page or element, but that alone does not inspect pages produced by page.pdf().

Review any differences for pagination shifts, clipping, unexpected page breaks, missing images, font substitution, or blank pages. Pair pixel comparisons with structural checks when useful, such as page count, extracted text, links, or metadata. Those are general test-design ideas; the cited Puppeteer documentation does not prescribe a PDF renderer, parser, or visual-diff library.

Handle print colors and backgrounds intentionally

Puppeteer documents that PDF colors are modified for printing by default and points to -webkit-print-color-adjust when exact colors are desired. The printBackground PDF option separately defaults to false, so set it to true if background graphics are part of the intended document.

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.

The standard CSS print-color-adjust property defaults to economy, under which a user agent may alter or omit colors and backgrounds. Its exact value asks the browser to preserve authored appearance, but MDN cautions that user-agent choices and user settings take priority; the property cannot guarantee an exact result. Align CSS and PDF options with your product’s intended output, and treat the visual test as a check of the browser-generated PDF—not proof of output from every print dialog, driver, printer, or paper stock.

Example: generate a deterministic PDF with Puppeteer

This Node.js example assumes Puppeteer is installed and that the target page exposes a readiness selector such as [data-pdf-ready]. Change the URL, selector, and options to match the output contract you are testing. It writes the PDF for a separate PDF-to-image comparison step.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  try {
    const page = await browser.newPage();
    await page.goto('https://example.com/report', {
      waitUntil: 'networkidle0',
    });
    await page.waitForSelector('[data-pdf-ready]');

    const pdf = await page.pdf({
      format: 'A4',
      printBackground: true,
      preferCSSPageSize: true,
      margin: { top: '12mm', right: '12mm', bottom: '12mm', left: '12mm' },
      scale: 1,
      landscape: false,
    });
    require('fs').writeFileSync('report.pdf', pdf);
  } finally {
    await browser.close();
  }
})();

The example’s paper size, margins, background choice, and CSS page-size preference are sample settings, not universal defaults. If the page is meant to be printed with screen CSS, add await page.emulateMediaType('screen') before PDF generation; otherwise keep print media.

Or skip the browser setup

For a clean capture of a webpage, ScreenshotNeo offers a one-request screenshot API and an MCP server for AI agents. This is an alternative for webpage captures, not a replacement for rendering and inspecting a Puppeteer-generated PDF when that PDF is the artifact under test.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation. Before capture, it accepts consent banners and removes known consent platforms, newsletter popups, and chat widgets; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Learn more at ScreenshotNeo, or sign up free for 1,000 screenshots a month with no card.

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

Troubleshooting PDF visual tests

  • The screenshot looks right but the PDF is wrong: the screenshot checks the browser page, not the generated PDF. Rasterize the PDF pages and compare those images.
  • Page breaks or total page count change: verify paper format or dimensions, margins, orientation, scaling, @page rules, and dynamic page content. Keep these settings stable in the test.
  • Backgrounds are missing: check whether the design expects printed backgrounds and set printBackground: true if so.
  • Colors differ from the baseline: check print CSS and color-adjust rules, then align the test’s CSS and PDF options with the expected browser PDF. Neither CSS nor PDF settings guarantee what a physical printer will produce.
  • Fonts or images appear missing: confirm the relevant content has loaded before generating the PDF. Font waiting is enabled by default, but other asynchronous assets need their own readiness strategy.
  • The test is flaky despite waiting for network idle: network idle is only one possible signal. Wait for an application-specific ready condition and control variable data or external dependencies where practical.
  • Output changes after a Puppeteer update: capture the Puppeteer and browser versions alongside the PDF and baseline, then review whether the rendering change is an expected output change.

What this test can—and cannot—prove

This workflow tests the appearance of the PDF generated by the browser and configuration under test. It does not establish identical results across operating systems, browser versions, print dialogs, printer drivers, physical printers, or paper. If physical output is a requirement, validate that separate print path as well.

Best Value
Accent on Composers: The Music and Lives of 22 Great Composers, with Listening CD, Review/Tests, and Supplemental Materials, Comb Bound Book & Online PDF/Audio
  • Format: Comb Bound Book & Enhanced CD
  • Version: CD Kit (Book & Enhanced CD) (Includes Reproducible Student Pages)
  • Category: General Music and Classroom Publications
  • Contributors: By Jay Althouse and Judy O'Reilly
  • Pub Date: 7/2001

Frequently Asked Questions

Does Puppeteer include a built-in PDF visual-diff function?

The cited Puppeteer documentation describes PDF generation and browser-page screenshots, not a built-in PDF visual-diff pipeline.

Can CSS guarantee exact printed colors?

No. The browser or user print settings can override color-adjust preferences, and physical output adds further variables.

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.

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. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
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.