Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Run 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/testinstalled 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.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesFor 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.
#1 Best Overall
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.
Rank #2
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.
Rank #3
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.
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=hostfor 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
--initoption 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.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.
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, 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.
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, andcapture_pdftools 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.
Quick Recap
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.
Recommended Free Tools




