playwright-repl 0.9.0 → 0.14.0
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 +144 -366
- package/dist/playwright-repl.js +8 -2
- package/dist/playwright-repl.js.map +1 -1
- package/dist/repl.d.ts +4 -1
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +275 -3
- package/dist/repl.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,139 +1,62 @@
|
|
|
1
|
-
# playwright-repl
|
|
1
|
+
# playwright-repl (CLI)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Interactive browser automation powered by Playwright — use it from your **terminal** or as a **Chrome side panel**.
|
|
6
|
-
|
|
7
|
-
Two frontends, one engine: the CLI gives you a terminal REPL with recording and replay; the Chrome extension gives you a DevTools panel with a script editor and visual recorder. Both run the same 55+ Playwright commands through a shared Engine — no command duplication.
|
|
8
|
-
|
|
9
|
-
## Why?
|
|
10
|
-
|
|
11
|
-
**playwright-repl** runs Playwright's browser tools in-process. Type a command, see the result instantly. No code, no tokens, no setup.
|
|
12
|
-
|
|
13
|
-
- **CLI** — terminal REPL with recording, replay, piping, and 20+ aliases
|
|
14
|
-
- **Extension** — Chrome DevTools panel with script editor, recorder, and light/dark themes
|
|
15
|
-
- **Same commands everywhere** — `click`, `fill`, `snapshot`, `verify-text` work identically in both
|
|
16
|
-
|
|
17
|
-
Key features:
|
|
18
|
-
- **Text locators** — `click "Submit"` or `fill "Email" "test@example.com"` instead of element refs
|
|
19
|
-
- **Element refs** — `click e5`, `fill e7 "hello"` from `snapshot` output
|
|
20
|
-
- **Assertions** — `verify-text`, `verify-element`, `verify-value`, `verify-list`
|
|
21
|
-
- **Record & replay** — capture sessions as `.pw` files (CLI) or record interactions visually (extension)
|
|
22
|
-
- **Three connection modes** — launch a new browser, connect to existing Chrome, or use the extension relay
|
|
23
|
-
|
|
24
|
-
## Architecture
|
|
25
|
-
|
|
26
|
-
The CLI and Extension use different execution paths.
|
|
27
|
-
|
|
28
|
-
**CLI** — commands execute in-process via the Engine:
|
|
29
|
-
```
|
|
30
|
-
┌──────────────┐
|
|
31
|
-
│ CLI (REPL) │
|
|
32
|
-
│ packages/cli│
|
|
33
|
-
└──────┬───────┘
|
|
34
|
-
│
|
|
35
|
-
▼
|
|
36
|
-
┌─────────────────┐
|
|
37
|
-
│ Engine │ (BrowserServerBackend in-process)
|
|
38
|
-
└──────┬──────────┘
|
|
39
|
-
│ CDP
|
|
40
|
-
▼
|
|
41
|
-
┌─────────────┐
|
|
42
|
-
│ Chrome │
|
|
43
|
-
└─────────────┘
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Extension** — commands execute in the service worker via `playwright-crx`:
|
|
47
|
-
```
|
|
48
|
-
┌─────────────────────────┐
|
|
49
|
-
│ Extension (Side Panel) │
|
|
50
|
-
│ chrome.runtime.sendMessage({ type: 'run', command })
|
|
51
|
-
└────────────┬────────────┘
|
|
52
|
-
│
|
|
53
|
-
▼
|
|
54
|
-
┌──────────────────────────────┐
|
|
55
|
-
│ background.ts │
|
|
56
|
-
│ (playwright-crx service worker)
|
|
57
|
-
│ crxApp.attach(tabId) │
|
|
58
|
-
└────────────┬─────────────────┘
|
|
59
|
-
│ chrome.debugger API (CDP)
|
|
60
|
-
▼
|
|
61
|
-
┌─────────────┐
|
|
62
|
-
│ Chrome │
|
|
63
|
-
└─────────────┘
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
The extension is **self-contained** — no external server or CLI process is required.
|
|
67
|
-
|
|
68
|
-
### CLI Connection Modes
|
|
69
|
-
|
|
70
|
-
| Mode | Flag | Browser Source | Use Case |
|
|
71
|
-
|------|------|---------------|----------|
|
|
72
|
-
| **Launch** | `--headed` (default) | Launches new Chromium via Playwright | General automation |
|
|
73
|
-
| **Connect** | `--connect [port]` | Existing Chrome with `--remote-debugging-port` | Debug running app |
|
|
74
|
-
|
|
75
|
-
## Quick Start — CLI
|
|
3
|
+
Interactive terminal REPL for browser automation powered by Playwright. Type a command, see the result instantly — no code, no boilerplate.
|
|
76
4
|
|
|
77
5
|
```bash
|
|
78
|
-
# Install
|
|
79
6
|
npm install -g playwright-repl
|
|
80
|
-
npx playwright install # browser binaries (if needed)
|
|
81
|
-
|
|
82
|
-
# Start the REPL (launches browser automatically)
|
|
83
|
-
playwright-repl
|
|
84
|
-
|
|
85
|
-
# With a visible browser
|
|
86
7
|
playwright-repl --headed
|
|
87
|
-
|
|
88
|
-
# Connect to existing Chrome
|
|
89
|
-
playwright-repl --connect 9222
|
|
90
8
|
```
|
|
91
9
|
|
|
92
10
|
```
|
|
93
11
|
pw> goto https://demo.playwright.dev/todomvc/
|
|
94
12
|
pw> fill "What needs to be done?" "Buy groceries"
|
|
95
13
|
pw> press Enter
|
|
96
|
-
pw> fill "What needs to be done?" "Write tests"
|
|
97
|
-
pw> press Enter
|
|
98
|
-
pw> check "Buy groceries"
|
|
99
14
|
pw> verify-text "1 item left"
|
|
15
|
+
pw> screenshot
|
|
100
16
|
```
|
|
101
17
|
|
|
102
|
-
##
|
|
103
|
-
|
|
104
|
-
The extension works without any external server. Just load it in Chrome:
|
|
18
|
+
## Install
|
|
105
19
|
|
|
106
20
|
```bash
|
|
107
|
-
|
|
108
|
-
cd packages/extension && npm run build
|
|
21
|
+
npm install -g playwright-repl
|
|
109
22
|
|
|
110
|
-
#
|
|
23
|
+
# Browser binaries (only needed for standalone mode)
|
|
24
|
+
npx playwright install
|
|
111
25
|
```
|
|
112
26
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
Once loaded:
|
|
116
|
-
1. Click the extension icon to open the **Playwright REPL** side panel
|
|
117
|
-
2. The panel auto-attaches to the active tab — the status dot turns green
|
|
118
|
-
3. Type commands in the panel — same syntax as CLI
|
|
27
|
+
## Connection Modes
|
|
119
28
|
|
|
120
|
-
|
|
29
|
+
| Mode | Flag | Browser Source | Use Case |
|
|
30
|
+
|------|------|---------------|----------|
|
|
31
|
+
| **Standalone** | *(default)* | Launches new Chromium via Playwright | General automation, CI |
|
|
32
|
+
| **Bridge** | `--bridge` | Your real Chrome (via extension) | Drive your existing session — cookies and logins intact |
|
|
121
33
|
|
|
122
|
-
|
|
34
|
+
### Standalone
|
|
123
35
|
|
|
124
|
-
|
|
36
|
+
Playwright launches and manages the browser. Headless by default, headed with `--headed`.
|
|
125
37
|
|
|
126
38
|
```bash
|
|
127
|
-
|
|
39
|
+
playwright-repl
|
|
40
|
+
playwright-repl --headed
|
|
41
|
+
playwright-repl --browser firefox
|
|
42
|
+
playwright-repl --persistent # keeps profile between sessions
|
|
43
|
+
```
|
|
128
44
|
|
|
129
|
-
|
|
130
|
-
|
|
45
|
+
### Bridge
|
|
46
|
+
|
|
47
|
+
The bridge mode starts an interactive REPL that acts as a **remote console for the Chrome extension** — your terminal becomes the command input for the extension's browser session. Commands run inside your real Chrome with your existing cookies and logins.
|
|
131
48
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
49
|
+
```bash
|
|
50
|
+
playwright-repl --bridge # start bridge server, wait for extension to connect
|
|
51
|
+
playwright-repl --bridge --replay script.pw # replay a script via bridge
|
|
52
|
+
playwright-repl --bridge --replay examples/ # replay all .pw files
|
|
53
|
+
playwright-repl --bridge --bridge-port 9877 # custom port (default 9876)
|
|
135
54
|
```
|
|
136
55
|
|
|
56
|
+
The extension connects automatically when the side panel is opened. Once connected, all commands run against the active tab in your real browser.
|
|
57
|
+
|
|
58
|
+
> Requires the playwright-repl Chrome extension — see [packages/extension/README.md](../extension/README.md) for setup.
|
|
59
|
+
|
|
137
60
|
## Usage
|
|
138
61
|
|
|
139
62
|
```bash
|
|
@@ -157,14 +80,19 @@ playwright-repl --record my-test.pw
|
|
|
157
80
|
|
|
158
81
|
# Pipe commands
|
|
159
82
|
echo -e "goto https://example.com\nsnapshot" | playwright-repl
|
|
83
|
+
```
|
|
160
84
|
|
|
161
|
-
|
|
162
|
-
playwright-repl --connect # default port 9222
|
|
163
|
-
playwright-repl --connect 9333 # custom port
|
|
85
|
+
## Input Modes
|
|
164
86
|
|
|
165
|
-
|
|
87
|
+
| Mode | Standalone | Bridge |
|
|
88
|
+
|------|:---:|:---:|
|
|
89
|
+
| **Keyword** — `click "Sign in"`, `goto https://...` | ✅ | ✅ |
|
|
90
|
+
| **JavaScript** — `document.title`, `window.location.href` | ❌ | ✅ auto-detected |
|
|
91
|
+
| **Playwright API** — `await page.locator('button').count()` | ❌ | ✅ auto-detected |
|
|
92
|
+
|
|
93
|
+
Bridge mode auto-detects JavaScript and Playwright API expressions — just type them directly. For the full keyword command list, see [Command Reference](#command-reference).
|
|
166
94
|
|
|
167
|
-
|
|
95
|
+
## CLI Options
|
|
168
96
|
|
|
169
97
|
| Option | Description |
|
|
170
98
|
|--------|-------------|
|
|
@@ -172,19 +100,114 @@ playwright-repl --connect 9333 # custom port
|
|
|
172
100
|
| `--headed` | Run browser in headed (visible) mode |
|
|
173
101
|
| `--persistent` | Use persistent browser profile |
|
|
174
102
|
| `--profile <dir>` | Persistent profile directory |
|
|
175
|
-
| `--
|
|
176
|
-
| `--
|
|
177
|
-
| `--port <number>` | Command server port for `--extension` mode (default: `6781`) |
|
|
103
|
+
| `--bridge` | Start WebSocket bridge server; Chrome extension connects to CLI |
|
|
104
|
+
| `--bridge-port <port>` | Bridge server port (default: `9876`) |
|
|
178
105
|
| `--config <file>` | Path to config file |
|
|
179
|
-
| `--replay <files...>` | Replay `.pw` file(s) or folder(s) |
|
|
106
|
+
| `--replay <files...>` | Replay `.pw` or `.js` file(s) or folder(s) |
|
|
180
107
|
| `--record <file>` | Start REPL with recording to file |
|
|
181
108
|
| `--step` | Pause between commands during replay |
|
|
182
109
|
| `-q, --silent` | Suppress banner and status messages |
|
|
183
110
|
| `-h, --help` | Show help |
|
|
184
111
|
|
|
185
|
-
## Commands
|
|
112
|
+
## REPL Meta-Commands
|
|
113
|
+
|
|
114
|
+
| Command | Description |
|
|
115
|
+
|---------|-------------|
|
|
116
|
+
| `.help` | Show available commands |
|
|
117
|
+
| `.aliases` | Show all command aliases |
|
|
118
|
+
| `.status` | Show connection status |
|
|
119
|
+
| `.reconnect` | Restart browser |
|
|
120
|
+
| `.record [file]` | Start recording commands |
|
|
121
|
+
| `.save` | Stop recording and save to file |
|
|
122
|
+
| `.pause` | Pause/resume recording |
|
|
123
|
+
| `.discard` | Discard current recording |
|
|
124
|
+
| `.replay <file>` | Replay a recorded session |
|
|
125
|
+
| `.history` | Show session command history |
|
|
126
|
+
| `.clear` | Clear the console output |
|
|
127
|
+
| `.exit` | Exit REPL (also Ctrl+D) |
|
|
186
128
|
|
|
187
|
-
|
|
129
|
+
## Recording & Replay
|
|
130
|
+
|
|
131
|
+
Record your browser interactions and replay them later — great for regression tests, onboarding demos, or CI smoke tests.
|
|
132
|
+
|
|
133
|
+
### Record
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# From CLI flag
|
|
137
|
+
playwright-repl --record my-test.pw --headed
|
|
138
|
+
|
|
139
|
+
# Or inside the REPL
|
|
140
|
+
pw> .record my-test
|
|
141
|
+
⏺ Recording to my-test.pw
|
|
142
|
+
pw> goto https://demo.playwright.dev/todomvc/
|
|
143
|
+
pw> fill "What needs to be done?" "Buy groceries"
|
|
144
|
+
pw> press Enter
|
|
145
|
+
pw> verify-text "1 item left"
|
|
146
|
+
pw> .save
|
|
147
|
+
✓ Saved 4 commands to my-test.pw
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Replay
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Full speed
|
|
154
|
+
playwright-repl --replay my-test.pw
|
|
155
|
+
|
|
156
|
+
# Step-through (press Enter between commands)
|
|
157
|
+
playwright-repl --replay my-test.pw --step --headed
|
|
158
|
+
|
|
159
|
+
# Replay all .pw files in a folder
|
|
160
|
+
playwright-repl --replay examples/ --silent
|
|
161
|
+
|
|
162
|
+
# Inside the REPL
|
|
163
|
+
pw> .replay my-test.pw
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Multi-file replay runs all files sequentially, writes a `replay-<timestamp>.log` with per-command results, and prints a pass/fail summary. Exit code 0 if all pass, 1 if any fail.
|
|
167
|
+
|
|
168
|
+
### .pw File Format
|
|
169
|
+
|
|
170
|
+
Plain text — human-readable, diffable, version-controllable:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
# CI smoke test
|
|
174
|
+
# App: https://demo.playwright.dev/todomvc/
|
|
175
|
+
|
|
176
|
+
goto https://demo.playwright.dev/todomvc/
|
|
177
|
+
fill "What needs to be done?" "Buy groceries"
|
|
178
|
+
press Enter
|
|
179
|
+
verify-text "Buy groceries"
|
|
180
|
+
verify-text "1 item left"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Examples
|
|
184
|
+
|
|
185
|
+
| File | Description |
|
|
186
|
+
|------|-------------|
|
|
187
|
+
| [01-add-todos.pw](examples/01-add-todos.pw) | Add todos and verify with assertions |
|
|
188
|
+
| [02-complete-and-filter.pw](examples/02-complete-and-filter.pw) | Complete todos, use filters |
|
|
189
|
+
| [03-record-session.pw](examples/03-record-session.pw) | Record a test session |
|
|
190
|
+
| [04-replay-session.pw](examples/04-replay-session.pw) | Replay with step-through |
|
|
191
|
+
| [05-ci-pipe.pw](examples/05-ci-pipe.pw) | CI smoke test |
|
|
192
|
+
| [06-edit-todo.pw](examples/06-edit-todo.pw) | Double-click to edit a todo |
|
|
193
|
+
| [07-test-click-nth.pw](examples/07-test-click-nth.pw) | `--nth` disambiguation |
|
|
194
|
+
| [08-localstorage.pw](examples/08-localstorage.pw) | localStorage commands |
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
playwright-repl --replay examples/01-add-todos.pw --headed
|
|
198
|
+
playwright-repl --replay examples/ --silent
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Requirements
|
|
202
|
+
|
|
203
|
+
- Node.js >= 20
|
|
204
|
+
- `playwright` >= 1.59.0-alpha (browser binaries only needed for standalone mode)
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Command Reference
|
|
209
|
+
|
|
210
|
+
Short aliases are CLI-only.
|
|
188
211
|
|
|
189
212
|
### Navigation
|
|
190
213
|
|
|
@@ -217,7 +240,7 @@ All commands work in both CLI and extension. In the CLI, type directly at the `p
|
|
|
217
240
|
| Command | Alias | Description |
|
|
218
241
|
|---------|-------|-------------|
|
|
219
242
|
| `snapshot` | `s` | Accessibility tree with element refs |
|
|
220
|
-
| `screenshot` | `ss` | Take a screenshot |
|
|
243
|
+
| `screenshot` | `ss` | Take a screenshot (saved to file) |
|
|
221
244
|
| `eval <expr>` | `e` | Evaluate JavaScript in browser context |
|
|
222
245
|
| `console` | `con` | Browser console messages |
|
|
223
246
|
| `network` | `net` | Network requests log |
|
|
@@ -228,6 +251,7 @@ All commands work in both CLI and extension. In the CLI, type directly at the `p
|
|
|
228
251
|
| Command | Alias | Description |
|
|
229
252
|
|---------|-------|-------------|
|
|
230
253
|
| `verify-text <text>` | `vt` | Verify text is visible on page |
|
|
254
|
+
| `verify-no-text <text>` | `vnt` | Verify text is not visible |
|
|
231
255
|
| `verify-element <role> <name>` | `ve` | Verify element exists by role and name |
|
|
232
256
|
| `verify-value <ref> <value>` | `vv` | Verify input/select/checkbox value |
|
|
233
257
|
| `verify-list <ref> <items>` | `vl` | Verify list contains expected items |
|
|
@@ -286,249 +310,3 @@ All commands work in both CLI and extension. In the CLI, type directly at the `p
|
|
|
286
310
|
|---------|-------|-------------|
|
|
287
311
|
| `close` | `q` | Close the browser |
|
|
288
312
|
| `config-print` | — | Print browser config |
|
|
289
|
-
|
|
290
|
-
## CLI Features
|
|
291
|
-
|
|
292
|
-
### REPL Meta-Commands
|
|
293
|
-
|
|
294
|
-
| Command | Description |
|
|
295
|
-
|---------|-------------|
|
|
296
|
-
| `.help` | Show available commands |
|
|
297
|
-
| `.aliases` | Show all command aliases |
|
|
298
|
-
| `.status` | Show connection status |
|
|
299
|
-
| `.reconnect` | Restart browser |
|
|
300
|
-
| `.record [file]` | Start recording commands |
|
|
301
|
-
| `.save` | Stop recording and save to file |
|
|
302
|
-
| `.pause` | Pause/resume recording |
|
|
303
|
-
| `.discard` | Discard current recording |
|
|
304
|
-
| `.replay <file>` | Replay a recorded session |
|
|
305
|
-
| `.exit` | Exit REPL (also Ctrl+D) |
|
|
306
|
-
|
|
307
|
-
### Session Recording & Replay
|
|
308
|
-
|
|
309
|
-
Record your browser interactions and replay them later — great for regression tests, onboarding demos, or sharing reproducible flows.
|
|
310
|
-
|
|
311
|
-
#### Record
|
|
312
|
-
|
|
313
|
-
```bash
|
|
314
|
-
# From CLI
|
|
315
|
-
playwright-repl --record my-test.pw --headed
|
|
316
|
-
|
|
317
|
-
# Or inside the REPL
|
|
318
|
-
pw> .record my-test
|
|
319
|
-
⏺ Recording to my-test.pw
|
|
320
|
-
pw> goto https://demo.playwright.dev/todomvc/
|
|
321
|
-
pw> fill "What needs to be done?" "Buy groceries"
|
|
322
|
-
pw> press Enter
|
|
323
|
-
pw> verify-text "1 item left"
|
|
324
|
-
pw> .save
|
|
325
|
-
✓ Saved 4 commands to my-test.pw
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
#### Replay
|
|
329
|
-
|
|
330
|
-
```bash
|
|
331
|
-
# Full speed
|
|
332
|
-
playwright-repl --replay my-test.pw
|
|
333
|
-
|
|
334
|
-
# Step-through (press Enter between commands)
|
|
335
|
-
playwright-repl --replay my-test.pw --step --headed
|
|
336
|
-
|
|
337
|
-
# Replay all .pw files in a folder (multi-file mode)
|
|
338
|
-
playwright-repl --replay examples/ --silent
|
|
339
|
-
|
|
340
|
-
# Or inside the REPL
|
|
341
|
-
pw> .replay my-test.pw
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
Multi-file replay runs all files sequentially, writes a `replay-<timestamp>.log` with per-command results, and prints a pass/fail summary. Exit code 0 if all pass, 1 if any fail.
|
|
345
|
-
|
|
346
|
-
#### File Format
|
|
347
|
-
|
|
348
|
-
`.pw` files are plain text — human-readable, diffable, version-controllable:
|
|
349
|
-
|
|
350
|
-
```
|
|
351
|
-
# CI smoke test — quick add-and-verify
|
|
352
|
-
# App: https://demo.playwright.dev/todomvc/
|
|
353
|
-
|
|
354
|
-
goto https://demo.playwright.dev/todomvc/
|
|
355
|
-
fill "What needs to be done?" "Buy groceries"
|
|
356
|
-
press Enter
|
|
357
|
-
verify-text "Buy groceries"
|
|
358
|
-
verify-text "1 item left"
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
#### Recording Controls
|
|
362
|
-
|
|
363
|
-
| Command | Description |
|
|
364
|
-
|---------|-------------|
|
|
365
|
-
| `.record [file]` | Start recording |
|
|
366
|
-
| `.pause` | Pause recording (toggle) |
|
|
367
|
-
| `.save` | Stop and save to file |
|
|
368
|
-
| `.discard` | Discard without saving |
|
|
369
|
-
|
|
370
|
-
### eval & run-code
|
|
371
|
-
|
|
372
|
-
Two ways to run custom code from the REPL:
|
|
373
|
-
|
|
374
|
-
#### eval — Browser Context
|
|
375
|
-
|
|
376
|
-
Runs JavaScript inside the browser page (via `page.evaluate`). Use browser globals like `document`, `window`, `location`:
|
|
377
|
-
|
|
378
|
-
```
|
|
379
|
-
pw> eval document.title
|
|
380
|
-
"Installation | Playwright"
|
|
381
|
-
|
|
382
|
-
pw> eval window.location.href
|
|
383
|
-
"https://playwright.dev/docs/intro"
|
|
384
|
-
|
|
385
|
-
pw> eval document.querySelectorAll('a').length
|
|
386
|
-
42
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
#### run-code — Playwright API
|
|
390
|
-
|
|
391
|
-
Runs code with full access to the Playwright `page` object. The REPL auto-wraps your code — just write the body:
|
|
392
|
-
|
|
393
|
-
```
|
|
394
|
-
pw> run-code page.url()
|
|
395
|
-
→ async (page) => { return await page.url() }
|
|
396
|
-
"https://playwright.dev/docs/intro"
|
|
397
|
-
|
|
398
|
-
pw> run-code page.locator('h1').textContent()
|
|
399
|
-
→ async (page) => { return await page.locator('h1').textContent() }
|
|
400
|
-
"Installation"
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
For multiple statements, use semicolons:
|
|
404
|
-
|
|
405
|
-
```
|
|
406
|
-
pw> run-code const u = await page.url(); const t = await page.title(); return {u, t}
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
## Extension Features
|
|
410
|
-
|
|
411
|
-
### Side Panel and Popup Window
|
|
412
|
-
|
|
413
|
-
The extension opens as a Chrome **side panel** by default. To switch to a standalone **popup window**, right-click the extension icon → **Options** and choose "Open as Popup Window". Your preference is saved and applied every time you click the icon.
|
|
414
|
-
|
|
415
|
-
The panel UI is the same in both modes:
|
|
416
|
-
|
|
417
|
-
- **REPL input** — type commands at the bottom, results appear in the console pane
|
|
418
|
-
- **Script editor** — write multi-line `.pw` scripts with line numbers, run all or step through
|
|
419
|
-
- **Visual recorder** — click Record, interact with the page, recorded commands appear automatically
|
|
420
|
-
- **Export** — convert `.pw` commands to Playwright TypeScript test code
|
|
421
|
-
- **Tab switcher** — toolbar dropdown lets you re-attach the panel to any open browser tab without reopening
|
|
422
|
-
- **Light/dark themes** — matches your DevTools theme
|
|
423
|
-
|
|
424
|
-
### Recording in Extension
|
|
425
|
-
|
|
426
|
-
Click the **Record** button in the toolbar, then interact with the page normally. The recorder uses playwright-crx's built-in CDP recorder to capture:
|
|
427
|
-
|
|
428
|
-
- **Navigation** — `goto` commands on page load
|
|
429
|
-
- **Clicks** — with text and ARIA role locators
|
|
430
|
-
- **Form input** — fill commands
|
|
431
|
-
- **Key presses** — Enter, Tab, Escape
|
|
432
|
-
|
|
433
|
-
Recorded commands appear in the script editor in real time. Click **Stop** when done.
|
|
434
|
-
|
|
435
|
-
### Export to Playwright
|
|
436
|
-
|
|
437
|
-
The extension can export `.pw` commands to Playwright TypeScript:
|
|
438
|
-
|
|
439
|
-
```
|
|
440
|
-
# .pw commands → Playwright TypeScript
|
|
441
|
-
goto https://example.com → await page.goto("https://example.com");
|
|
442
|
-
click "Submit" → await page.getByText("Submit").click();
|
|
443
|
-
fill "Email" "test@example.com" → await page.getByLabel("Email").fill("test@example.com");
|
|
444
|
-
verify-text "Success" → await expect(page.getByText("Success")).toBeVisible();
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
### Connect Mode
|
|
448
|
-
|
|
449
|
-
To control an existing Chrome instance from the CLI:
|
|
450
|
-
|
|
451
|
-
```bash
|
|
452
|
-
# Start Chrome with debugging port
|
|
453
|
-
chrome --remote-debugging-port=9222
|
|
454
|
-
|
|
455
|
-
# Connect the REPL
|
|
456
|
-
playwright-repl --connect 9222
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
## Examples
|
|
460
|
-
|
|
461
|
-
Examples use the [TodoMVC demo](https://demo.playwright.dev/todomvc/) and [playwright.dev](https://playwright.dev/). All can be run directly or together via multi-file replay:
|
|
462
|
-
|
|
463
|
-
| File | Description |
|
|
464
|
-
|------|-------------|
|
|
465
|
-
| [01-add-todos.pw](packages/cli/examples/01-add-todos.pw) | Add todos and verify with assertions |
|
|
466
|
-
| [02-complete-and-filter.pw](packages/cli/examples/02-complete-and-filter.pw) | Complete todos, use filters |
|
|
467
|
-
| [03-record-session.pw](packages/cli/examples/03-record-session.pw) | Record a test session |
|
|
468
|
-
| [04-replay-session.pw](packages/cli/examples/04-replay-session.pw) | Replay with step-through |
|
|
469
|
-
| [05-ci-pipe.pw](packages/cli/examples/05-ci-pipe.pw) | CI smoke test |
|
|
470
|
-
| [06-edit-todo.pw](packages/cli/examples/06-edit-todo.pw) | Double-click to edit a todo |
|
|
471
|
-
| [07-test-click-nth.pw](packages/cli/examples/07-test-click-nth.pw) | `--nth` disambiguation on playwright.dev |
|
|
472
|
-
| [08-localstorage.pw](packages/cli/examples/08-localstorage.pw) | localStorage commands: list, clear, reload |
|
|
473
|
-
|
|
474
|
-
Try one:
|
|
475
|
-
|
|
476
|
-
```bash
|
|
477
|
-
# Run an example with a visible browser
|
|
478
|
-
playwright-repl --replay packages/cli/examples/01-add-todos.pw --headed
|
|
479
|
-
|
|
480
|
-
# Step through an example interactively
|
|
481
|
-
playwright-repl --replay packages/cli/examples/04-replay-session.pw --step --headed
|
|
482
|
-
|
|
483
|
-
# Run as a CI smoke test (headless, silent)
|
|
484
|
-
playwright-repl --replay packages/cli/examples/05-ci-pipe.pw --silent
|
|
485
|
-
|
|
486
|
-
# Run all examples (multi-file replay with log report)
|
|
487
|
-
playwright-repl --replay packages/cli/examples/ --silent
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
## Monorepo Structure
|
|
491
|
-
|
|
492
|
-
```
|
|
493
|
-
packages/
|
|
494
|
-
├── core/ # Engine + shared utilities (TypeScript, tsc)
|
|
495
|
-
│ └── src/
|
|
496
|
-
│ ├── engine.ts # Wraps BrowserServerBackend in-process
|
|
497
|
-
│ ├── extension-server.ts # HTTP server (CLI --extension mode)
|
|
498
|
-
│ ├── parser.ts # Command parsing and alias resolution
|
|
499
|
-
│ ├── page-scripts.ts # Text locator and assertion helpers
|
|
500
|
-
│ ├── completion-data.ts # Ghost completion items
|
|
501
|
-
│ ├── colors.ts # ANSI color helpers
|
|
502
|
-
│ └── resolve.ts # COMMANDS map, minimist re-export
|
|
503
|
-
├── cli/ # Terminal REPL (TypeScript, tsc)
|
|
504
|
-
│ └── src/
|
|
505
|
-
│ ├── playwright-repl.ts # CLI entry point
|
|
506
|
-
│ ├── repl.ts # Interactive readline loop
|
|
507
|
-
│ ├── recorder.ts # Session recording/replay
|
|
508
|
-
│ └── index.ts # Public API exports
|
|
509
|
-
└── extension/ # Chrome side panel extension (React, Vite, Tailwind)
|
|
510
|
-
├── src/
|
|
511
|
-
│ ├── background.ts # Service worker — playwright-crx command execution + recording
|
|
512
|
-
│ ├── commands.ts # Keyword → Playwright function mapping
|
|
513
|
-
│ ├── page-scripts.ts # Text locator and assertion helpers (extension)
|
|
514
|
-
│ ├── panel/ # Side panel UI (React)
|
|
515
|
-
│ │ ├── panel.html
|
|
516
|
-
│ │ ├── panel.tsx # React entry point
|
|
517
|
-
│ │ ├── panel.css # Theme variables + residual styles
|
|
518
|
-
│ │ ├── App.tsx # Root component (auto-attach, tab listener)
|
|
519
|
-
│ │ ├── reducer.ts # useReducer state management
|
|
520
|
-
│ │ ├── types.ts # TypeScript types
|
|
521
|
-
│ │ ├── components/ # Toolbar, CommandInput, EditorPane, ConsolePane, etc.
|
|
522
|
-
│ │ └── lib/ # bridge, run, commands, autocomplete, command-history, etc.
|
|
523
|
-
└── public/
|
|
524
|
-
└── manifest.json # Manifest V3 config (requires "debugger" permission)
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
## Requirements
|
|
528
|
-
|
|
529
|
-
- **Node.js** >= 20
|
|
530
|
-
- **playwright** >= 1.59.0-alpha (includes `lib/mcp/browser/` engine)
|
|
531
|
-
|
|
532
|
-
## License
|
|
533
|
-
|
|
534
|
-
MIT
|
package/dist/playwright-repl.js
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
import { minimist } from '@playwright-repl/core';
|
|
14
14
|
import { startRepl } from './repl.js';
|
|
15
15
|
const args = minimist(process.argv.slice(2), {
|
|
16
|
-
boolean: ['headed', 'persistent', 'extension', 'help', 'step', 'silent', 'spawn'],
|
|
17
|
-
string: ['session', 'browser', 'profile', 'config', 'replay', 'record', 'connect', 'port', 'cdp-port'],
|
|
16
|
+
boolean: ['headed', 'persistent', 'extension', 'help', 'step', 'silent', 'spawn', 'bridge'],
|
|
17
|
+
string: ['session', 'browser', 'profile', 'config', 'replay', 'record', 'connect', 'port', 'cdp-port', 'bridge-port'],
|
|
18
18
|
alias: { s: 'session', h: 'help', b: 'browser', q: 'silent' },
|
|
19
19
|
default: { session: 'default' },
|
|
20
20
|
});
|
|
@@ -39,6 +39,8 @@ Options:
|
|
|
39
39
|
--connect [port] Connect to existing Chrome via CDP (default: 9222)
|
|
40
40
|
--extension Connect to Chrome with side panel extension
|
|
41
41
|
--spawn Spawn Chrome automatically (default: connect to existing)
|
|
42
|
+
--bridge Connect to extension via WebSocket bridge (no CDP required)
|
|
43
|
+
--bridge-port <port> WebSocket bridge port (default: 9876)
|
|
42
44
|
--port <number> Extension server port (default: 6781)
|
|
43
45
|
--cdp-port <number> Chrome CDP port (default: 9222)
|
|
44
46
|
--config <file> Path to config file
|
|
@@ -69,6 +71,8 @@ Examples:
|
|
|
69
71
|
playwright-repl --extension --spawn # spawn Chrome automatically
|
|
70
72
|
playwright-repl --extension --port 7000 # custom server port
|
|
71
73
|
playwright-repl --extension --cdp-port 9333 # custom CDP port
|
|
74
|
+
playwright-repl --bridge # connect to extension via WebSocket bridge
|
|
75
|
+
playwright-repl --bridge --bridge-port 9877 # custom bridge port
|
|
72
76
|
playwright-repl --replay login.pw # replay a session
|
|
73
77
|
playwright-repl --replay login.pw --step # step through replay
|
|
74
78
|
playwright-repl --replay tests/ # replay all .pw files in folder
|
|
@@ -100,6 +104,8 @@ startRepl({
|
|
|
100
104
|
record: args.record,
|
|
101
105
|
step: args.step,
|
|
102
106
|
silent: args.silent,
|
|
107
|
+
bridge: args.bridge,
|
|
108
|
+
bridgePort: args['bridge-port'] ? parseInt(args['bridge-port'], 10) : undefined,
|
|
103
109
|
}).catch((err) => {
|
|
104
110
|
console.error(`Fatal: ${err.message}`);
|
|
105
111
|
process.exit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-repl.js","sourceRoot":"","sources":["../src/playwright-repl.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC3C,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"playwright-repl.js","sourceRoot":"","sources":["../src/playwright-repl.ts"],"names":[],"mappings":"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"}
|
package/dist/repl.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface ReplOpts extends EngineOpts {
|
|
|
13
13
|
record?: string;
|
|
14
14
|
step?: boolean;
|
|
15
15
|
silent?: boolean;
|
|
16
|
+
bridge?: boolean;
|
|
17
|
+
bridgePort?: number;
|
|
16
18
|
}
|
|
17
19
|
export interface ReplContext {
|
|
18
20
|
conn: Engine;
|
|
@@ -33,7 +35,8 @@ export declare function handleKillAll(ctx: ReplContext): Promise<void>;
|
|
|
33
35
|
export declare function handleClose(ctx: ReplContext): Promise<void>;
|
|
34
36
|
export declare function handleSessionCommand(ctx: ReplContext, line: string): boolean;
|
|
35
37
|
export declare function processLine(ctx: ReplContext, line: string): Promise<void>;
|
|
36
|
-
export declare function resolveReplayFiles(targets: string[]): string[];
|
|
38
|
+
export declare function resolveReplayFiles(targets: string[], extensions?: string[]): string[];
|
|
39
|
+
export declare function loadReplayFile(file: string): string[];
|
|
37
40
|
export declare function runReplayMode(ctx: ReplContext, replayFile: string, step: boolean): Promise<void>;
|
|
38
41
|
export declare function runMultiReplayMode(ctx: ReplContext, targets: string[], step: boolean): Promise<void>;
|
|
39
42
|
export declare function startCommandLoop(ctx: ReplContext): void;
|
package/dist/repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,eAAe,CAAC;AAIrC,OAAO,EAKL,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,eAAe,CAAC;AAIrC,OAAO,EAKL,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAA4B,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAK/C,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB5E;AAID,wBAAgB,QAAQ,IAAI,IAAI,CA0B/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAWlC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAQjD;AAID,wBAAsB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnE;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjE;AAID,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAgC5E;AAID,wBAAsB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8N/E;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,WAAU,GAAG,MAAM,EAAE,CAcpF;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAerD;AAID,wBAAsB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BtG;AAWD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F1G;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAqDvD;AAID,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAOlD;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAWvE;AA8TD,wBAAsB,SAAS,CAAC,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ElE"}
|
package/dist/repl.js
CHANGED
|
@@ -7,7 +7,7 @@ import readline from 'node:readline';
|
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import fs from 'node:fs';
|
|
9
9
|
import os from 'node:os';
|
|
10
|
-
import { replVersion, parseInput, ALIASES, ALL_COMMANDS, buildCompletionItems, c, buildRunCode, verifyText, verifyElement, verifyValue, verifyList, verifyTitle, verifyUrl, verifyNoText, verifyNoElement, actionByText, fillByText, selectByText, checkByText, uncheckByText, Engine, } from '@playwright-repl/core';
|
|
10
|
+
import { replVersion, parseInput, ALIASES, ALL_COMMANDS, buildCompletionItems, c, prettyJson, buildRunCode, verifyText, verifyElement, verifyValue, verifyList, verifyTitle, verifyUrl, verifyNoText, verifyNoElement, actionByText, fillByText, selectByText, checkByText, uncheckByText, Engine, BridgeServer, } from '@playwright-repl/core';
|
|
11
11
|
import { SessionManager } from './recorder.js';
|
|
12
12
|
// ─── Response filtering ─────────────────────────────────────────────────────
|
|
13
13
|
export function filterResponse(text, cmdName) {
|
|
@@ -352,12 +352,12 @@ export async function processLine(ctx, line) {
|
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
// ─── Resolve replay targets (files and folders → .pw file list) ──────────────
|
|
355
|
-
export function resolveReplayFiles(targets) {
|
|
355
|
+
export function resolveReplayFiles(targets, extensions = ['.pw']) {
|
|
356
356
|
const files = [];
|
|
357
357
|
for (const target of targets) {
|
|
358
358
|
if (fs.statSync(target).isDirectory()) {
|
|
359
359
|
const entries = fs.readdirSync(target)
|
|
360
|
-
.filter(f => f.endsWith(
|
|
360
|
+
.filter(f => extensions.some(ext => f.endsWith(ext)))
|
|
361
361
|
.sort()
|
|
362
362
|
.map(f => path.join(target, f));
|
|
363
363
|
files.push(...entries);
|
|
@@ -368,6 +368,25 @@ export function resolveReplayFiles(targets) {
|
|
|
368
368
|
}
|
|
369
369
|
return files;
|
|
370
370
|
}
|
|
371
|
+
// Load commands from a .pw or .js file, buffering multiline JS expressions.
|
|
372
|
+
export function loadReplayFile(file) {
|
|
373
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
374
|
+
const commands = [];
|
|
375
|
+
let buffer = '';
|
|
376
|
+
for (const raw of content.split('\n')) {
|
|
377
|
+
const line = raw.trim();
|
|
378
|
+
if (!line || line.startsWith('#') || line.startsWith('//'))
|
|
379
|
+
continue;
|
|
380
|
+
buffer = buffer ? buffer + '\n' + line : line;
|
|
381
|
+
if (isComplete(buffer)) {
|
|
382
|
+
commands.push(buffer);
|
|
383
|
+
buffer = '';
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
if (buffer.trim())
|
|
387
|
+
commands.push(buffer.trim());
|
|
388
|
+
return commands;
|
|
389
|
+
}
|
|
371
390
|
// ─── Replay mode (non-interactive, --replay flag) ───────────────────────────
|
|
372
391
|
export async function runReplayMode(ctx, replayFile, step) {
|
|
373
392
|
try {
|
|
@@ -625,12 +644,265 @@ function attachGhostCompletion(rl, items) {
|
|
|
625
644
|
};
|
|
626
645
|
}
|
|
627
646
|
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
647
|
+
// ─── Multi-line completion check ────────────────────────────────────────────
|
|
648
|
+
/**
|
|
649
|
+
* Returns true if the code string has balanced brackets/parens/braces.
|
|
650
|
+
* Used to detect multi-line continuation in bridge mode.
|
|
651
|
+
*/
|
|
652
|
+
function isComplete(code) {
|
|
653
|
+
let depth = 0;
|
|
654
|
+
let inStr = null;
|
|
655
|
+
for (let i = 0; i < code.length; i++) {
|
|
656
|
+
const ch = code[i];
|
|
657
|
+
if (inStr) {
|
|
658
|
+
if (ch === '\\') {
|
|
659
|
+
i++;
|
|
660
|
+
continue;
|
|
661
|
+
}
|
|
662
|
+
if (ch === inStr)
|
|
663
|
+
inStr = null;
|
|
664
|
+
}
|
|
665
|
+
else if (ch === '"' || ch === "'" || ch === '`') {
|
|
666
|
+
inStr = ch;
|
|
667
|
+
}
|
|
668
|
+
else if (ch === '{' || ch === '(' || ch === '[') {
|
|
669
|
+
depth++;
|
|
670
|
+
}
|
|
671
|
+
else if (ch === '}' || ch === ')' || ch === ']') {
|
|
672
|
+
depth--;
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
return depth <= 0;
|
|
676
|
+
}
|
|
677
|
+
// ─── Bridge shared helpers ───────────────────────────────────────────────────
|
|
678
|
+
function displayBridgeResult(result, silent) {
|
|
679
|
+
if (result.image) {
|
|
680
|
+
const screenshotDir = path.join(os.homedir(), 'pw-screenshots');
|
|
681
|
+
fs.mkdirSync(screenshotDir, { recursive: true });
|
|
682
|
+
const imgPath = path.join(screenshotDir, `pw-screenshot-${Date.now()}.png`);
|
|
683
|
+
const b64 = result.image.replace(/^data:[^;]+;base64,/, '');
|
|
684
|
+
fs.writeFileSync(imgPath, Buffer.from(b64, 'base64'));
|
|
685
|
+
if (!silent)
|
|
686
|
+
console.log(`Screenshot saved to ${imgPath}`);
|
|
687
|
+
}
|
|
688
|
+
else if (result.text) {
|
|
689
|
+
const t = result.text.trim();
|
|
690
|
+
if (!result.isError && (t.startsWith('{') || t.startsWith('['))) {
|
|
691
|
+
console.log(prettyJson(t));
|
|
692
|
+
}
|
|
693
|
+
else {
|
|
694
|
+
console.log(result.isError ? `${c.red}${result.text}${c.reset}` : result.text);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
// ─── Bridge replay mode ──────────────────────────────────────────────────────
|
|
699
|
+
async function runSingleBridgeFile(srv, file, step, silent, prefixed = false) {
|
|
700
|
+
const log = (...args) => { if (!silent)
|
|
701
|
+
console.log(...args); };
|
|
702
|
+
const commands = loadReplayFile(file);
|
|
703
|
+
if (!prefixed) {
|
|
704
|
+
log(`${c.blue}▶${c.reset} Replaying ${c.bold}${file}${c.reset} (${commands.length} commands)\n`);
|
|
705
|
+
}
|
|
706
|
+
let commandsRun = 0;
|
|
707
|
+
for (const cmd of commands) {
|
|
708
|
+
commandsRun++;
|
|
709
|
+
const indent = prefixed ? ' ' : '';
|
|
710
|
+
log(`${indent}${c.dim}[${commandsRun}/${commands.length}]${c.reset} ${cmd}`);
|
|
711
|
+
const result = await srv.run(cmd);
|
|
712
|
+
displayBridgeResult(result, silent);
|
|
713
|
+
if (result.isError) {
|
|
714
|
+
return { passed: false, commandsRun, errorMsg: `failed at [${commandsRun}/${commands.length}]: ${cmd}` };
|
|
715
|
+
}
|
|
716
|
+
if (step && commandsRun < commands.length) {
|
|
717
|
+
await new Promise((resolve) => {
|
|
718
|
+
process.stdout.write(`${c.dim} Press Enter to continue...${c.reset}`);
|
|
719
|
+
process.stdin.once('data', () => { process.stdout.write('\r\x1b[K'); resolve(); });
|
|
720
|
+
});
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
if (!prefixed)
|
|
724
|
+
log(`\n${c.green}✓${c.reset} Replay complete`);
|
|
725
|
+
return { passed: true, commandsRun };
|
|
726
|
+
}
|
|
727
|
+
async function runBridgeReplayMode(opts, srv) {
|
|
728
|
+
const silent = opts.silent || false;
|
|
729
|
+
const log = (...args) => { if (!silent)
|
|
730
|
+
console.log(...args); };
|
|
731
|
+
log('Waiting for extension to connect...');
|
|
732
|
+
try {
|
|
733
|
+
await srv.waitForConnection(30000);
|
|
734
|
+
}
|
|
735
|
+
catch (err) {
|
|
736
|
+
console.error(`${c.red}Error:${c.reset} ${err.message}`);
|
|
737
|
+
await srv.close();
|
|
738
|
+
process.exit(1);
|
|
739
|
+
}
|
|
740
|
+
log(`${c.green}✓${c.reset} Extension connected`);
|
|
741
|
+
const files = resolveReplayFiles(opts.replay, ['.pw', '.js']);
|
|
742
|
+
if (files.length === 0) {
|
|
743
|
+
console.error(`${c.red}Error:${c.reset} No .pw or .js files found`);
|
|
744
|
+
await srv.close();
|
|
745
|
+
process.exit(1);
|
|
746
|
+
}
|
|
747
|
+
if (files.length === 1) {
|
|
748
|
+
const { passed } = await runSingleBridgeFile(srv, files[0], opts.step || false, silent);
|
|
749
|
+
await srv.close();
|
|
750
|
+
process.exit(passed ? 0 : 1);
|
|
751
|
+
}
|
|
752
|
+
// Multi-file
|
|
753
|
+
log(`${c.blue}▶${c.reset} Running ${c.bold}${files.length}${c.reset} files\n`);
|
|
754
|
+
const results = [];
|
|
755
|
+
for (const file of files) {
|
|
756
|
+
const basename = path.basename(file);
|
|
757
|
+
log(`${c.blue}▶${c.reset} ${c.bold}${basename}${c.reset}`);
|
|
758
|
+
const { passed, commandsRun, errorMsg } = await runSingleBridgeFile(srv, file, opts.step || false, silent, true);
|
|
759
|
+
const status = passed ? `${c.green}PASS${c.reset}` : `${c.red}FAIL${c.reset}`;
|
|
760
|
+
log(` ${status} ${basename}\n`);
|
|
761
|
+
results.push({ file: basename, passed, commands: commandsRun, error: errorMsg });
|
|
762
|
+
}
|
|
763
|
+
const passCount = results.filter(r => r.passed).length;
|
|
764
|
+
const failCount = results.filter(r => !r.passed).length;
|
|
765
|
+
log(`${c.bold}─── Results ───${c.reset}`);
|
|
766
|
+
for (const r of results) {
|
|
767
|
+
const icon = r.passed ? `${c.green}✓${c.reset}` : `${c.red}✗${c.reset}`;
|
|
768
|
+
log(` ${icon} ${r.file}${r.error ? ` — ${r.error}` : ''}`);
|
|
769
|
+
}
|
|
770
|
+
log(`\n${passCount} passed, ${failCount} failed (${results.length} total)`);
|
|
771
|
+
await srv.close();
|
|
772
|
+
process.exit(failCount > 0 ? 1 : 0);
|
|
773
|
+
}
|
|
774
|
+
// ─── Bridge REPL loop ────────────────────────────────────────────────────────
|
|
775
|
+
async function startBridgeLoop(opts, srv) {
|
|
776
|
+
const silent = opts.silent || false;
|
|
777
|
+
const log = (...args) => { if (!silent)
|
|
778
|
+
console.log(...args); };
|
|
779
|
+
const historyDir = path.join(os.homedir(), '.playwright-repl');
|
|
780
|
+
const historyFile = path.join(historyDir, '.repl-history');
|
|
781
|
+
const sessionHistory = [];
|
|
782
|
+
const promptReady = `${c.cyan}pw>${c.reset} `;
|
|
783
|
+
const promptCont = `${c.dim}...${c.reset} `;
|
|
784
|
+
const rl = readline.createInterface({
|
|
785
|
+
input: process.stdin,
|
|
786
|
+
output: process.stdout,
|
|
787
|
+
prompt: promptReady,
|
|
788
|
+
historySize: 500,
|
|
789
|
+
});
|
|
790
|
+
try {
|
|
791
|
+
const hist = fs.readFileSync(historyFile, 'utf-8').split('\n').filter(Boolean).reverse();
|
|
792
|
+
for (const line of hist)
|
|
793
|
+
rl.history.push(line);
|
|
794
|
+
}
|
|
795
|
+
catch { /* ignore */ }
|
|
796
|
+
attachGhostCompletion(rl, buildCompletionItems());
|
|
797
|
+
let buffer = '';
|
|
798
|
+
let processing = false;
|
|
799
|
+
const commandQueue = [];
|
|
800
|
+
async function handleLine(line) {
|
|
801
|
+
// Multi-line accumulation
|
|
802
|
+
buffer = buffer ? buffer + '\n' + line : line;
|
|
803
|
+
if (!isComplete(buffer)) {
|
|
804
|
+
rl.setPrompt(promptCont);
|
|
805
|
+
return;
|
|
806
|
+
}
|
|
807
|
+
const command = buffer.trim();
|
|
808
|
+
buffer = '';
|
|
809
|
+
rl.setPrompt(promptReady);
|
|
810
|
+
if (!command || command.startsWith('#'))
|
|
811
|
+
return;
|
|
812
|
+
// Meta-commands
|
|
813
|
+
if (command === '.exit' || command === '.quit') {
|
|
814
|
+
await srv.close();
|
|
815
|
+
process.exit(0);
|
|
816
|
+
}
|
|
817
|
+
if (command === '.clear') {
|
|
818
|
+
console.clear();
|
|
819
|
+
return;
|
|
820
|
+
}
|
|
821
|
+
if (command === '.history clear') {
|
|
822
|
+
sessionHistory.length = 0;
|
|
823
|
+
log('History cleared.');
|
|
824
|
+
return;
|
|
825
|
+
}
|
|
826
|
+
if (command === '.history') {
|
|
827
|
+
log(sessionHistory.length ? sessionHistory.join('\n') : '(no history)');
|
|
828
|
+
return;
|
|
829
|
+
}
|
|
830
|
+
if (command === '.help' || command === '?') {
|
|
831
|
+
showHelp();
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
834
|
+
if (command === '.aliases') {
|
|
835
|
+
showAliases();
|
|
836
|
+
return;
|
|
837
|
+
}
|
|
838
|
+
// Record to history
|
|
839
|
+
sessionHistory.push(command);
|
|
840
|
+
try {
|
|
841
|
+
fs.mkdirSync(path.dirname(historyFile), { recursive: true });
|
|
842
|
+
fs.appendFileSync(historyFile, command + '\n');
|
|
843
|
+
}
|
|
844
|
+
catch { /* ignore */ }
|
|
845
|
+
if (!srv.connected) {
|
|
846
|
+
log(`${c.yellow}[not connected] Waiting for extension...${c.reset}`);
|
|
847
|
+
return;
|
|
848
|
+
}
|
|
849
|
+
const result = await srv.run(command);
|
|
850
|
+
displayBridgeResult(result, silent);
|
|
851
|
+
}
|
|
852
|
+
async function processQueue() {
|
|
853
|
+
if (processing)
|
|
854
|
+
return;
|
|
855
|
+
processing = true;
|
|
856
|
+
while (commandQueue.length > 0) {
|
|
857
|
+
await handleLine(commandQueue.shift());
|
|
858
|
+
}
|
|
859
|
+
processing = false;
|
|
860
|
+
rl.prompt();
|
|
861
|
+
}
|
|
862
|
+
// Print a status message above the current prompt line
|
|
863
|
+
function printStatus(msg) {
|
|
864
|
+
process.stdout.write('\r\x1b[K'); // clear current prompt line
|
|
865
|
+
console.log(msg);
|
|
866
|
+
rl.prompt(true);
|
|
867
|
+
}
|
|
868
|
+
if (!silent) {
|
|
869
|
+
srv.onConnect(() => printStatus(`${c.green}✓${c.reset} Extension connected`));
|
|
870
|
+
srv.onDisconnect(() => printStatus(`${c.yellow}Extension disconnected${c.reset}`));
|
|
871
|
+
}
|
|
872
|
+
rl.prompt();
|
|
873
|
+
rl.on('line', (line) => { commandQueue.push(line); processQueue(); });
|
|
874
|
+
rl.on('close', async () => { await srv.close(); process.exit(0); });
|
|
875
|
+
rl.on('SIGINT', () => {
|
|
876
|
+
if (buffer) {
|
|
877
|
+
buffer = '';
|
|
878
|
+
rl.setPrompt(promptReady);
|
|
879
|
+
rl.prompt();
|
|
880
|
+
}
|
|
881
|
+
else
|
|
882
|
+
rl.close();
|
|
883
|
+
});
|
|
884
|
+
}
|
|
628
885
|
// ─── REPL ────────────────────────────────────────────────────────────────────
|
|
629
886
|
export async function startRepl(opts = {}) {
|
|
630
887
|
const silent = opts.silent || false;
|
|
631
888
|
const log = (...args) => { if (!silent)
|
|
632
889
|
console.log(...args); };
|
|
633
890
|
log(`${c.bold}${c.magenta}🎭 Playwright REPL${c.reset} ${c.dim}v${replVersion}${c.reset}`);
|
|
891
|
+
// ─── Bridge mode ─────────────────────────────────────────────────
|
|
892
|
+
if (opts.bridge) {
|
|
893
|
+
const port = opts.bridgePort ?? 9876;
|
|
894
|
+
const srv = new BridgeServer();
|
|
895
|
+
await srv.start(port);
|
|
896
|
+
log(`Bridge server listening on ws://localhost:${port}`);
|
|
897
|
+
if (opts.replay && opts.replay.length > 0) {
|
|
898
|
+
await runBridgeReplayMode(opts, srv);
|
|
899
|
+
}
|
|
900
|
+
else {
|
|
901
|
+
log('Waiting for extension to connect...');
|
|
902
|
+
await startBridgeLoop(opts, srv);
|
|
903
|
+
}
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
634
906
|
// ─── Start engine ────────────────────────────────────────────────
|
|
635
907
|
if (opts.extension) {
|
|
636
908
|
log(`${c.dim}Extension mode: starting CDP relay server...${c.reset}`);
|
package/dist/repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|