October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk7 min

How to Run Argos CI Visual Tests in Docker

A practical Docker and CI setup for Argos visual tests with Playwright, including version matching, secure token handling, stable captures, and common fixes.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run Argos visual checks in Docker by using an official Microsoft Playwright image that matches the Playwright package version in your project, installing dependencies from the lockfile, supplying ARGOS_TOKEN as a CI secret, and enabling Argos’s Playwright reporter. Capture a named page state with argosScreenshot after the page reaches the state you want to compare. Docker standardizes the browser and operating-system environment; it does not make changing page content deterministic or protect a token committed to source control.

What you need before configuring the job

  • A Playwright test project with @playwright/test installed and its version recorded in the project lockfile.
  • An Argos project token, stored in your CI provider’s secret store under the name ARGOS_TOKEN.
  • A way for the browser test to reach the application: start a server in the job or use a deployment preview URL.
  • A CI job that can run in a Docker container. The sample below uses GitHub Actions; other providers have different container and service syntax.

The Playwright Docker image provides browser binaries and operating-system dependencies, not the Playwright package itself. Install the project dependencies in the job, and keep the image’s Playwright version aligned with the project package or the expected browser executable may not be available. See Microsoft Playwright’s Docker documentation.

As an Amazon Associate I earn from qualifying purchases.

Pin a matching Playwright Docker image

Choose an image tag that matches the Playwright version installed by your project. Pinning the tag avoids silently changing the browser environment when the job runs. As of October 3, 2026, the official image page lists v1.63.0 tags including noble and jammy; check the current image tags and your installed package version when adopting or updating this example. The OS-flavor suffix should reflect a project requirement, not be selected arbitrarily.

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

For example, if the project uses Playwright 1.63.0 and has no specific Ubuntu-flavor requirement, the job can use mcr.microsoft.com/playwright:v1.63.0-noble. Do not copy an image tag from an older integration example without checking that it matches your installed package.

Configure GitHub Actions to run the tests

Save the Argos token in the repository or organization’s GitHub Actions secrets as ARGOS_TOKEN. The workflow exposes it only to the test step. Adjust the action version, install command, and test command to match your repository and CI policy.

name: visual-tests
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    container:
      # Keep this Playwright version aligned with @playwright/test in package-lock.json.
      image: mcr.microsoft.com/playwright:v1.63.0-noble
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npx playwright test
        env:
          ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }}

npm ci installs the exact dependency tree described by package-lock.json. If the project uses another package manager, use its lockfile-based install command instead. The job also needs to start the application before tests run, or configure tests to use a reachable preview deployment; merely checking out the test code does not make a local application available.

Enable the Argos reporter and capture a named state

Add the Argos reporter to playwright.config.ts. This configuration keeps a regular Playwright reporter and uploads to Argos only when the CI environment variable is set.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import { defineConfig } from "@playwright/test";

export default defineConfig({
  reporter: [
    process.env.CI ? ["dot"] : ["list"],
    ["@argos-ci/playwright/reporter", { uploadToArgos: !!process.env.CI }],
  ],
});

In the test, navigate and establish the relevant UI state before calling argosScreenshot(page, "name"). Use a stable, descriptive name so the capture represents the same page and state across runs.

import { argosScreenshot } from "@argos-ci/playwright";
import { test } from "@playwright/test";

test("homepage visual", async ({ page }) => {
  await page.goto("http://localhost:3000/");
  await argosScreenshot(page, "homepage");
});

The example URL assumes the application is listening on port 3000 in the test environment. Start that server as part of the job before invoking Playwright, or replace the URL with a reachable preview. Argos describes its helper as waiting for fonts, images, and network idle, and hiding carets and scrollbars. That helps with capture readiness, but the test still needs stable data, deterministic interactions, and appropriate handling of changing content. See the Argos Playwright guide.

Keep the test environment and visual state stable

Control versions and dependencies

Use the same pinned container image for the CI check and any local reproduction, and install dependencies from the committed lockfile. Browser version, operating system, fonts, and antialiasing can affect pixels. For native Playwright snapshots, generate and update baselines in the same Docker environment used in CI to reduce platform-related drift.

Wait for the meaningful application state

Navigate to the intended route, complete the interactions needed to reveal the component, and ensure the relevant data is loaded before capture. If the page includes clocks, rotating content, randomized data, or live values, stabilize or mask those areas as appropriate. Argos’s helper waits for several browser resources, but it cannot make application data deterministic.

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

