The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Connect visual tests to GitHub pull requests with a workflow in .github/workflows that installs your dependencies and browsers, runs the screenshot suite, and saves its report as an artifact. The key decision is whether a changed screenshot should fail the check automatically or wait for human review.
Choose how you want to compare screenshots
Start by matching the approach to what you test and how you want people to review changes. Native Playwright screenshot assertions keep comparison in your existing test suite. Hosted services add a visual-review interface and pull-request integration.
| Approach | Best fit | What to plan for |
|---|---|---|
| Playwright screenshot assertions in GitHub Actions | Teams that want screenshot comparison in their browser tests. | You own the workflow and baseline lifecycle. Keep the rendering environment stable and retain reports and failure artifacts. See Playwright CI documentation. |
| Chromatic with GitHub Actions | Storybook-centered teams, or teams using Chromatic’s Playwright integration for end-to-end snapshots. | Store the project token as a repository secret. Builds can report status to linked pull requests, and the hosted interface supports visual review. See Chromatic GitHub Actions, Chromatic for Playwright, and Chromatic CI. |
| Percy with Playwright | Teams that want to send Playwright snapshots to hosted Percy review. | Use the Percy CLI with a project token, or check the documented screenshot-assertion integration and its version requirements. See Percy Playwright client. |
Compare options by framework fit, baseline ownership, review process, control over browsers and environments, merge gating, and configuration. The cited integration documentation does not establish comparable pricing.
Set up native Playwright visual tests in GitHub Actions
GitHub Actions runs workflows defined as YAML files in .github/workflows. A pull_request trigger gives contributors feedback on proposed changes; you can add a push trigger for runs after changes land. GitHub describes Actions as a CI/CD platform for automating build, test, and deployment pipelines in its GitHub Actions overview.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →1. Add a screenshot assertion
For a page-level check, use Playwright’s screenshot assertion in a test file, for example tests/homepage.spec.ts:
import { test, expect } from '@playwright/test';
test('homepage matches its visual baseline', async ({ page }) => {
await page.goto('https://example.com');
await expect(page).toHaveScreenshot('homepage.png');
});
Use a stable test URL and ensure the page is in the intended state before capturing it. On the first run, Playwright may need to create a baseline; review and commit that expected image through your normal code-review process. A later difference will be compared against the stored baseline.
2. Create the workflow
Save this as .github/workflows/visual-tests.yml. It follows Playwright’s documented CI sequence: check out the code, install Node dependencies, install browsers and system dependencies, run tests, and upload the HTML report.
name: Visual tests
on:
pull_request:
push:
branches:
- main
jobs:
visual-tests:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps
- name: Run visual tests
run: npx playwright test
- name: Upload Playwright report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/
retention-days: 30
Use the dependency installation command appropriate to your project and lockfile. The example uses the official workflow action tags shown in the Playwright CI documentation; choose and maintain action versions under your team’s security and update policy rather than assuming a tag is immutable.
3. Keep the baseline and CI rendering environment aligned
Visual diffs can come from environment drift, not just a UI change. Keep the operating system, browser build, fonts, viewport, and test data controlled between baseline generation and CI. Playwright discusses containers as a way to avoid polluting the host environment with dependencies and to create a consistent screenshot-testing environment across operating systems in its CI documentation.
If tests run locally in one environment and in CI in another, consider generating or updating baselines in the same environment used by CI, or running CI in a pinned container. Ensure the page’s data and state are deterministic so unrelated content changes do not create noise.
4. Inspect failed runs
When a screenshot assertion fails, open the workflow run and download the playwright-report artifact. The example retains it for 30 days; adjust that period to suit your debugging and compliance needs. Configure Playwright’s reporter and output paths to match the files you want to preserve, such as HTML reports, screenshots, and failure output.
Connect hosted visual review to pull requests
Chromatic
For a Storybook project, follow Chromatic’s GitHub Actions setup and place the project token in a GitHub repository secret rather than in the workflow file or source code. Chromatic also documents Playwright integration for end-to-end states; its documentation says the integration extends Playwright’s test and expect utilities. Check its CI behavior documentation when deciding how builds report status and how exit behavior interacts with enabled features and configuration.
Percy
For Playwright snapshots sent to hosted Percy review, consult the Percy Playwright client documentation for its CLI and token setup. Percy documents an optional fail-on-changes gate for its drop-in reporter; decide whether to enable it based on your review policy.
Rank #4
Choose what blocks a merge
Before enabling a required status check, agree on what a visual change means for contributors. A useful policy distinguishes an unexpected regression from an intentional redesign, and explains who reviews and approves updated baselines or hosted diffs.
- Fail immediately: use when an unexpected difference should stop the pull request until the test or baseline is corrected.
- Review before approval: use when visual changes are expected but need a person to inspect the diff before merging.
- Informational result: use while introducing the suite or calibrating noisy tests, with a plan for whether and when it becomes a required check.
Hosted tools may expose pull-request statuses and configurable CI behavior; verify the specific settings for the integration you choose. Make the policy visible in contributor documentation so an intentional screenshot update is not mistaken for a broken test.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Troubleshoot common failures
- Browser executable or system dependency is missing: ensure the workflow installs the browser binaries and operating-system dependencies before the test command; for Playwright, the example uses
npx playwright install --with-deps. - Tests pass locally but screenshots differ in CI: compare operating system, browser version, fonts, viewport, and test data. Align baseline generation with CI or use a consistent container.
- Workflow cannot find the report: check the reporter output directory and make the artifact path match it. Keep the artifact upload after the test step and use a condition that still runs when tests fail.
- Hosted service rejects authentication: confirm the project token is present as a GitHub secret and that the workflow references the correct secret name. Do not commit tokens to the repository.
- A visual change does not fail the check: inspect the tool’s CI configuration, enabled features, and gating settings. Some integrations make exit behavior conditional; turn on the intended fail-on-change or required-status behavior.
- Pull-request status is missing: verify the repository is linked to the hosted project and that the relevant workflow is running for the pull-request event.
Or skip the browser setup
If your immediate need is a screenshot from a URL rather than a repository-managed visual regression suite, ScreenshotNeo offers a one-request screenshot API and an MCP server. It is not a replacement for comparing committed Playwright baselines in GitHub Actions.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC 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 & 11Best Value
For a direct capture, see the ScreenshotNeo API documentation:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses 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 ScreenshotNeo’s free plan to try 1,000 screenshots a month without a 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.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems




