playwright-e2e-mcp 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -9
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -67,7 +67,7 @@ and every other MCP client — pick whichever route fits:
|
|
|
67
67
|
| --- | --- |
|
|
68
68
|
| **npm (canonical, fastest)** | `npx -y playwright-e2e-mcp` |
|
|
69
69
|
| **MCP Registry** (registry-aware clients discover it automatically) | `io.github.trajectiq-ai/E2E` — [listing](https://registry.modelcontextprotocol.io/) |
|
|
70
|
-
| **Any client, no npm account needed** | `npx -y github:trajectiq-ai/E2E#v0.2.
|
|
70
|
+
| **Any client, no npm account needed** | `npx -y github:trajectiq-ai/E2E#v0.2.2` (pin a release tag) |
|
|
71
71
|
| **Claude Desktop, zero Node setup** | double-click the [`.mcpb` extension](https://github.com/trajectiq-ai/E2E/releases) |
|
|
72
72
|
| **Remote-only clients (ChatGPT connectors)** | `https://playwright-e2e-mcp.vercel.app/api/mcp` |
|
|
73
73
|
|
|
@@ -370,8 +370,8 @@ builds `dist/` automatically on install). Pin a release tag: an unpinned
|
|
|
370
370
|
`github:trajectiq-ai/E2E` runs whatever is on the default branch at that moment.
|
|
371
371
|
|
|
372
372
|
```bash
|
|
373
|
-
npx -y github:trajectiq-ai/E2E#v0.2.
|
|
374
|
-
npm install -D github:trajectiq-ai/E2E#v0.2.
|
|
373
|
+
npx -y github:trajectiq-ai/E2E#v0.2.2
|
|
374
|
+
npm install -D github:trajectiq-ai/E2E#v0.2.2 @playwright/test # or as a project dependency
|
|
375
375
|
npx playwright install chromium
|
|
376
376
|
```
|
|
377
377
|
|
|
@@ -379,7 +379,7 @@ Or grab the packaged tarball from the repo's **GitHub Releases** page and instal
|
|
|
379
379
|
it locally:
|
|
380
380
|
|
|
381
381
|
```bash
|
|
382
|
-
npm install -D https://github.com/trajectiq-ai/E2E/releases/download/v0.2.
|
|
382
|
+
npm install -D https://github.com/trajectiq-ai/E2E/releases/download/v0.2.2/playwright-e2e-mcp-0.2.2.tgz
|
|
383
383
|
```
|
|
384
384
|
|
|
385
385
|
Listed in the **official [MCP Registry](https://registry.modelcontextprotocol.io/)** as
|
|
@@ -395,7 +395,7 @@ Listed in the **official [MCP Registry](https://registry.modelcontextprotocol.io
|
|
|
395
395
|
"mcpServers": {
|
|
396
396
|
"playwright-e2e": {
|
|
397
397
|
"command": "npx",
|
|
398
|
-
"args": ["-y", "github:trajectiq-ai/E2E#v0.2.
|
|
398
|
+
"args": ["-y", "github:trajectiq-ai/E2E#v0.2.2"],
|
|
399
399
|
"env": { "PW_MCP_PROJECT_ROOT": "/absolute/path/to/your/project" }
|
|
400
400
|
}
|
|
401
401
|
}
|
|
@@ -409,8 +409,8 @@ when the client launches it somewhere else (e.g. your home directory).
|
|
|
409
409
|
**Codex / VS Code / Copilot CLIs:**
|
|
410
410
|
|
|
411
411
|
```bash
|
|
412
|
-
codex mcp add playwright-e2e -- npx -y github:trajectiq-ai/E2E#v0.2.
|
|
413
|
-
code --add-mcp '{"name":"playwright-e2e","command":"npx","args":["-y","github:trajectiq-ai/E2E#v0.2.
|
|
412
|
+
codex mcp add playwright-e2e -- npx -y github:trajectiq-ai/E2E#v0.2.2
|
|
413
|
+
code --add-mcp '{"name":"playwright-e2e","command":"npx","args":["-y","github:trajectiq-ai/E2E#v0.2.2"]}'
|
|
414
414
|
```
|
|
415
415
|
|
|
416
416
|
Codex's defaults fight this server: the first launch clones the repo and runs
|
|
@@ -421,7 +421,7 @@ Codex's defaults fight this server: the first launch clones the repo and runs
|
|
|
421
421
|
```toml
|
|
422
422
|
[mcp_servers.playwright-e2e]
|
|
423
423
|
command = "npx"
|
|
424
|
-
args = ["-y", "github:trajectiq-ai/E2E#v0.2.
|
|
424
|
+
args = ["-y", "github:trajectiq-ai/E2E#v0.2.2"]
|
|
425
425
|
startup_timeout_sec = 60
|
|
426
426
|
tool_timeout_sec = 600
|
|
427
427
|
```
|
|
@@ -436,7 +436,7 @@ into `PW_MCP_PROJECT_ROOT`, so the tools point at a real project from the first
|
|
|
436
436
|
**Claude Code:**
|
|
437
437
|
|
|
438
438
|
```bash
|
|
439
|
-
claude mcp add playwright-e2e -- npx -y github:trajectiq-ai/E2E#v0.2.
|
|
439
|
+
claude mcp add playwright-e2e -- npx -y github:trajectiq-ai/E2E#v0.2.2
|
|
440
440
|
```
|
|
441
441
|
|
|
442
442
|
**Gemini CLI / Qwen Code:** paste the `mcpServers` block above into
|
|
@@ -685,6 +685,7 @@ npm test # build + test/run-tests.mjs (unit tests, any Node ≥20)
|
|
|
685
685
|
npm run e2e # build + e2e/run.mjs: live MCP ↔ Playwright integration suite
|
|
686
686
|
npm run mcpb # build + bundle dist/ into playwright-e2e-mcp-<version>.mcpb (+ .sha256)
|
|
687
687
|
npm run mcpb:smoke # ...then install that bundle in a temp dir, launch it and assert the handshake
|
|
688
|
+
npm run mcpb:sign # ...then sign it with MCPB_CERT/MCPB_KEY → <version>.signed.mcpb
|
|
688
689
|
```
|
|
689
690
|
|
|
690
691
|
Tests cover the report parser (sample Playwright JSON, trace attachments), path utils
|
|
@@ -725,6 +726,51 @@ that only appear end-to-end:
|
|
|
725
726
|
First run needs the browser once: `npx playwright install chromium`.
|
|
726
727
|
CI runs the suite on Ubuntu and Windows (see `.github/workflows/ci.yml`).
|
|
727
728
|
|
|
729
|
+
### Signing the bundle
|
|
730
|
+
|
|
731
|
+
```bash
|
|
732
|
+
MCPB_CERT=~/signing/cert.pem MCPB_KEY=~/signing/key.pem npm run mcpb:sign
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
Signing appends a PKCS#7 signature block to the bundle, so the signed file is
|
|
736
|
+
*the reproducible bundle plus that block*. That ordering is the point: the bytes
|
|
737
|
+
CI proved identical across platforms stay inside the signed file, and
|
|
738
|
+
`mcpb unsign` returns them exactly. `scripts/sign-mcpb.mjs` asserts that round
|
|
739
|
+
trip on every run and deletes its output if it fails, which is what keeps
|
|
740
|
+
`<version>.signed.mcpb` tied to `<version>.mcpb`.
|
|
741
|
+
|
|
742
|
+
The private key is read from a path you pass in (`--cert`/`--key` or
|
|
743
|
+
`MCPB_CERT`/`MCPB_KEY`) and never from the repository — keep it outside version
|
|
744
|
+
control, and back it up: the same key across releases is what makes the signer
|
|
745
|
+
recognisable.
|
|
746
|
+
|
|
747
|
+
What signing does and does not buy you is decided by the certificate, not by
|
|
748
|
+
this script. `mcpb verify` and `mcpb info` accept a signature only when the
|
|
749
|
+
certificate chains to something in the OS trust store, so with a self-signed
|
|
750
|
+
certificate a host still reports **Not signed** — the signature is real
|
|
751
|
+
integrity and key continuity, verifiable by the fingerprint the script prints,
|
|
752
|
+
but not third-party identity. A certificate issued by a public CA, or an
|
|
753
|
+
internal one installed on your machines, is what makes hosts report it as
|
|
754
|
+
signed.
|
|
755
|
+
|
|
756
|
+
### Verifying a published release
|
|
757
|
+
|
|
758
|
+
```bash
|
|
759
|
+
git checkout v0.2.2 && npm ci && npm run mcpb
|
|
760
|
+
npm run release:verify -- v0.2.2
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
The release notes promise that the tag rebuilds the published bundle byte for
|
|
764
|
+
byte. `scripts/verify-release.mjs` checks that promise from a checkout of the
|
|
765
|
+
tag: the published bundle against your fresh build, every checksum the release
|
|
766
|
+
publishes (and that nothing shippable is missing from `SHA256SUMS.txt`), a
|
|
767
|
+
**signed** bundle against the bytes its signature wraps, and that the published
|
|
768
|
+
archive still extracts with that version's manifest.
|
|
769
|
+
`.github/workflows/verify-release.yml` runs it on every published release and on
|
|
770
|
+
demand for any past tag. The `.tgz` is checked for download integrity only: npm
|
|
771
|
+
records the packer's line endings, so a tarball packed locally on another OS is
|
|
772
|
+
legitimately different.
|
|
773
|
+
|
|
728
774
|
### Try the example
|
|
729
775
|
|
|
730
776
|
With Playwright installed in your project:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "playwright-e2e-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "MCP server that runs, diagnoses and fixes failing Playwright end-to-end tests: trace analysis, verified locator fixes, flaky ranking",
|
|
5
5
|
"author": "trajectiq-ai <trajectiq@gmail.com>",
|
|
6
6
|
"mcpName": "io.github.trajectiq-ai/E2E",
|
|
@@ -51,6 +51,8 @@
|
|
|
51
51
|
"e2e": "npm run build && node e2e/run.mjs",
|
|
52
52
|
"mcpb": "npm run build && node scripts/build-mcpb.mjs",
|
|
53
53
|
"mcpb:smoke": "npm run mcpb && node scripts/mcpb-launch-sim.mjs && node scripts/mcpb-client-check.mjs",
|
|
54
|
+
"mcpb:sign": "npm run mcpb && node scripts/sign-mcpb.mjs",
|
|
55
|
+
"release:verify": "node scripts/verify-release.mjs",
|
|
54
56
|
"prepublishOnly": "npm test"
|
|
55
57
|
},
|
|
56
58
|
"engines": {
|