refactor: replace Playwright internals with in-page dom-accessibility-api

- Add a11y-client.ts: browser-side code using dom-accessibility-api (41KB)
- Single page.evaluate() call instead of multiple CDP roundtrips
- Zero element handles - everything runs in page context
- Stable refs from test IDs (data-testid, data-test-id, id) instead of e1, e2
- Add locator param to scope snapshots to subtrees
- Fixes cross-frame 'Unable to adopt element handle' error (issue #39)
This commit is contained in:
Tommy D. Rossi
2026-02-01 16:58:29 +01:00
parent ec7ed4e590
commit a2fa91584d
8 changed files with 950 additions and 643 deletions
+2 -1
View File
@@ -7,7 +7,7 @@
"types": "dist/index.d.ts",
"repository": "https://github.com/remorses/playwriter",
"scripts": {
"build": "rm -rf dist *.tsbuildinfo && mkdir dist && bun scripts/build-selector-generator.ts && bun scripts/build-bippy.ts && tsc && bun scripts/build-resources.ts",
"build": "rm -rf dist *.tsbuildinfo && mkdir dist && bun scripts/build-selector-generator.ts && bun scripts/build-bippy.ts && bun scripts/build-a11y-client.ts && tsc && bun scripts/build-resources.ts",
"prepublishOnly": "pnpm build",
"watch": "tsc -w",
"cli": "vite-node src/cli.ts",
@@ -46,6 +46,7 @@
"@modelcontextprotocol/sdk": "^1.25.2",
"@xmorse/cac": "^6.0.7",
"diff": "^8.0.2",
"dom-accessibility-api": "^0.7.1",
"hono": "^4.10.6",
"kill-port-process": "^3.2.1",
"picocolors": "^1.1.1",