Puppeteer SDK reference (@argos-ci/puppeteer)
Reference for @argos-ci/puppeteer: argosScreenshot options, stabilization, and viewports for visual testing with Puppeteer scripts.
Puppeteer already offers a command to take screenshots. The official Argos Puppeteer integration uses it but also does several things:
Ensuring all images are fully loaded.
Ensuring all fonts are rendered.
Confirming the absence of any
aria-busy(loading) elements on the page.Concealing scrollbars.
Obscuring text cursors or carets.
Providing CSS utilities to simplify content hiding.
Compatibility
Puppeteer 1 or later.
Node.js 22 or later.
Installation
Use in your tests
argosScreenshot command stabilizes the UI and takes a screenshot.
How to take a screenshot with argosScreenshot command
import puppeteer from "puppeteer";
import { argosScreenshot } from "@argos-ci/puppeteer";
describe("Integration test with visual testing", () => {
it("loads the homepage", async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("http://localhost:3000");
await argosScreenshot(page, "homepage");
await browser.close();
});
});Screenshots are stored in screenshots/argos folder, relative to current directory.
API Overview
argosScreenshot(page, name[, options])
page- Apuppeteerpage instancename- The screenshot name; must be unique. If it ends with.png, it is treated as a path.options- See Page.screenshot command optionsoptions.element- Accept an ElementHandle or a string selector to screenshot an elementoptions.viewports- Specifies the viewports for which to capture screenshots. See viewports configuration.options.argosCSS: Specific CSS applied during the screenshot process. More on injecting CSSoptions.disableHover: Disable hover effects by moving the mouse to the top-left corner of the page. Defaults totrue.options.threshold: Sensitivity threshold between 0 and 1. The higher the threshold, the less sensitive the diff will be. Defaults to0.5.options.baseName: Name, or list of names, to compare this screenshot against instead of its own name. Useful to compare a variant against an existing screenshot. More on fallback baselines.options.stabilize: Wait for the UI to stabilize before taking the screenshot. Set tofalseto disable stabilization. Pass an object to customize the stabilization. Defaults totrue.options.stabilize.disableSpellCheck: Disable spell check before taking the screenshot. Defaults totrue.options.stabilize.fontAntialiasing: Force font antialiasing. Defaults totrue.options.stabilize.hideCarets: Hide text carets before taking the screenshot. Defaults totrue.options.stabilize.hideScrollbars: Hide scrollbars before taking the screenshot. Defaults totrue.options.stabilize.loadImageSrcset: Force the loading of images withsrcsetattributes when the viewport changes. Defaults totrue.options.stabilize.pauseGifs: Pause animated GIFs on their first frame so they don't capture a random frame on each run. Defaults totrue. Flag GIFs served from extension-less URLs withdata-image-type="gif"so they're detected too.options.stabilize.roundImageSize: Round image sizes to the nearest integer. Defaults totrue.options.stabilize.stabilizeSticky: Stabilize sticky and fixed elements by switching toposition: absolute. Defaults totrue.options.stabilize.waitForAriaBusy: Wait for thearia-busyattribute to be removed from the document. Defaults totrue.options.stabilize.waitForFonts: Wait for fonts to be loaded. Defaults totrue.options.stabilize.waitForImages: Wait for images to be loaded. Defaults totrue.options.stabilize.waitForBackgroundImages: Wait for CSS background images (including::before/::after) to load before taking the screenshot. Enabled by default, scoped to elements flagged with thedata-visual-test-wait-bg-imgattribute (and their descendants). Passtrueto scan the whole document,{ selector: string }to target a custom selector, orfalseto disable it. A failed image (e.g. a 404) is treated as loaded so it never blocks stabilization.options.tag: Tag or array of tags to attach to the screenshot for filtering in Argos.
Unlike Puppeteer's screenshot method, argosScreenshot sets the fullPage option to true by default. Override it if you prefer partial screenshots of your pages.
Helper Attributes for Visual Testing
For tailored visual testing, the data-visual-test attributes provide control over how elements appear in Argos screenshots. This can be especially useful for obscuring or modifying elements with dynamic content, like dates.
[data-visual-test="transparent"]: Renders the element transparent (visibility: hidden).[data-visual-test="removed"]: Removes the element from view (display: none).[data-visual-test-no-radius]: Strips the border radius from the element.
Example: Using a helper attribute to hide a div from the captured screenshot:
Additional Resources
Last updated
Was this helpful?