mrkeyoor.com_
Fri 16 Oct 18:53 UTC
Dev Toolsevaluationupdated 07 Oct 2026

playwright review

Playwright is a browser automation framework for testing websites and scripting Chromium, Firefox, and WebKit through one API. It solves the upkeep of separate browser drivers and adds a test runner, automatic waiting, isolated browser sessions, and traces that help explain failures.

+355stars / 7d
Verdict

Our Playwright run installed 619 packages and built successfully, but its full repository test command ended with 202 failures and 15,192 tests unrun after 303 seconds. Use the published package when one team needs serious tests across Chromium, Firefox, and WebKit, especially if traces and role-based locators will save debugging time. Repository contributors should expect a much heavier validation environment than application users.

We ran it

Lab card: what happened when we ran playwrightScreenshot of playwright (playwright.dev)
Install✓ · 30s619 packages · 439 MB
Build✓ · 20s
Tests✗ · 303sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo3110 files~654,969 lines of source · 69 MB · 21 CI workflows · tests dir

Answers from our run

Does playwright build from source?

Dependencies installed in 30 seconds (619 packages), and the build succeeded in 20 seconds. We cloned commit d0fd0f2 into a clean Debian container with 3 CPUs and no project-specific setup.

Do playwright's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does playwright have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use playwright?

Contributors who require a green full suite in a generic Node 22 container: our run reported 202 failed tests, 2 passes, 1 interruption, and 15,192 tests that did not run.

What are the alternatives to playwright?

Cypress, Selenium, Puppeteer. Our Playwright run installed 619 packages and built successfully, but its full repository test command ended with 202 failures and 15,192 tests unrun after 303 seconds.

Setup3/530-second install and 20-second build, but the full suite failed
Docs5/5Clear routes for tests, scripts, agents, traces, and browsers
Community5/597,226 stars, a same-day push, and active issue work
Maturity5/5v1.63.0 spans three engines, though our repo suite failed

Discussed on

  1. hnPlaywright: Automate Chromium, WebKit and Firefox383 points
  2. hnShow HN: Playwright Skill for Claude Code – Less context than playwright-MCP189 points
  3. hnPlaywright Tools for MCP181 points
  4. hnPlaywright for .NET is now stable155 points
  5. hnPlaywright CLI – Open/inspect/emulate pages, generate screenshots, record users134 points

Who it’s for

Web teams that need end-to-end tests across Chromium, Firefox, and WebKit.
Developers automating screenshots, PDFs, scraping, or repeatable browser workflows.
CI owners who want isolated test state and inspectable traces when a browser test fails.
Coding-agent builders who can use Playwright's separate CLI or MCP server alongside the main library.

Who it’s NOT for

Contributors who require a green full suite in a generic Node 22 container: our run reported 202 failed tests, 2 passes, 1 interruption, and 15,192 tests that did not run.
Teams still standardized on Ubuntu 20.04: the v1.63.0 release says that operating system is no longer supported.
Component-testing teams invested in the experimental React, React 17, or Vue packages: v1.63.0 says those packages will no longer be updated and directs users to the stories model.
Small Chromium-only scripts where a 3,110-file monorepo and Playwright Test's cross-engine machinery add more surface than the job needs.
Test groups that cannot budget for browser-specific triage: current reports include a Firefox iframe-context regression and a Linux WebKit redirect assertion.

Setup reality

Our sandbox installed commit d0fd0f2 in 30 seconds, pulling 619 npm packages and using 439 MB. The build passed in 20 seconds. Tests failed after 303 seconds: 202 failed, 2 passed, 1 was interrupted, 15,192 did not run, and 1 error happened outside any test. The npm audit found 0 known vulnerabilities.

A normal application starts with npm init playwright@latest or installs @playwright/test, then downloads the matching browser builds. Local examples need no secret. Authenticated targets still need test accounts or saved storage state, and CI needs a policy for traces, screenshots, videos, and those credentials.

The README supports Linux, macOS, and Windows across Chromium, Firefox, and WebKit. Release v1.63.0 dropped Ubuntu 20.04. Our log tail names three browser-context HAR cases around the interruption, but it does not expose the outside-test error or prove that a system package caused it.

Three browser engines use one test model

Playwright v1.63.0 gives a web team one API for Chromium, Firefox, and WebKit. Its runner adds isolated browser contexts, parallel execution, web-aware assertions, and traces. The same project can also drive ordinary scripts for screenshots, PDFs, and network interception. That shared model is the reason to choose it: a role-based locator learned in one browser still makes sense when the suite moves to the other two.

The promise has limits that matter in release planning. Playwright supplies its own Chromium, Firefox, and WebKit builds across 3 desktop operating systems. A WebKit run is useful engine coverage, but teams with device hardware, operating-system integration, or vendor-browser requirements still need those environments. The README also points Python, Java, and .NET users to official clients, while this 654,969-line repository is centered on Node and TypeScript.

