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.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Use Playwright Test projects to run one suite against Chromium, Firefox and WebKit, then add device profiles or branded Chrome and Edge channels where your product requires them. Install @playwright/test, download the matching browser binaries, and run every project locally and in CI. Treat WebKit as Safari-adjacent rather than Safari itself: Playwright cannot drive the branded Safari application, and macOS runs are the closest check for platform-sensitive behavior.

How Playwright models cross-browser coverage

Playwright puts each browser target in a named project. A project combines a browser engine or channel with settings such as viewport, device emulation, user agent, permissions and retries. One test file can therefore run unchanged across several environments.

The standard engines are Chromium, Firefox and WebKit. You can also define projects for branded Google Chrome or Microsoft Edge by selecting an installed browser channel. Playwright normally uses its own Chromium build; Chrome and Edge are not downloaded by Playwright by default. Playwright uses patched builds for Firefox and WebKit, not the branded Firefox or Safari applications.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Project target What it represents Important qualification
Chromium Playwright’s open-source Chromium build Useful for Chromium-engine coverage; add a Chrome channel when the branded browser matters.
Firefox Playwright’s patched Firefox build The branded Firefox binary is not supported.
WebKit WebKit sources patched for Playwright It is not the branded Safari app.
Google Chrome channel An installed branded Chrome release Chrome must already be installed on the runner.
Microsoft Edge channel An installed branded Edge release Edge must already be installed on the runner.

Install Playwright and its browsers

  1. Add Playwright Test.
    npm i -D @playwright/test

    For end-to-end tests, the Playwright documentation recommends @playwright/test rather than using the lower-level playwright library directly.

  2. Download browser binaries.
    npx playwright install

    This installs the engines needed by your Playwright version. To keep a smaller environment, install only the engines used by your matrix, such as npx playwright install chromium firefox webkit. The documentation also describes browser-specific packages when downloads should occur during npm installation.

  3. Verify the installation.
    npx playwright test

    If a browser executable is missing, rerun the install command with the same Playwright package version used by the project.

Each Playwright release expects specific browser-binary versions. Updating the npm package without rerunning browser installation can leave a runner with incompatible or missing binaries.

Create projects for Chromium, Firefox and WebKit

Put the projects in playwright.config.ts. This example runs the same test suite in all three engines and adds optional mobile profiles.

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },
    {
      name: 'mobile-chrome',
      use: { ...devices['Pixel 5'] },
    },
    {
      name: 'mobile-safari',
      use: { ...devices['iPhone 13'] },
    },
    {
      name: 'chrome-branded',
      use: { channel: 'chrome' },
    },
    {
      name: 'edge-branded',
      use: { channel: 'msedge' },
    },
  ],
});

Keep only the projects your release decision requires. Every configured project runs when you invoke npx playwright test without a project filter. Branded-channel projects require Chrome or Edge to be installed on the machine; they are not supplied by the normal Playwright browser download.

Run one browser while debugging

Isolate a project with its exact name:

npx playwright test --project=firefox

Use the same form for chromium, webkit, a device project or a branded channel. This shortens feedback while you diagnose a browser-specific failure, without changing the test code.

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

Does Playwright test real Safari?

No. Playwright’s WebKit build comes from WebKit sources and is patched so Playwright can control it; it is not the branded Safari application. Playwright’s documentation explicitly says it does not work with branded Safari because Safari relies on patches that Playwright cannot apply.

WebKit is still valuable for detecting many engine-level compatibility problems. Do not treat a Linux WebKit pass as proof that macOS Safari will behave identically, however. Operating-system differences can affect media codecs and other platform-dependent features.

When to add macOS coverage

Use macOS WebKit runs when Safari-like behavior or platform-sensitive media features are important. A practical matrix is to run the fast Chromium, Firefox and WebKit projects on your normal CI operating system, then schedule macOS WebKit coverage for releases that touch video, audio, graphics, file handling or other OS-integrated behavior. Label the result accurately as a macOS WebKit check, not as automation of the Safari app.

Device profiles, viewports and branded channels

Browser engine coverage and device coverage answer different questions. Device descriptors change viewport, user agent, device scale factor, touch support and other emulated characteristics; they do not create a new browser engine. Add a mobile profile when responsive layout or touch interactions are part of the acceptance criteria.

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

Use a branded Chrome or Edge channel when a defect could depend on the vendor build rather than generic Chromium. Keep the channel project separate so a failure identifies the exact browser target instead of being mixed with the standard Chromium result.

Run the matrix reliably in CI

Provide browser dependencies

CI runners need both the Playwright package and operating-system libraries required by the browsers. You can start from the official Playwright Docker image, or install dependencies during the job:

npx playwright install --with-deps

Use the Docker image when you want a prebuilt, repeatable environment. Use the CLI option when your CI image is managed separately and can install system packages.

Select projects with a CI matrix

For a small suite, one job can run every project. For faster feedback, create CI jobs for selected project names and run them in parallel. The command in each job can be explicit:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx playwright test --project=chromium
npx playwright test --project=firefox
npx playwright test --project=webkit

A matrix makes failures attributable to a browser while allowing the jobs to finish independently. Add macOS as a separate runner when Safari-adjacent or media behavior warrants it.

Rank #4
The Web Testing Handbook
  • Used Book in Good Condition

Shard large suites

Playwright supports sharding, which divides a project’s tests across workers or CI jobs. Combine a project matrix with shards only after confirming that your tests do not depend on execution order or shared state. Each shard still needs the same browser binaries and dependencies.

Cache browser downloads carefully

Caching can avoid repeated downloads, but the cache key should include the Playwright version. Browser binaries move with Playwright releases; invalidate the cache when you update the package and run browser installation again. A stale cache is a common cause of launch errors after an upgrade.

Keep cross-browser tests maintainable

  • Use stable, user-facing locators such as roles, labels and test IDs instead of CSS that depends on browser-specific markup.
  • Wait on observable application state, not arbitrary sleeps, so timing differences between engines do not become false failures.
  • Record the project name, operating system and Playwright version in CI artifacts.
  • Keep browser-specific workarounds inside a narrowly named project or helper and document why it exists.
  • Update @playwright/test and rerun npx playwright install together.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Diagnose common failures

“Executable doesn’t exist” or browser launch errors

Install the engines for the package version on that runner with npx playwright install, or use --with-deps on Linux when system libraries are missing. Check that a cache has not restored binaries from another Playwright version.

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

A test fails only in WebKit

First decide whether it is an engine difference, a timing assumption or an operating-system issue. Reproduce with npx playwright test --project=webkit, inspect the trace, and then repeat on macOS if the feature involves codecs or other platform services.

A Chrome or Edge project cannot launch

Confirm that the branded browser is installed on the runner and that the channel name in the project is correct. A regular Playwright install supplies Chromium, not the branded Chrome or Edge application.

Parallel CI jobs interfere with one another

Ensure each worker has isolated test data and independent browser context state. If the suite is large, shard it after removing shared state rather than relying on retries to hide ordering problems.

Or skip the browser setup

If you only need a clean visual capture of a URL rather than an interactive assertion suite, ScreenshotNeo provides a single screenshot request. Its cleanup steps accept cookie or consent banners and remove more than 60 known consent platforms, newsletter popups and chat widgets before capture; each step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and the response identifies the page verdict and billing status in headers.

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

For the API parameters and all capture options, see the ScreenshotNeo 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 also has an MCP server with 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 shots. Create a free ScreenshotNeo account.

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.