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.

Add a YAML file under .github/workflows that checks out your code, installs the locked Node.js dependencies, installs Playwright browsers and Linux packages, runs the tests, and uploads the HTML report. The workflow below is a practical npm baseline; change its Node version, branch names, package-manager commands, and action versions to match your repository.

Before you create the workflow

Confirm that the repository already contains a Playwright project. A typical project has a Playwright configuration file such as playwright.config.ts or playwright.config.js, tests, and a package script or command that runs Playwright. If the project is new, the Playwright installer can scaffold the configuration, example tests, package files, and optionally a GitHub Actions workflow. Treat generated YAML as a starting point: review its triggers, runtime version, and artifact policy before committing it.

Check the local test command

Run the same command locally that CI will run. The documented direct command is npx playwright test. If your package.json defines a test script, you can use npm test or a project-specific script instead, but make sure it exits nonzero when a test fails.

Check the package manager

The example below uses npm and a committed package-lock.json. For Yarn, pnpm, or another manager, replace the install step with that manager’s frozen or locked install command and commit the corresponding lockfile. Do not use an unlocked install in CI when reproducibility matters.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
CanaKit Raspberry Pi 5 Starter Kit PRO - Turbine Black (128GB Edition) (8GB RAM)
  • Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
  • Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
  • CanaKit Turbine Black Case for the Raspberry Pi 5
  • CanaKit Low Noise Bearing System Fan
  • Mega Heat Sink - Black Anodized

Create .github/workflows/playwright.yml

Save this file in the repository. The sample runs for pushes and pull requests targeting main or master, uses a hosted Ubuntu runner, runs one worker for predictable CI behavior, and stores the generated HTML report even when tests fail.

name: Playwright tests

on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]

jobs:
  test:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    env:
      CI: true
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm

      - name: Install dependencies
        run: npm ci

      - name: Install Playwright browsers and OS dependencies
        run: npx playwright install --with-deps

      - name: Run Playwright 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: 14

Adjust the trigger branches

Replace main and master with the branches used by your repository. Add other branch patterns only when you intentionally want those pushes or pull requests to consume runner time. You can also add a manual trigger with workflow_dispatch: if maintainers need to start a run from the Actions tab.

Choose a Node.js version

Set node-version to a version supported by your application and Playwright dependencies. Keep the value consistent with local development and any other CI jobs. Action major versions can change over time; verify the currently supported versions when you copy this file into a long-lived project.

Understand each required step

  • Checkout: downloads the commit that triggered the run.
  • Setup Node: installs the requested runtime and, with npm caching enabled, can reuse package-manager data.
  • npm ci: installs exactly what the lockfile specifies and fails when the lockfile and manifest disagree.
  • npx playwright install --with-deps: downloads the browser binaries and installs required Linux system packages on the hosted runner.
  • npx playwright test: runs the suite and returns the test result to GitHub Actions. A failing test therefore fails the job.
  • Artifact upload: makes the playwright-report/ directory downloadable from the workflow run.

Commit, run, and inspect the result

  1. Commit the workflow and push it to the branch that matches your trigger.
  2. Open the repository’s Actions tab and select the workflow run.
  3. Expand each step to inspect installation and test logs. A red test step means the command returned a failure status.
  4. When the run finishes, open its Artifacts area and download playwright-report.
  5. Serve the downloaded report through a local web server when necessary; opening the HTML file directly may not provide the report’s expected behavior.

Reports, traces, screenshots, videos, and logs can contain credentials, access tokens, staging data, test source, or application source. Keep artifacts private, use a retention period appropriate to your risk, and share them only through trusted storage. Be especially careful with workflows triggered by pull requests from forks: repository secrets are not available to those runs, so do not add secret-dependent publishing steps without understanding that security boundary.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
  • Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
  • Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
  • CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
  • CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
  • CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)

Make CI stable before making it fast

Use one worker by default

Playwright’s CI guidance recommends setting workers to 1 to prioritize stability and reproducibility. You can set this in the Playwright configuration, for example with a CI-specific conditional, or pass an equivalent command-line option if your project uses one. One worker reduces contention for CPU, memory, test data, and shared services.

Scale large suites with sharding

When a single job takes too long, distribute tests across multiple jobs with Playwright sharding. Each job runs a different shard, and the workflow needs a matrix or equivalent job fan-out. Sharding adds setup complexity and requires a later step if you want one combined report, but it scales more predictably than simply increasing workers on a constrained runner.

Do not assume browser caching is faster

Playwright notes that restoring cached browser binaries can take about as long as downloading them, and Linux system dependencies cannot be cached in the same way. The default download path is therefore reasonable. If you still cache browser binaries, key the cache to the installed Playwright version so an upgrade cannot silently reuse incompatible browsers.

Consider a container for a controlled environment

Installing browsers and dependencies on the runner is the documented baseline. A Playwright container image is an alternative when you need a tightly controlled operating-system environment or want to avoid modifying the host. Weigh image-download time, image maintenance, and compatibility with your repository’s build steps before switching.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
ELECROW CrowPi Case Kit for Raspberry Pi 5, 9-Inch Display
  • Not including the Raspberry Pi 5 (8GB), the Crowpi advanced version comes with the Raspberry Pi 5
  • ELECROW Black Case for the Raspberry Pi 5, CrowPi is equipped with a 9-inch HD touchscreen along with a camera; All the regular components used in DIY electronics are packed into the CrowPi development board, such as LCD, LED matrix, buzzer, light sensor, PIR sensor, ultrasonic sensor, IR sensor, etc
  • Raspberry Pi Sensors: The Crowpi raspberry pi 5 programming kit is jam-packed with lots of buttons such as 19 different sensors in a tidy easy to use package; You don't have to wait and wire things
  • Build Quality: Solid ABS shell and well made components in one place make it strong and convenient to travel
  • Programming Lessons: This raspberry pi 5 learning kit ships with step by step instructions and provides 21 lessons to take you through identifying components reading code and running it in the terminal

