Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Playwright E2E MCP

NPM · PLAYWRIGHT-E2E-MCP

Diagnose and fix failing Playwright tests: traces, verified fixes, flaky/order verdicts, a11y audit.

Available components

82 Trust /100

Last scanned (23 hours ago)

Scores higher than 77% of npm servers

Category Testing and QA

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 4 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to xsignon-secure/E2E). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability71
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2967 tokens (~247/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
  • Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage96
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 87% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 22 Oct 26 +16
    • Stability: 0.03 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Malware scan: unverified → pass ▲ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Security disclosure: fail → pass ▲ functional
    • Package version: 0.4.1 → 0.4.2 functional
  • 21 Oct 26 +11
    • Known CVEs: unverified → pass ▲ security
    • Schema quality: 2565 → 2967 ▼ functional
    • Dependency health: unverified → 1.00 ▲ functional
    • Stability: unverified → 0.03 ▲ functional
    • Package version: 0.3.2 → 0.4.1 functional
    • Package version: 0.3.2 → 0.4.0 functional
  • 20 Oct 26 54

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Oct 2026 · Analysed npm/playwright-e2e-mcp@0.4.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo xsignon-secure/E2E
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/xsignon-secure/E2E/.github/workflows/publish-npm.yml@refs/tags/v0.4.2
Rekor log index 3390839309
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:093f2d22186c032a402c6da960018074c05b74ce14e8ad94ea04f8f3c37597e958216799f1be00b8eff34c70b69edf71d40f19fa089cd750a6901d0fb

Background: How many MCP packages publish verified provenance →

Dependencies 4 packages
Packages resolved 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 12 exposed · ~2,967 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
analyze-history ~121

Analyze the local run history (.playwright-e2e-mcp/history.jsonl, written by every run): 'flaky' ranks tests that flip pass/fail and lists broken or regressed ones; 'patterns' groups failures by cause; 'test' shows one test's timeline.

NameTypeReqDescription
lastRunsinteger–Runs to analyze (default 30)
limitinteger––
projectRootstring––
teststring–Filter: substring of file or title
viewstring–Default 'flaky'

No output schema declared.

No examples provided.

audit-accessibility ~317

Run axe-core on a live page (WCAG 2.2 AA by default) and return violations worst first, each with the offending elements as verified Playwright locators, the fix, and a regression check to paste into a spec. Accepts storageState/headers/actions to audit pages behind a login or after a step.

NameTypeReqDescription
actionsarray–Steps run after load to reach a state (modal, step 3)
headersobject–Extra HTTP headers, e.g. Authorization
minImpactstring–Hide violations below this impact (default: minor, show all)
projectRootstring–Project whose Playwright launches the browser (default: server root)
selectorstring–CSS selector: audit only this part of the page
standardstring–Rule set: WCAG level (default wcag22aa, i.e. 2.0–2.2 A+AA), 'best-practice' adds axe's extra rules, 'all' runs everything
storageStatestring–Logged-in session: storageState JSON inside the project, e.g. playwright/.auth/user.json
timeoutMsinteger–Overall audit limit in ms (default 60000)
urlstringyesFull URL of the page to audit (http/https)
viewportobject––
waitForstring–Wait for this selector first
waitUntilstring–Navigation wait condition (default load)

No output schema declared.

No examples provided.

compare-visual-state ~331

Visual regression check: screenshot a live page (or element), compare it to a stored baseline, and report how many pixels changed, WHERE they changed (bounding regions), and the average color shift ("blue → red"). First call saves the baseline; later calls compare. Writes a red-highlighted diff image for review.

NameTypeReqDescription
actionstring–'baseline' overwrites the stored baseline; 'compare' (default) compares against it
actionsarray–Steps run after load to reach a state (modal, step 3)
fullPageboolean–Capture the full scrollable page (default false)
headersobject–Extra HTTP headers, e.g. Authorization
namestringyesBaseline id, e.g. "checkout-page" or "submit-button"
pixelThresholdinteger–Combined per-pixel channel delta considered different (default 60)
projectRootstring–Project directory; defaults to the server working directory
selectorstring–Capture only this element (selector or locator)
storageStatestring–Logged-in session: storageState JSON inside the project, e.g. playwright/.auth/user.json
timeoutMsinteger––
tolerancenumber–Percent of pixels that may differ before reporting a change (default 0.1)
urlstringyesFull URL of the page (or element target) to capture
viewportobject––
waitForstring–Wait for this selector before capturing
waitUntilstring––

No output schema declared.

No examples provided.

diagnose-flaky ~427

Repeat failing tests with retries disabled and return a per-test, evidence-based verdict: CONSISTENTLY FAILING (real bug), FLAKY (pass/fail counts, error-signature variance, duration spread) or NOT REPRODUCING. Runs all repetitions in one process by default. `isolate: true` also re-runs the failures with one worker to tell parallelism bugs (shared state) from flakiness inside the test; `order: true` (Playwright 1.64+) runs the files in random orders to catch tests that depend on what ran before them. Defaults to the tests that failed in the most recent run.

NameTypeReqDescription
browserstring–Playwright project name to run
configstring–playwright.config path or 1-based index when the project has several configs
headedboolean–Run with a visible browser window
isolateboolean–Also tell parallelism bugs from real flakiness: repeat in parallel (fully parallel, `workers` default 4), then repeat the failing tests with one worker
orderboolean–Also run the target files in `runs` random orders (Playwright 1.64+ --shuffle, one worker) to find tests that depend on what ran before them; returns the seed that reproduces it and the likely culpri…
projectRootstring–Project directory; defaults to the server working directory
runsinteger–How many times to run the tests (default 3)
separateProcessesboolean–Start a fresh Playwright process per run instead of one --repeat-each process (slower; use when the flake depends on global setup or a cold start)
testFilesarray–Tests to diagnose ("file:line" supported). Defaults to the tests that failed in the most recent run.
timeoutMsinteger–Hard wall-clock limit per run (default 120000); one --repeat-each process gets this × runs
workersinteger––

No output schema declared.

No examples provided.

generate-e2e-test ~265

Scaffold a Playwright test from a description using the project's REAL selectors. Scans the agent's recent file changes (git working tree / last commit, mtime fallback), extracts data-testid / role / label / placeholder / id locators with their source locations, optionally cross-checks them against the live page, writes a ready-to-run spec, and returns next steps.

NameTypeReqDescription
configstring–playwright.config path or 1-based index
descriptionstringyesWhat the test should cover, e.g. "login with valid credentials"
filestring–Exact spec path (*.spec.ts / *.test.ts) inside the project instead of the default location
liveInspectboolean–Verify discovered selectors against the live page (default true when a URL is known)
overwriteboolean–Replace an existing spec at the target path (only specs this tool generated)
pageUrlstring–Page the test starts on (default: baseURL from playwright.config)
projectRootstring–Project directory; defaults to the server working directory
testDirstring–Directory for the generated spec (default: detected testDir or tests/)
writeboolean–Write the file to disk (default true)

No output schema declared.

No examples provided.

get-failure ~112

Analyze one failure from the most recent run-test execution: full message and code frame, expected vs actual, stack trace, failed network requests (4xx/5xx and dead endpoints), console errors, failure kind (assertion/timeout/browser-crash/syntax/config/server-unreachable) and concrete next steps. Use run-test first.

NameTypeReqDescription
indexinteger–1-based failure index from the last run (default 1)
projectRootstring–Only used to re-read the stored report

No output schema declared.

No examples provided.

get-run-status ~88

Progress (tests done/total, failures so far) or the final result of a run-test background run; the result becomes the last run for get-failure. waitSeconds waits; cancel stops it. Default: the latest run.

NameTypeReqDescription
cancelboolean––
runIdstring––
waitSecondsinteger–Wait up to this long for it to finish

No output schema declared.

No examples provided.

inspect-page ~308

Open a URL headlessly and return its elements with Playwright locators proven unique on the page (role + name first), CSS selectors, visibility, text and console messages. storageState/headers open it signed in; actions click/fill first to reach a state. view 'locators' is the compact map.

NameTypeReqDescription
actionsarray–Steps run after load to reach a state (modal, step 3)
headersobject–Extra HTTP headers, e.g. Authorization
includeHtmlboolean–Include the rendered HTML (truncated)
maxHtmlCharsinteger–HTML cap when includeHtml is set (default 20000)
projectRootstring–Project whose Playwright launches the browser (default: server root)
selectorstring–CSS selector: inspect matches instead of the whole DOM
storageStatestring–Logged-in session: storageState JSON inside the project, e.g. playwright/.auth/user.json
timeoutMsinteger–Overall inspection limit in ms (default 45000)
urlstringyesFull URL of the page to open (http/https)
viewstring–'locators': compact map of interactive elements (cheapest); 'elements' (default): DOM inventory
viewportobject––
waitForstring–Wait for this selector first
waitUntilstring–Navigation wait condition (default domcontentloaded)

No output schema declared.

No examples provided.

list-tests ~149

List the Playwright tests available in the project (file, line, full title, projects), with optional filtering. Uses `playwright test --list` when Playwright works and falls back to a source scan when the install or config is broken, reporting why.

NameTypeReqDescription
configstring–playwright.config path or 1-based index when the project has several configs
filterstring–Case-insensitive substring filter on "file › title"
limitinteger–Max tests to return (default 500)
projectRootstring–Project directory; defaults to the server working directory
testDirstring–Restrict scanning to this directory (inside the project)

No output schema declared.

No examples provided.

run-test ~375

Run the project's Playwright tests: stats plus each failure's file:line, kind and message. Diagnoses missing installs, dead dev servers, syntax errors, crashes and timeouts (kills the tree, keeps partial results). Reports progress; background: true returns a run id for long suites. Runs are recorded for analyze-history.

NameTypeReqDescription
argsarray–Extra Playwright flags from an allowlist, as --flag or --flag=value (e.g. --repeat-each=3, --shard=1/2, --trace=on)
backgroundboolean–Return a run id at once; poll get-run-status
browserstring–Playwright project name to run (matched against playwright.config projects)
configstring–playwright.config path or 1-based index when the project has several configs
grepstring–Only run tests whose title matches this regex
headedboolean–Run with a visible browser window
lastFailedboolean–Only re-run tests that failed in the previous run (Playwright --last-failed) — the fast fix → re-run loop
projectRootstring–Project directory; defaults to the server working directory
retriesinteger––
retryOnFailureboolean–Auto retry failing tests once before reporting failure (default true; ignored when retries is set)
testFilesarray–Test files/directories relative to the project root; "file:line" is supported. Omit to run the whole suite.
testTimeoutMsinteger–Per-test timeout passed to Playwright
timeoutMsinteger–Hard wall-clock limit for the whole run; the process tree is killed past it (default 120000)
workersinteger––

No output schema declared.

No examples provided.

suggest-fix ~253

Patch a failure from the last run: a drifted locator is matched against the DOM at failure (trace, or live url) and replaced with one proven unique; changed copy gets the new expected text. Returns a diff and confidence; apply: true writes it, re-runs the test and reverts if still red. Refuses when the element is truly missing (app bug).

NameTypeReqDescription
allowExpectationUpdateboolean–Allow applying changed expected text (can hide regressions)
applyboolean–Write the fix (default: diff only)
configstring–playwright.config path or 1-based index
headersobject–Extra HTTP headers, e.g. Authorization
indexinteger–1-based failure index (default 1)
projectRootstring––
storageStatestring–Logged-in session: storageState JSON inside the project, e.g. playwright/.auth/user.json
timeoutMsinteger–Verification run limit (default 120000)
urlstring–Heal against this live page instead of the trace snapshot
verifyboolean–Re-run after applying; revert if still failing (default true)

No output schema declared.

No examples provided.

validate-selector ~221

Check a CSS selector, Playwright selector or locator (getByRole/getByTestId…, .first(), .filter()) on a live page: validity, match count (actions need exactly 1), sample matches and a sturdier verified locator for each. Accepts storageState/headers/actions.

NameTypeReqDescription
actionsarray–Steps run after load to reach a state (modal, step 3)
headersobject–Extra HTTP headers, e.g. Authorization
projectRootstring–Project whose Playwright launches the browser (default: server root)
selectorstringyesSelector or locator, e.g. getByRole('button', { name: 'Save' })
storageStatestring–Logged-in session: storageState JSON inside the project, e.g. playwright/.auth/user.json
timeoutMsinteger–Overall limit in ms (default 45000)
urlstringyesFull URL of the live page to test against (http/https)
viewportobject––

No output schema declared.

No examples provided.

Install

How do I install the Playwright E2E MCP server?

Playwright E2E MCP runs locally as an npm package, launched with npx -y playwright-e2e-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · playwright-e2e-mcp

# add to Claude Code
claude mcp add xsignon-secure-e2e -- npx -y playwright-e2e-mcp
Common questions

What is the Playwright E2E MCP server?

Playwright E2E MCP is listed in the public MCP registry as io.github.xsignon-secure/E2E. Diagnose and fix failing Playwright tests: traces, verified fixes, flaky/order verdicts, a11y audit. This page covers its npm package (playwright-e2e-mcp).

Is the Playwright E2E MCP server safe to use?

Playwright E2E MCP scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Playwright E2E MCP server expose?

Playwright E2E MCP exposes 12 tools: run-test, get-run-status, get-failure, suggest-fix, inspect-page, and 7 more. Their descriptions and schemas cost roughly 2,967 tokens of context every time the server is loaded.

Is the Playwright E2E MCP server still maintained?

Playwright E2E MCP is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Playwright E2E MCP server under?

Playwright E2E MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.