Automatic waiting removes many hand-written sleeps

Playwright v1.63.0 locators act on what a user can identify: a button role, form label, placeholder, or test ID. Assertions retry until their condition passes or times out, and each test gets a fresh browser context. Those choices remove a common source of flaky code, the fixed sleep that happens to work on a laptop and expires under CI load. They also push test authors toward selectors that survive routine markup changes.

Failure evidence is another practical advantage. A trace can retain DOM snapshots, network requests, console messages, screenshots, and the action sequence. Release v1.63.0 added selectable ARIA and screen snapshots plus richer step data for reporters. The HTML report and Trace Viewer give a developer something more useful than a timeout line, although retaining traces and video across retries has an obvious storage cost.

What happened when we ran it

Our sandbox installed commit d0fd0f2 in 30 seconds, adding 619 npm packages and occupying 439 MB on disk. The checkout itself held 3,110 files, roughly 654,969 lines of source, and used 69 MB. The monorepo build then completed successfully in 20 seconds. Npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severity.

The full test command failed after 303 seconds. Its summary recorded 202 failed tests, 2 passes, 1 interrupted test, and 15,192 tests that did not run. One error occurred outside any test. The final named cases were browser-context HAR tests involving routeFromHAR, redirects, fallback behavior, and aborting unmatched requests. The log says the run was interrupted, so the result is clear even though the underlying error is not.

We cannot turn that tail into a diagnosis. It does not say that Node 22, the unprivileged container, a missing browser dependency, or the 8 GB memory limit caused the outside-test error. What we can say is narrower: installation and build worked on 3 CPUs in a fresh Debian container, while the repository's complete test path did not reach a reliable pass.

The 439 MB install is only the starting footprint

The 439 MB application setup is shorter than contributor setup. The README starts test users with npm init playwright@latest, then has them install browser builds. Playwright Test runs headless by default and can reuse saved authentication state. That state needs the same care as a password because it can carry an authenticated session. CI also has to decide which of the 3 engines run on each change and how long to retain failure artifacts.

Repository work is a different commitment. Our checkout had 21 CI workflow files, a tests directory, and npm workspaces, but no Dockerfile. The 619 installed packages did not produce a passing full suite in our generic container. Those 21 workflows cover a broader test setup than the plain npm environment we ran. A new contributor should follow the contribution path and targeted test commands instead of treating that container as a copy of upstream CI.

Same-day code activity comes with 179 open issues and PRs

GitHub showed 97,226 stars and 179 open issues and pull requests on October 7, 2026, and the repository had been pushed that day. Release v1.63.0 arrived on September 4 with test locks, cross-frame locators, reporter changes, and updated browser builds. The combination of a recent release, a same-day push, and newly updated issue threads points to active maintenance rather than a project coasting on its name.

Activity does not make browser differences disappear. Issue 43124 reports a Firefox regression in which a navigated iframe loses its execution context, and issue 43067 reports a Linux WebKit assertion on a cross-site redirect chain. Both were updated on October 6, 2026. These reports are useful buying evidence: the shared API reduces test-code duplication, while browser-specific failures still require someone who can isolate and report them.

Choose Playwright when cross-browser evidence earns the weight

Playwright v1.63.0 is the strongest default in this group for a TypeScript product that treats Chromium, Firefox, and WebKit as release targets. Its 3-engine API, isolated contexts, retrying assertions, and trace viewer solve daily testing problems in one package. The choice is less persuasive for a small Chrome script, a team committed to WebDriver infrastructure, or a component suite tied to the experimental packages that this release stopped updating.

The lab result changes how we would adopt it. Start with the published test package and a small journey through the application, then add browsers and CI projects deliberately. Contributors face the 3,110-file repository and a full suite that left 15,192 tests unrun in our sandbox. Playwright saves browser-test engineering time, but its own source tree asks for a serious browser lab.

Alternatives

ProjectWhat it isPick it when
Cypress gh↗A browser-centered test runner with an interactive debugging interface.pick this instead when the in-browser authoring and debugging loop matters more than Playwright's WebKit coverage.
Selenium gh↗The established WebDriver project with several language bindings and remote-grid support.pick this instead when WebDriver infrastructure, real Safari sessions, or an existing Selenium Grid decides the stack.
Puppeteer gh↗A JavaScript library for direct browser automation without Playwright Test's full runner.pick this instead when a focused Chrome or Firefox script is the whole job.

Sources

  1. Playwright README
  2. Playwright repository facts and activity
  3. Playwright v1.63.0 release notes
  4. Firefox iframe execution-context regression
  5. Linux WebKit redirect assertion report
  6. Cypress repository
  7. Selenium repository
  8. Puppeteer repository

More dev tools reviews

compose-samples · librepods · sqlmap · coucou · world-execute-me-dsh-pv · mcp-extensions · the whole board →