Adapt the workflow to common repository layouts

Tests need a running web server

If your configuration starts a development server through Playwright’s web-server setting, keep that configuration in the repository and let npx playwright test start it. If the application must be built first, add a separate build step before the test command and ensure the server command used by the configuration listens on the expected host and port.

Use a package script

A package script can centralize flags and project-specific setup:

{
  "scripts": {
    "test:e2e": "playwright test"
  }
}

In that case, replace the run step with npm run test:e2e. Keep the browser-install step separate so a missing browser produces a clear CI error.

Use another lockfile

For pnpm, enable the matching package-manager version and run its frozen-lockfile install. For Yarn, use the repository’s configured immutable or frozen install mode. The invariant is that CI installs from a committed lockfile before running Playwright; the exact command depends on the project.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
CanaKit Raspberry Pi 5 Desktop PC with SSD (Fully Assembled) (256 GB SSD)
  • Fully assembled for plug-and-play operation
  • Includes Raspberry Pi 5 with 8GB RAM
  • 256 GB PCIe Pi NVMe SSD (Pre-loaded with Pi 64-Bit OS)
  • M.2 HAT+
  • CanaKit Turbine Black Case for the Pi 5

Troubleshoot failed runs

“Executable doesn’t exist” or browser launch errors

The browser binaries are missing or incompatible with the installed Playwright package. Ensure npx playwright install --with-deps runs after dependency installation. If the failure persists, confirm that the workflow is using the same Playwright version declared in the lockfile and that a custom browser path is not overriding the downloaded location.

Linux shared-library or dependency errors

Use the --with-deps option on a supported Ubuntu hosted runner. If you changed the runner image or use a self-hosted machine, install the operating-system packages required by the browsers and verify that the runner user can launch them.

Tests pass locally but fail in Actions

  • Check environment variables, base URLs, credentials, and service startup timing.
  • Look for tests that depend on local time, timezone, filesystem paths, or a developer’s browser profile.
  • Run with one worker and inspect traces, screenshots, and videos from the report.
  • Confirm that the CI Node.js version matches a supported version for the project.

Browser launch needs more diagnostics

Run the test command with Playwright’s browser debugging output enabled:

DEBUG=pw:browser npx playwright test

Use the resulting logs to distinguish a missing executable, a sandbox or permission issue, a dependency failure, or a crash during startup.

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.
Best Value
RasTech Raspberry Pi 5 8GB Kit with Active Cooler and Pi5 Case
  • 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
  • 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
  • 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
  • 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
  • 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.

The report is missing

Check that the reporter writes to playwright-report/, that the upload step uses if: ${{ !cancelled() }}, and that the path is relative to the repository workspace. This condition uploads the report after a test failure while avoiding an upload after cancellation. If no report was generated, inspect the test command and reporter configuration rather than changing the artifact path blindly.

The workflow never starts

Compare the pushed or pull-request branch with the branches under on. Also verify that the file is exactly under .github/workflows and has valid YAML indentation. A workflow that only lists pull-request triggers will not run for an ordinary push unless a push trigger is also present.

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

Or skip the browser setup

If your goal is a clean image or PDF of a deployed page rather than running browser tests, ScreenshotNeo provides a one-request website screenshot API. It accepts cookie and consent banners before capture, removes more than 60 known consent platforms plus newsletter popups and chat widgets, and bills only clean shots; bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. Responses identify the result with X-Page-Verdict and X-Billed headers.

It also includes an MCP server for Claude, Cursor, and other MCP clients, with take_screenshot, get_page_info, and capture_pdf tools. Every plan includes the features, and the Free plan provides 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

For request parameters and the other capture options, see the ScreenshotNeo documentation. You can sign up for the free 1,000-shot plan without a card.

Useful decisions at a glance

Decision Baseline When to change it
Runner setup Ubuntu hosted runner with CLI browser installation Use a container when a controlled environment outweighs image and maintenance costs
Workers One worker in CI Use sharding or carefully sized parallelism for a large suite
Browser binaries Download each run Cache only after measuring restore time; key by Playwright version
Reports Private workflow artifact Publish externally only with deliberate access control and secret handling

Frequently Asked Questions

Which file extension should the workflow use?

Use a YAML file ending in .yml or .yaml inside .github/workflows; Playwright’s example uses playwright.yml.

Can a forked pull request use repository secrets?

Do not assume so. Pull requests from forks have restricted secret access, so secret-dependent publishing or deployment steps require a separate, carefully designed security model.

How long should Playwright artifacts be retained?

Choose a retention period based on debugging needs and the sensitivity of the report. The example uses 14 days; change it to match your team’s policy.

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

Quick Recap

Bestseller No. 1
CanaKit Raspberry Pi 5 Starter Kit PRO - Turbine Black (128GB Edition) (8GB RAM)
CanaKit Raspberry Pi 5 Starter Kit PRO - Turbine Black (128GB Edition) (8GB RAM)
Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM); CanaKit Turbine Black Case for the Raspberry Pi 5
$259.95
Bestseller No. 2
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM); Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
$159.99
Bestseller No. 4
CanaKit Raspberry Pi 5 Desktop PC with SSD (Fully Assembled) (256 GB SSD)
CanaKit Raspberry Pi 5 Desktop PC with SSD (Fully Assembled) (256 GB SSD)
Fully assembled for plug-and-play operation; Includes Raspberry Pi 5 with 8GB RAM; 256 GB PCIe Pi NVMe SSD (Pre-loaded with Pi 64-Bit OS)
$339.97

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.