@playwright-repl/runner 0.21.10 → 0.22.1
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 +19 -51
- package/dist/pw-cli.js +133 -22
- package/dist/pw-cli.js.map +1 -1
- package/dist/pw-repl-extension.d.ts +6 -5
- package/dist/pw-repl-extension.d.ts.map +1 -1
- package/dist/pw-repl-extension.js +32 -22
- package/dist/pw-repl-extension.js.map +1 -1
- package/dist/pw-repl.d.ts +6 -5
- package/dist/pw-repl.d.ts.map +1 -1
- package/dist/pw-repl.js +85 -67
- package/dist/pw-repl.js.map +1 -1
- package/dist/shim/test-runner.d.ts.map +1 -1
- package/dist/shim/test-runner.js +10 -0
- package/dist/shim/test-runner.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# @playwright-repl/runner
|
|
2
2
|
|
|
3
|
-
Drop-in replacement for `npx playwright test`
|
|
3
|
+
Drop-in replacement for `npx playwright test` — 2.8x faster for browser-only tests.
|
|
4
4
|
|
|
5
5
|
## Performance
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
`pw test` compiles tests with esbuild and executes them directly in the browser via the Dramaturg Chrome extension's service worker (`serviceWorker.evaluate()`). This bypasses the Playwright test runner overhead (worker startup, TypeScript compilation, fixture setup).
|
|
8
8
|
|
|
9
|
-
Node-mode tests that need server-side APIs fall back to the standard Playwright test runner
|
|
9
|
+
Node-mode tests that need server-side APIs fall back to the standard Playwright test runner automatically.
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
@@ -19,73 +19,41 @@ Replace `npx playwright test` with `pw test`:
|
|
|
19
19
|
```bash
|
|
20
20
|
pw test # run all tests
|
|
21
21
|
pw test todomvc/ # run tests in a folder
|
|
22
|
-
pw test --
|
|
23
|
-
pw test --reporter list # custom reporter
|
|
22
|
+
pw test --headless # headless mode
|
|
24
23
|
```
|
|
25
24
|
|
|
26
|
-
All Playwright CLI flags work — `pw` passes them through.
|
|
27
|
-
|
|
28
25
|
## How It Works
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
1. **Compile** — esbuild bundles the test with a lightweight shim replacing `@playwright/test`
|
|
28
|
+
2. **Launch** — Chromium starts with the Dramaturg extension via `launchPersistentContext`
|
|
29
|
+
3. **Execute** — compiled test sent to the service worker via `serviceWorker.evaluate()`
|
|
30
|
+
4. **Results** — pass/fail returned directly, no test runner process needed
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
- **Node mode** — falls back to standard Playwright for tests that use Node-only APIs (fs, net, etc.). Reuses the existing browser via CDP when available
|
|
34
|
-
- **Automatic routing** — static analysis detects which mode each test needs
|
|
32
|
+
Tests that use Node-only APIs (`fs`, `net`, `child_process`) are detected by static analysis and fall back to standard Playwright automatically.
|
|
35
33
|
|
|
36
34
|
## pw Commands
|
|
37
35
|
|
|
38
36
|
```bash
|
|
39
|
-
pw test [files...]
|
|
40
|
-
pw
|
|
41
|
-
pw
|
|
42
|
-
pw
|
|
43
|
-
pw repl --port 9222 # Node REPL with Playwright globals
|
|
44
|
-
pw repl --port 9222 script.js # run script, exit (browser stays alive)
|
|
45
|
-
pw repl-extension --bridge-port 9877 # REPL via extension bridge
|
|
46
|
-
pw close --port 9222 # close browser
|
|
37
|
+
pw test [files...] # run Playwright tests (fast path)
|
|
38
|
+
pw repl # interactive REPL with keyword + JS support
|
|
39
|
+
pw repl --headless # headless REPL for scripting
|
|
40
|
+
pw repl --port 9222 # connect to existing Chrome via CDP
|
|
47
41
|
```
|
|
48
42
|
|
|
49
43
|
### pw repl
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
pw launch --port 9222
|
|
55
|
-
pw repl --port 9222
|
|
56
|
-
```
|
|
45
|
+
Interactive REPL with keyword commands and JavaScript support. Launches Chromium with the extension by default.
|
|
57
46
|
|
|
58
47
|
```
|
|
59
|
-
pw>
|
|
48
|
+
pw> goto https://example.com
|
|
60
49
|
pw> await page.title()
|
|
61
50
|
Example Domain
|
|
62
|
-
(
|
|
51
|
+
(5ms)
|
|
63
52
|
pw> await page.locator('a').count()
|
|
64
53
|
1
|
|
65
|
-
(
|
|
66
|
-
pw> 1 + 1
|
|
67
|
-
2
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### pw repl-extension
|
|
71
|
-
|
|
72
|
-
REPL that routes commands through the Chrome extension bridge. Useful for testing the extension path.
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
pw launch --port 9222 --bridge-port 9877
|
|
76
|
-
pw repl-extension --bridge-port 9877
|
|
54
|
+
(12ms)
|
|
77
55
|
```
|
|
78
56
|
|
|
79
|
-
## Options
|
|
80
|
-
|
|
81
|
-
| Option | Description |
|
|
82
|
-
|--------|-------------|
|
|
83
|
-
| `--port <n>` | Chrome CDP port (default: 9222) |
|
|
84
|
-
| `--bridge-port <n>` | BridgeServer WebSocket port (default: 9877) |
|
|
85
|
-
| `--headless` | Launch browser in headless mode |
|
|
86
|
-
|
|
87
|
-
All `pw test` options are passed through to Playwright.
|
|
88
|
-
|
|
89
57
|
## CI Setup
|
|
90
58
|
|
|
91
59
|
```yaml
|
|
@@ -96,7 +64,7 @@ All `pw test` options are passed through to Playwright.
|
|
|
96
64
|
run: npx playwright install --with-deps chromium
|
|
97
65
|
|
|
98
66
|
- name: Run tests
|
|
99
|
-
run: npx pw test
|
|
67
|
+
run: npx pw test --headless
|
|
100
68
|
```
|
|
101
69
|
|
|
102
70
|
## Compatibility
|
|
@@ -105,7 +73,7 @@ Works with standard `@playwright/test` tests. No changes needed to your test fil
|
|
|
105
73
|
|
|
106
74
|
**Supported:** All Playwright test features — fixtures, assertions, test.describe, test.beforeEach, etc.
|
|
107
75
|
|
|
108
|
-
**
|
|
76
|
+
**Automatic fallback:** Tests that use Node-only APIs automatically fall back to standard Playwright.
|
|
109
77
|
|
|
110
78
|
## Development
|
|
111
79
|
|
package/dist/pw-cli.js
CHANGED
|
@@ -24,41 +24,32 @@ try {
|
|
|
24
24
|
catch {
|
|
25
25
|
pwCliPath = _require.resolve('@playwright/test/cli');
|
|
26
26
|
}
|
|
27
|
-
// Chrome extension:
|
|
28
|
-
const bundledExt = path.resolve(path.dirname(__filename), 'chrome-extension');
|
|
27
|
+
// Chrome extension: monorepo first (dev, has latest changes), then bundled (npm)
|
|
29
28
|
const monorepoExt = path.resolve(path.dirname(__filename), '../../extension/dist');
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
const bundledExt = path.resolve(path.dirname(__filename), 'chrome-extension');
|
|
30
|
+
const extPath = fs.existsSync(path.join(monorepoExt, 'manifest.json'))
|
|
31
|
+
? monorepoExt
|
|
32
|
+
: bundledExt;
|
|
33
33
|
const args = process.argv.slice(2);
|
|
34
34
|
const subcommand = args[0];
|
|
35
35
|
// ─── Subcommands ─────────────────────────────────────────────────────────────
|
|
36
|
-
if (subcommand === 'launch') {
|
|
37
|
-
const { handleLaunch } = await import('./pw-launch.js');
|
|
38
|
-
await handleLaunch(args.slice(1));
|
|
39
|
-
process.exit(0);
|
|
40
|
-
}
|
|
41
|
-
if (subcommand === 'close') {
|
|
42
|
-
const { handleClose } = await import('./pw-launch.js');
|
|
43
|
-
await handleClose(args.slice(1));
|
|
44
|
-
process.exit(0);
|
|
45
|
-
}
|
|
46
36
|
if (subcommand === 'repl') {
|
|
47
37
|
const { handleRepl } = await import('./pw-repl.js');
|
|
48
38
|
await handleRepl(args.slice(1));
|
|
49
39
|
// handleRepl keeps process alive via node:repl — don't exit here
|
|
50
40
|
}
|
|
51
|
-
if (subcommand === 'repl-extension') {
|
|
52
|
-
const { handleReplExtension } = await import('./pw-repl-extension.js');
|
|
53
|
-
await handleReplExtension(args.slice(1));
|
|
54
|
-
// handleReplExtension keeps process alive via node:repl
|
|
55
|
-
}
|
|
56
41
|
// ─── Default: test ───────────────────────────────────────────────────────────
|
|
57
42
|
if (args.length === 0 || (args[0] && args[0].startsWith('-'))) {
|
|
58
43
|
args.unshift('test');
|
|
59
44
|
}
|
|
60
|
-
|
|
61
|
-
//
|
|
45
|
+
if (args[0] === 'test') {
|
|
46
|
+
// Try direct execution via serviceWorker.evaluate() for bridge-eligible tests
|
|
47
|
+
const handled = await tryDirectEvaluate(args.slice(1), extPath);
|
|
48
|
+
if (handled !== null) {
|
|
49
|
+
process.exit(handled);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Fallback: run tests via standard Playwright
|
|
62
53
|
const child = spawn(process.execPath, [pwCliPath, ...args], {
|
|
63
54
|
stdio: 'inherit',
|
|
64
55
|
cwd: process.cwd(),
|
|
@@ -70,4 +61,124 @@ const child = spawn(process.execPath, [pwCliPath, ...args], {
|
|
|
70
61
|
child.on('exit', (code) => {
|
|
71
62
|
process.exit(code ?? 1);
|
|
72
63
|
});
|
|
64
|
+
// ─── Direct evaluate mode ────────────────────────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Try to run tests directly via serviceWorker.evaluate().
|
|
67
|
+
* Returns exit code (0 = all passed, 1 = failures) or null if fallback needed.
|
|
68
|
+
*/
|
|
69
|
+
async function tryDirectEvaluate(testArgs, extensionPath) {
|
|
70
|
+
const { createRequire: cr } = await import('node:module');
|
|
71
|
+
const require = cr(import.meta.url);
|
|
72
|
+
let bridgeUtils;
|
|
73
|
+
try {
|
|
74
|
+
bridgeUtils = require('./bridge-utils.cjs');
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null; // bridge-utils not available
|
|
78
|
+
}
|
|
79
|
+
// Find test files from args (simple: just .spec.ts/.test.ts files)
|
|
80
|
+
const testFiles = [];
|
|
81
|
+
const flagArgs = [];
|
|
82
|
+
for (const arg of testArgs) {
|
|
83
|
+
if (arg.startsWith('-')) {
|
|
84
|
+
flagArgs.push(arg);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Resolve relative to cwd
|
|
88
|
+
const resolved = path.resolve(arg);
|
|
89
|
+
if (fs.existsSync(resolved) && fs.statSync(resolved).isFile()) {
|
|
90
|
+
testFiles.push(resolved);
|
|
91
|
+
}
|
|
92
|
+
else if (fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()) {
|
|
93
|
+
// Find test files in directory
|
|
94
|
+
const entries = fs.readdirSync(resolved, { recursive: true });
|
|
95
|
+
for (const entry of entries) {
|
|
96
|
+
if (/\.(spec|test)\.[tj]sx?$/.test(entry)) {
|
|
97
|
+
testFiles.push(path.join(resolved, entry));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return null; // unknown arg, fall back
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (testFiles.length === 0)
|
|
107
|
+
return null; // no files found, fall back
|
|
108
|
+
// Check all files are bridge-eligible
|
|
109
|
+
for (const file of testFiles) {
|
|
110
|
+
if (bridgeUtils.needsNode(file))
|
|
111
|
+
return null; // needs Node, fall back
|
|
112
|
+
}
|
|
113
|
+
// Check for flags we can't handle
|
|
114
|
+
const unsupportedFlags = flagArgs.filter(f => !f.startsWith('--workers') && !f.startsWith('--reporter') && !f.startsWith('--headed') && !f.startsWith('--headless'));
|
|
115
|
+
if (unsupportedFlags.length > 0)
|
|
116
|
+
return null; // unknown flags, fall back
|
|
117
|
+
const headed = flagArgs.includes('--headed');
|
|
118
|
+
const headless = flagArgs.includes('--headless');
|
|
119
|
+
// Launch Chromium with extension
|
|
120
|
+
let chromium;
|
|
121
|
+
try {
|
|
122
|
+
chromium = (await import('@playwright/test')).chromium;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
const context = await chromium.launchPersistentContext('', {
|
|
128
|
+
channel: 'chromium',
|
|
129
|
+
headless: headless || !headed,
|
|
130
|
+
args: [
|
|
131
|
+
`--disable-extensions-except=${extensionPath}`,
|
|
132
|
+
`--load-extension=${extensionPath}`,
|
|
133
|
+
'--no-first-run',
|
|
134
|
+
'--no-default-browser-check',
|
|
135
|
+
],
|
|
136
|
+
});
|
|
137
|
+
let sw = context.serviceWorkers()[0];
|
|
138
|
+
if (!sw)
|
|
139
|
+
sw = await context.waitForEvent('serviceworker');
|
|
140
|
+
// Navigate to blank page and attach
|
|
141
|
+
const page = context.pages()[0] || await context.newPage();
|
|
142
|
+
await page.goto('about:blank');
|
|
143
|
+
await new Promise(r => setTimeout(r, 500));
|
|
144
|
+
// Navigate and wait for extension to initialize
|
|
145
|
+
await page.goto('about:blank');
|
|
146
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
147
|
+
// Attach extension to the active tab
|
|
148
|
+
await sw.evaluate(async () => {
|
|
149
|
+
const [tab] = await globalThis.chrome.tabs.query({ active: true });
|
|
150
|
+
if (tab?.id)
|
|
151
|
+
await self.handleBridgeCommand({ command: 'goto about:blank', scriptType: 'command' });
|
|
152
|
+
});
|
|
153
|
+
let totalPassed = 0, totalFailed = 0, totalSkipped = 0;
|
|
154
|
+
for (const file of testFiles) {
|
|
155
|
+
const relPath = path.relative(process.cwd(), file);
|
|
156
|
+
const compiled = await bridgeUtils.compile(file);
|
|
157
|
+
const result = await sw.evaluate(async (code) => {
|
|
158
|
+
// Reset test state from previous file
|
|
159
|
+
if (globalThis.__resetTestState)
|
|
160
|
+
globalThis.__resetTestState();
|
|
161
|
+
// The compiled IIFE registers tests synchronously
|
|
162
|
+
new Function(code)();
|
|
163
|
+
// Then run them asynchronously
|
|
164
|
+
return await globalThis.__runTests();
|
|
165
|
+
}, compiled);
|
|
166
|
+
// Parse results
|
|
167
|
+
const lines = result.split('\n');
|
|
168
|
+
console.log(`\n ${relPath}`);
|
|
169
|
+
for (const line of lines) {
|
|
170
|
+
if (line.trim())
|
|
171
|
+
console.log(` ${line}`);
|
|
172
|
+
if (line.includes('✓'))
|
|
173
|
+
totalPassed++;
|
|
174
|
+
if (line.includes('✗'))
|
|
175
|
+
totalFailed++;
|
|
176
|
+
if (line.includes('skipped'))
|
|
177
|
+
totalSkipped++;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
console.log(`\n ${totalPassed} passed, ${totalFailed} failed, ${totalSkipped} skipped (${testFiles.length} files)\n`);
|
|
181
|
+
await context.close();
|
|
182
|
+
return totalFailed > 0 ? 1 : 0;
|
|
183
|
+
}
|
|
73
184
|
//# sourceMappingURL=pw-cli.js.map
|
package/dist/pw-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pw-cli.js","sourceRoot":"","sources":["../src/pw-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE3C,qFAAqF;AACrF,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/E,IAAI,SAAiB,CAAC;AACtB,IAAI,CAAC;IACH,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC7D,CAAC;AAAC,MAAM,CAAC;IACP,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvD,CAAC;AACD,
|
|
1
|
+
{"version":3,"file":"pw-cli.js","sourceRoot":"","sources":["../src/pw-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pw repl-extension — REPL
|
|
2
|
+
* pw repl-extension — REPL using serviceWorker.evaluate().
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Launches Chromium with the Dramaturg extension and provides
|
|
5
|
+
* an interactive REPL with keyword commands and JavaScript support.
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
|
-
* pw repl-extension
|
|
9
|
-
* pw repl-extension --
|
|
8
|
+
* pw repl-extension # interactive REPL (headed)
|
|
9
|
+
* pw repl-extension --headless # headless mode
|
|
10
|
+
* pw repl-extension script.js # run script, exit
|
|
10
11
|
*/
|
|
11
12
|
export declare function handleReplExtension(argv: string[]): Promise<void>;
|
|
12
13
|
//# sourceMappingURL=pw-repl-extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pw-repl-extension.d.ts","sourceRoot":"","sources":["../src/pw-repl-extension.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pw-repl-extension.d.ts","sourceRoot":"","sources":["../src/pw-repl-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFvE"}
|
|
@@ -1,37 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pw repl-extension — REPL
|
|
2
|
+
* pw repl-extension — REPL using serviceWorker.evaluate().
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Launches Chromium with the Dramaturg extension and provides
|
|
5
|
+
* an interactive REPL with keyword commands and JavaScript support.
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
|
-
* pw repl-extension
|
|
9
|
-
* pw repl-extension --
|
|
8
|
+
* pw repl-extension # interactive REPL (headed)
|
|
9
|
+
* pw repl-extension --headless # headless mode
|
|
10
|
+
* pw repl-extension script.js # run script, exit
|
|
10
11
|
*/
|
|
11
12
|
import repl from 'node:repl';
|
|
12
13
|
import { inspect } from 'node:util';
|
|
13
14
|
import fs from 'node:fs';
|
|
14
|
-
import
|
|
15
|
+
import path from 'node:path';
|
|
16
|
+
import { createRequire } from 'node:module';
|
|
17
|
+
import { fileURLToPath } from 'node:url';
|
|
18
|
+
import { EvaluateConnection, minimist } from '@playwright-repl/core';
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const _require = createRequire(__filename);
|
|
21
|
+
function findExtensionPath() {
|
|
22
|
+
const monorepoExt = path.resolve(path.dirname(__filename), '../../extension/dist');
|
|
23
|
+
const bundledExt = path.resolve(path.dirname(__filename), 'chrome-extension');
|
|
24
|
+
if (fs.existsSync(path.join(monorepoExt, 'manifest.json')))
|
|
25
|
+
return monorepoExt;
|
|
26
|
+
if (fs.existsSync(path.join(bundledExt, 'manifest.json')))
|
|
27
|
+
return bundledExt;
|
|
28
|
+
throw new Error('Chrome extension not found. Run "pnpm run build" first.');
|
|
29
|
+
}
|
|
15
30
|
export async function handleReplExtension(argv) {
|
|
16
31
|
const args = minimist(argv, {
|
|
17
|
-
|
|
18
|
-
default: { 'bridge-port': '9877' },
|
|
32
|
+
boolean: ['headless', 'headed'],
|
|
19
33
|
});
|
|
20
|
-
const
|
|
34
|
+
const headed = args.headed ? true : !args.headless;
|
|
21
35
|
const scriptFile = args._[0];
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
await
|
|
25
|
-
console.log(`
|
|
26
|
-
|
|
27
|
-
await bridge.waitForConnection(30000);
|
|
28
|
-
console.log('Extension connected.');
|
|
29
|
-
// Script mode: read file, run through bridge, print timing, exit
|
|
36
|
+
const conn = new EvaluateConnection();
|
|
37
|
+
const { chromium } = _require('@playwright/test');
|
|
38
|
+
await conn.start(findExtensionPath(), { headed, chromium });
|
|
39
|
+
console.log(`Connected (${headed ? 'headed' : 'headless'})`);
|
|
40
|
+
// Script mode: read file, run through evaluate, print timing, exit
|
|
30
41
|
if (scriptFile) {
|
|
31
42
|
const script = fs.readFileSync(scriptFile, 'utf-8');
|
|
32
43
|
const start = performance.now();
|
|
33
44
|
try {
|
|
34
|
-
const result = await
|
|
45
|
+
const result = await conn.runScript(script, 'javascript');
|
|
35
46
|
const elapsed = performance.now() - start;
|
|
36
47
|
if (result.text)
|
|
37
48
|
console.log(result.text);
|
|
@@ -42,7 +53,7 @@ export async function handleReplExtension(argv) {
|
|
|
42
53
|
console.error(e.message);
|
|
43
54
|
console.log(`${elapsed.toFixed(1)}ms (error)`);
|
|
44
55
|
}
|
|
45
|
-
await
|
|
56
|
+
await conn.close();
|
|
46
57
|
process.exit(0);
|
|
47
58
|
}
|
|
48
59
|
let lastElapsed = 0;
|
|
@@ -64,7 +75,7 @@ export async function handleReplExtension(argv) {
|
|
|
64
75
|
return;
|
|
65
76
|
}
|
|
66
77
|
const start = performance.now();
|
|
67
|
-
|
|
78
|
+
conn.run(cmd).then((result) => {
|
|
68
79
|
lastElapsed = performance.now() - start;
|
|
69
80
|
if (result.isError) {
|
|
70
81
|
cb(new Error(result.text || 'Unknown error'));
|
|
@@ -88,10 +99,9 @@ export async function handleReplExtension(argv) {
|
|
|
88
99
|
return timing ? `${formatted}\n${timing}` : formatted;
|
|
89
100
|
},
|
|
90
101
|
});
|
|
91
|
-
// Block until REPL exits (Ctrl+D / .exit)
|
|
92
102
|
await new Promise((resolve) => {
|
|
93
103
|
r.on('exit', async () => {
|
|
94
|
-
await
|
|
104
|
+
await conn.close();
|
|
95
105
|
resolve();
|
|
96
106
|
});
|
|
97
107
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pw-repl-extension.js","sourceRoot":"","sources":["../src/pw-repl-extension.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pw-repl-extension.js","sourceRoot":"","sources":["../src/pw-repl-extension.ts"],"names":[],"mappings":"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"}
|
package/dist/pw-repl.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pw repl —
|
|
2
|
+
* pw repl — REPL using serviceWorker.evaluate().
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Launches Chromium with the Dramaturg extension and provides
|
|
5
|
+
* a Node REPL with Playwright globals (page, context, expect).
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
|
-
* pw repl
|
|
9
|
-
* pw repl --
|
|
8
|
+
* pw repl # interactive REPL (headed)
|
|
9
|
+
* pw repl --headless # headless mode
|
|
10
|
+
* pw repl --port 9222 bench.js # connect to existing Chrome, run script
|
|
10
11
|
*/
|
|
11
12
|
export declare function handleRepl(argv: string[]): Promise<void>;
|
|
12
13
|
//# sourceMappingURL=pw-repl.d.ts.map
|
package/dist/pw-repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pw-repl.d.ts","sourceRoot":"","sources":["../src/pw-repl.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pw-repl.d.ts","sourceRoot":"","sources":["../src/pw-repl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH9D"}
|
package/dist/pw-repl.js
CHANGED
|
@@ -1,110 +1,128 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pw repl —
|
|
2
|
+
* pw repl — REPL using serviceWorker.evaluate().
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Launches Chromium with the Dramaturg extension and provides
|
|
5
|
+
* a Node REPL with Playwright globals (page, context, expect).
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
|
-
* pw repl
|
|
9
|
-
* pw repl --
|
|
8
|
+
* pw repl # interactive REPL (headed)
|
|
9
|
+
* pw repl --headless # headless mode
|
|
10
|
+
* pw repl --port 9222 bench.js # connect to existing Chrome, run script
|
|
10
11
|
*/
|
|
11
12
|
import repl from 'node:repl';
|
|
12
13
|
import { inspect } from 'node:util';
|
|
13
14
|
import fs from 'node:fs';
|
|
14
15
|
import { createRequire } from 'node:module';
|
|
15
16
|
import { fileURLToPath } from 'node:url';
|
|
16
|
-
import { minimist } from '@playwright-repl/core';
|
|
17
|
+
import { EvaluateConnection, findExtensionPath, minimist } from '@playwright-repl/core';
|
|
17
18
|
const __filename = fileURLToPath(import.meta.url);
|
|
18
19
|
const _require = createRequire(__filename);
|
|
19
20
|
export async function handleRepl(argv) {
|
|
20
21
|
const args = minimist(argv, {
|
|
21
22
|
string: ['port'],
|
|
22
|
-
|
|
23
|
+
boolean: ['headless', 'headed'],
|
|
24
|
+
default: { port: '' },
|
|
23
25
|
});
|
|
24
|
-
const port = parseInt(args.port, 10);
|
|
26
|
+
const port = args.port ? parseInt(args.port, 10) : 0;
|
|
27
|
+
const headed = args.headed ? true : !args.headless;
|
|
25
28
|
const scriptFile = args._[0];
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
// If --port is given, connect to existing Chrome via CDP (legacy mode)
|
|
30
|
+
if (port) {
|
|
31
|
+
const pw = _require('@playwright/test');
|
|
32
|
+
const browser = await pw.chromium.connectOverCDP(`http://localhost:${port}`);
|
|
33
|
+
const context = browser.contexts()[0];
|
|
34
|
+
const pages = context?.pages() ?? [];
|
|
35
|
+
const page = pages.find((p) => {
|
|
36
|
+
const url = p.url();
|
|
37
|
+
return !url.startsWith('devtools://') && !url.startsWith('chrome://') && !url.startsWith('about:');
|
|
38
|
+
}) ?? pages[0];
|
|
39
|
+
if (!page) {
|
|
40
|
+
console.error('No page found. Open a page in the browser first.');
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const { expect } = _require('@playwright/test');
|
|
44
|
+
console.log(`Connected to Chrome on port ${port}`);
|
|
45
|
+
if (scriptFile) {
|
|
46
|
+
const script = fs.readFileSync(scriptFile, 'utf-8');
|
|
47
|
+
const fn = new Function('page', 'context', 'browser', 'expect', `return (async () => {\n${script}\n})()`);
|
|
48
|
+
const start = performance.now();
|
|
49
|
+
try {
|
|
50
|
+
const result = await fn(page, context, browser, expect);
|
|
51
|
+
const elapsed = performance.now() - start;
|
|
52
|
+
if (result !== undefined)
|
|
53
|
+
console.log(result);
|
|
54
|
+
console.log(`\n${elapsed.toFixed(1)}ms`);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
const elapsed = performance.now() - start;
|
|
58
|
+
console.error(e.message);
|
|
59
|
+
console.log(`\n${elapsed.toFixed(1)}ms (error)`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
const r = repl.start({ prompt: 'pw> ', useGlobal: true });
|
|
65
|
+
Object.assign(r.context, { page, context, browser, expect });
|
|
66
|
+
await new Promise(resolve => r.on('exit', () => resolve()));
|
|
67
|
+
process.exit(0);
|
|
39
68
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
69
|
+
// Default: evaluate mode — launch Chromium with extension
|
|
70
|
+
const conn = new EvaluateConnection();
|
|
71
|
+
const { chromium } = _require('@playwright/test');
|
|
72
|
+
const extPath = findExtensionPath(import.meta.url);
|
|
73
|
+
if (!extPath)
|
|
74
|
+
throw new Error('Chrome extension not found. Run "pnpm run build" first.');
|
|
75
|
+
await conn.start(extPath, { headed, chromium });
|
|
76
|
+
console.log(`Connected (${headed ? 'headed' : 'headless'})`);
|
|
44
77
|
if (scriptFile) {
|
|
45
78
|
const script = fs.readFileSync(scriptFile, 'utf-8');
|
|
46
|
-
const fn = new Function('page', 'context', 'browser', 'expect', `return (async () => {\n${script}\n})()`);
|
|
47
79
|
const start = performance.now();
|
|
48
80
|
try {
|
|
49
|
-
const result = await
|
|
81
|
+
const result = await conn.runScript(script, 'javascript');
|
|
50
82
|
const elapsed = performance.now() - start;
|
|
51
|
-
if (result
|
|
52
|
-
console.log(result);
|
|
53
|
-
console.log(
|
|
83
|
+
if (result.text)
|
|
84
|
+
console.log(result.text);
|
|
85
|
+
console.log(`${elapsed.toFixed(1)}ms${result.isError ? ' (error)' : ''}`);
|
|
54
86
|
}
|
|
55
87
|
catch (e) {
|
|
56
88
|
const elapsed = performance.now() - start;
|
|
57
89
|
console.error(e.message);
|
|
58
|
-
console.log(
|
|
59
|
-
process.exit(1);
|
|
90
|
+
console.log(`${elapsed.toFixed(1)}ms (error)`);
|
|
60
91
|
}
|
|
92
|
+
await conn.close();
|
|
61
93
|
process.exit(0);
|
|
62
94
|
}
|
|
63
95
|
let lastElapsed = 0;
|
|
64
|
-
function formatValue(value) {
|
|
65
|
-
if (value === undefined || value === null)
|
|
66
|
-
return '';
|
|
67
|
-
// Playwright Response object → short summary
|
|
68
|
-
if (value && typeof value === 'object' && typeof value.status === 'function' && typeof value.url === 'function') {
|
|
69
|
-
const resp = value;
|
|
70
|
-
return `Response { ${resp.status()} ${resp.url()} }`;
|
|
71
|
-
}
|
|
72
|
-
// Primitives → simple string
|
|
73
|
-
if (typeof value === 'string')
|
|
74
|
-
return value;
|
|
75
|
-
if (typeof value === 'number' || typeof value === 'boolean')
|
|
76
|
-
return String(value);
|
|
77
|
-
// Default: inspect with depth limit
|
|
78
|
-
return inspect(value, { depth: 1, colors: true });
|
|
79
|
-
}
|
|
80
96
|
const r = repl.start({
|
|
81
97
|
prompt: 'pw> ',
|
|
82
|
-
|
|
98
|
+
eval: (input, _context, _file, cb) => {
|
|
99
|
+
const cmd = input.trim();
|
|
100
|
+
if (!cmd) {
|
|
101
|
+
cb(null, undefined);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const start = performance.now();
|
|
105
|
+
conn.run(cmd).then((result) => {
|
|
106
|
+
lastElapsed = performance.now() - start;
|
|
107
|
+
if (result.isError)
|
|
108
|
+
cb(new Error(result.text || 'Unknown error'));
|
|
109
|
+
else
|
|
110
|
+
cb(null, result.text || undefined);
|
|
111
|
+
}, (err) => { lastElapsed = performance.now() - start; cb(err); });
|
|
112
|
+
},
|
|
83
113
|
writer(value) {
|
|
84
|
-
const formatted =
|
|
114
|
+
const formatted = value === undefined || value === null ? '' :
|
|
115
|
+
typeof value === 'string' ? value :
|
|
116
|
+
inspect(value, { depth: 1, colors: true });
|
|
85
117
|
const timing = `(${lastElapsed.toFixed(1)}ms)`;
|
|
86
118
|
lastElapsed = 0;
|
|
87
|
-
if (!formatted && !timing)
|
|
88
|
-
return '';
|
|
89
119
|
if (!formatted)
|
|
90
120
|
return timing;
|
|
91
|
-
return
|
|
121
|
+
return `${formatted}\n${timing}`;
|
|
92
122
|
},
|
|
93
123
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const originalEval = r.eval.bind(r);
|
|
97
|
-
// @ts-expect-error — overriding readonly eval
|
|
98
|
-
r.eval = (code, context, file, cb) => {
|
|
99
|
-
const start = performance.now();
|
|
100
|
-
originalEval(code, context, file, (err, result) => {
|
|
101
|
-
lastElapsed = performance.now() - start;
|
|
102
|
-
cb(err, result);
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
// Block until REPL exits (Ctrl+D / .exit)
|
|
106
|
-
await new Promise((resolve) => {
|
|
107
|
-
r.on('exit', () => resolve());
|
|
124
|
+
await new Promise(resolve => {
|
|
125
|
+
r.on('exit', async () => { await conn.close(); resolve(); });
|
|
108
126
|
});
|
|
109
127
|
process.exit(0);
|
|
110
128
|
}
|
package/dist/pw-repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pw-repl.js","sourceRoot":"","sources":["../src/pw-repl.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pw-repl.js","sourceRoot":"","sources":["../src/pw-repl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/shim/test-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAChG,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA4ChG,iBAAS,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAErC;kBAFQ,IAAI;qBAIM,MAAM,MAAM,MAAM;qBAKlB,MAAM,MAAM,MAAM;yBAId,MAAM,MAAM,MAAM,IAAI;wBAiBvB,MAAM;uBACP,MAAM;yBACJ,MAAM;2BAIJ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;eACd,MAAM,MAAM,MAAM;qBAjC7B,MAAM,MAAM,MAAM;qBAKlB,MAAM,MAAM,MAAM;yBAId,MAAM,MAAM,MAAM,IAAI;wBAiBvB,MAAM;uBACP,MAAM;yBACJ,MAAM;wBA0CP,MAAM;;;wBAAN,MAAM;;AAS5B,QAAA,MAAM,OAAO,KAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/shim/test-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAChG,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA4ChG,iBAAS,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAErC;kBAFQ,IAAI;qBAIM,MAAM,MAAM,MAAM;qBAKlB,MAAM,MAAM,MAAM;yBAId,MAAM,MAAM,MAAM,IAAI;wBAiBvB,MAAM;uBACP,MAAM;yBACJ,MAAM;2BAIJ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;eACd,MAAM,MAAM,MAAM;qBAjC7B,MAAM,MAAM,MAAM;qBAKlB,MAAM,MAAM,MAAM;yBAId,MAAM,MAAM,MAAM,IAAI;wBAiBvB,MAAM;uBACP,MAAM;yBACJ,MAAM;wBA0CP,MAAM;;;wBAAN,MAAM;;AAS5B,QAAA,MAAM,OAAO,KAA6B,CAAC;AA4G3C,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC"}
|
package/dist/shim/test-runner.js
CHANGED
|
@@ -177,5 +177,15 @@ async function __runTests() {
|
|
|
177
177
|
// Expose __runTests on globalThis so the bundler can call it after the IIFE.
|
|
178
178
|
// esbuild tree-shakes unexported functions, but globalThis assignments survive.
|
|
179
179
|
globalThis.__runTests = __runTests;
|
|
180
|
+
globalThis.__resetTestState = () => {
|
|
181
|
+
rootSuite.tests.length = 0;
|
|
182
|
+
rootSuite.children.length = 0;
|
|
183
|
+
rootSuite.beforeAll.length = 0;
|
|
184
|
+
rootSuite.afterAll.length = 0;
|
|
185
|
+
rootSuite.beforeEach.length = 0;
|
|
186
|
+
rootSuite.afterEach.length = 0;
|
|
187
|
+
currentSuite = rootSuite;
|
|
188
|
+
hasOnly = false;
|
|
189
|
+
};
|
|
180
190
|
export { test, _expect as expect };
|
|
181
191
|
//# sourceMappingURL=test-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/shim/test-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/shim/test-runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playwright-repl/runner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.1",
|
|
4
4
|
"description": "Playwright test utilities — bridge-mode compilation, node detection, and CLI subcommands",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"acorn-walk": "^8.3.5",
|
|
20
20
|
"esbuild-wasm": "^0.27.4",
|
|
21
21
|
"magic-string": "^0.30.21",
|
|
22
|
-
"@playwright-repl/core": "0.
|
|
22
|
+
"@playwright-repl/core": "0.22.1"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"@playwright/test": ">=1.57.0"
|