Add visual assertions to your Playwright tests, then run those tests in a GitHub Actions job that installs the project and browser dependencies and saves the report as an artifact. Playwright creates screenshot baselines on the first run; review and commit approved baselines so later CI runs can detect unintended visual changes.
1. Add screenshot assertions to Playwright tests
Use Playwright Test’s toHaveScreenshot() assertion where you want a visual check. For example, add an assertion to an existing test after the page reaches the state you intend to compare:
import { test, expect } from '@playwright/test';
test('home page visual appearance', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveScreenshot('home-page.png');
});
On the first execution, Playwright creates a reference screenshot. Subsequent executions compare the current screenshot with that reference. Review the generated baseline, and commit only approved changes through your normal code-review process. Do not have ordinary pull-request CI automatically accept changed screenshots as new baselines; that would remove the regression check.
See Playwright’s snapshot documentation for assertion options and baseline behavior.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
2. Add a GitHub Actions workflow
Create .github/workflows/visual-tests.yml in the repository. This example runs on pushes to main and pull requests:
name: Playwright visual tests
on:
pull_request:
push:
branches: [main]
jobs:
visual-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@<reviewed-version>
- uses: actions/setup-node@<reviewed-version>
with:
node-version: <project-version>
- run: npm ci
- run: npx playwright install --with-deps
- run: npx playwright test
- uses: actions/upload-artifact@<reviewed-version>
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30
Replace each action-version placeholder with a version reviewed for your repository, and replace the Node placeholder with a version supported by your project and current Playwright requirements. The official Playwright CI example includes checkout, Node setup, dependency installation, browser installation, test execution, and report upload; its 30-day artifact retention is an example, not a requirement. Choose the retention period that fits your repository’s needs. See Playwright’s CI guide and Playwright’s test introduction.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
What each step does
actions/checkoutmakes the repository available to the job.actions/setup-nodeselects the Node.js runtime for the project.npm ciinstalls the dependency versions recorded in the lockfile.npx playwright install --with-depsinstalls Playwright browsers and the required operating-system dependencies.npx playwright testruns the test suite, including the screenshot assertions.actions/upload-artifactpreserves the HTML report for review after execution. The!cancelled()condition allows the upload step to run after a failure, while still skipping a cancelled run.
3. Make screenshot comparisons reproducible
Visual tests can change when their capture environment changes. Playwright recommends using a consistent environment for screenshot comparisons; a container is one documented way to achieve that consistency. Keep the browser version, operating-system libraries, fonts, viewport, and relevant test data stable where practical. If a change to any of these is intentional, assess whether the resulting baseline update is expected before committing it.
Baseline changes belong in code review: inspect the actual visual difference, decide whether it is an intended design change, and update the reference only when approved. This separates legitimate UI updates from accidental regressions and makes the pull request’s visual change explicit.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
4. Inspect a failed run
- Open the failed GitHub Actions run and identify the failing screenshot assertion in the test output.
- Download or open the
playwright-reportartifact from the run’s summary, if it was uploaded. - Review the report and test results to understand which assertion failed and whether the difference is expected.
- If the UI change is approved, update the relevant baseline locally using Playwright’s documented workflow, inspect the changed image, and commit the baseline with the code change.
Playwright’s CI materials describe inspecting test logs, reports, and traces. Saving the report as an artifact gives reviewers a place to examine the run after the job ends.
5. Choose native snapshots or hosted visual review
Playwright’s built-in snapshots are a direct fit when you want screenshot assertions and reference files managed alongside the test project. Hosted visual-review services may fit teams that want a different review workflow; their integrations are separate choices, not prerequisites for GitHub Actions.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
- Playwright-native snapshots: Use
toHaveScreenshot()and repository-managed reference images when code review and baseline updates belong in the same project. - Percy: Its Playwright integration documents snapshot workflows and an optional reporter gate that can fail on changes. See Percy’s Playwright integration.
- Chromatic: Its documentation provides a GitHub Actions workflow for visual tests and publishing Storybook. See Chromatic’s GitHub Actions guide.
Choose based on how your team wants to manage baselines, review changes, gate CI, and handle the runtime and repository complexity. These integration documents establish capabilities, not current pricing or universal suitability.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.6. Use ScreenshotNeo when a test needs a captured page
For a page-capture step that does not need to be part of Playwright’s own screenshot assertions, ScreenshotNeo is a screenshot API and MCP server for developers. It can return a PNG, JPEG, WebP, or PDF from one GET request. This is separate from Playwright baseline comparison: use Playwright’s assertions for the workflow above, and use the API when you specifically need a clean page capture.
Recommended Free Tools
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Or skip the browser setup
With an API key, request a screenshot directly. 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 and consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each of those steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers indicate the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents and other MCP clients. The Free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
Quick Recap
7. Troubleshoot common failures
- Browser or operating-system dependencies are missing: Confirm the workflow runs
npx playwright install --with-depsafter installing project dependencies, and check the job log for the failing installation step. - The first run reports a new screenshot: This is expected when creating a baseline. Review the generated image and commit it only if it represents the approved appearance.
- A comparison fails after a change: Inspect the actual and expected images and verify the capture environment, viewport, fonts, and test data are stable before deciding whether to update the baseline.
- The report is unavailable after a failure: Check that tests generate the configured
playwright-report/directory and that the upload step points to that path. Keep the upload condition so it runs after failed tests, and check the run summary for artifact-upload errors. - Different environments produce inconsistent results: Standardize the browser and operating-system environment, or use a consistent container, rather than accepting baselines from whichever environment happened to run last.
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.
Free tools Windows power users keep installed
One-click scans. No signup required.