Protect the token

Keep ARGOS_TOKEN in the CI secret store and pass it through the job environment. Do not commit the token in workflow YAML, test code, or a checked-in environment file. Restrict which workflows can access secrets according to your CI provider’s controls, particularly for contributions from forks.

Docker runtime and security considerations

  • Chromium shared memory: Playwright recommends --ipc=host for Chromium because a container’s default shared-memory allocation can contribute to crashes. How to configure this depends on the CI runner.
  • Process cleanup: Playwright recommends Docker’s --init option to handle PID 1 behavior and reduce zombie-process problems. Use your CI provider’s supported container settings.
  • Root and sandbox: The official image runs as root by default, which disables Chromium’s sandbox. Playwright says this can be acceptable for trusted end-to-end tests. For untrusted browsing or scraping, use a separate user and suitable seccomp configuration.
  • Intended use: Microsoft states that its Playwright image is for testing and development and is not recommended for visiting untrusted websites. See the Docker guidance before adapting it for other workloads.

Choose between Argos and native Playwright snapshots

Both approaches can catch visual changes, but they handle baseline storage and review differently. Argos describes the workflow tradeoffs in its Playwright guide and documentation.

Decision Native Playwright screenshots Playwright captures with Argos
Baseline storage Screenshot files in the Git repository Hosted Argos build associated with Git history
Reviewing and updating Run npx playwright test --update-snapshots in a controlled environment and inspect the changed files Review and approve visual differences through the pull-request workflow
Operational emphasis Keep baseline files and their updates under repository control Upload captures for centralized comparison and review

Whichever workflow you choose, inspect a visual change before accepting it as the new expected result. An incorrect baseline update can make a real regression harder to spot. Check current Argos service terms and plan details separately if they affect your decision.

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

Troubleshooting common failures

Playwright cannot find a browser executable

Check that the Docker image tag and installed @playwright/test version match. Also confirm that the job actually installs the project dependencies; the image supplies browsers and system dependencies, not the package.

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

The page is blank, unreachable, or times out

Confirm that the application server starts before npx playwright test, listens on an address and port reachable from the test process, and remains running for the test. If using a preview URL, verify that the job receives the correct deployment URL and that it is accessible from the runner.

Best Value
Docker Container Linux Devops Programming Coding T-Shirt
  • Docker, Docker Swarm, Docker Compose, Programmer, Developer, Coding, Programming, Software Engineer, Code, DevOps, Deploy, Deployment, Kubernetes, Salt, Puppet, Chef, Terraform, Container, AWS, Azure, Cloud, Geek, Funny, Computer, Software, Tech, IT
  • Integration, Scrum, Compile, Compilation, Science, Bug, Debug, Python, Linux, Java, Javascript, Scala, Dotnet, Kotlin
  • Lightweight, Classic fit, Double-needle sleeve and bottom hem

Argos does not receive captures

Verify that the reporter is present in playwright.config.ts, the test calls argosScreenshot, and ARGOS_TOKEN is available to the workflow. Check that the reporter’s uploadToArgos setting is true for the CI run. Do not print the secret while debugging.

Screenshots differ between local runs and CI

Run the test in the same pinned container locally, if practical. Differences can come from browser or OS versions, fonts, antialiasing, or unstable page content. Keep the image and dependencies fixed, and remove or mask changing UI details where they are not part of the visual check.

Chromium crashes in the container

Review the runner’s memory and shared-memory limits and whether it supports Playwright’s recommended --ipc=host setting. Consider --init where the runner exposes it. The exact configuration is CI-provider-specific.

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.

Or skip the browser setup

If your goal is to capture a website image or PDF rather than run Playwright assertions and Argos pull-request comparisons, ScreenshotNeo offers a screenshot API and MCP server. A single GET request can return a PNG, JPEG, WebP, or PDF; its options include full-page capture, CSS-selector element capture, viewport and device settings, and waiting for a selector, delay, or network idle.

For example, this requests a WebP screenshot of a public URL. See the ScreenshotNeo API documentation for request options and response details.

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

Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.

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.

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

Leave a Reply

Your email address will not be published. Required fields are marked *

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.

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
Crashes, No Sound, or Screen Glitches?Free driver scan
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.