pw-repl 0.3.2 → 0.4.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/AGENTS.md +11 -4
- package/README.md +9 -2
- package/bin/pw-repl.js +31 -6
- package/lib/cli-names.js +282 -0
- package/lib/client.js +2 -2
- package/lib/commands.js +421 -86
- package/lib/help.js +60 -25
- package/lib/runner.js +70 -22
- package/lib/send.js +5 -1
- package/lib/server.js +11 -4
- package/lib/state.js +27 -6
- package/lib/syntax.js +22 -1
- package/package.json +1 -1
- package/skill/SKILL.md +55 -8
package/skill/SKILL.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pw-repl
|
|
3
3
|
description: Inspect and drive a Chromium browser, possibly one a person is using, through the pw-repl (playwright-repl) REPL - tabs, page snapshots, clicks and typing, requests and their bodies, console messages, waiting for pages and elements, choosing files, faking, patching or delaying responses, cutting or slowing the network, emulating a phone, dark mode, a locale or a timezone, and recording what the person does. Use when asked to look at, debug or test something in a web page, in an existing Chromium with remote debugging or in one it starts itself.
|
|
4
|
+
allowed-tools: Bash(pw-repl:*) Bash(npx pw-repl:*)
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# pw-repl
|
|
@@ -44,10 +45,21 @@ one; each takes an optional start URL, which opens in a new tab.
|
|
|
44
45
|
(`/tmp/mine.log`); `tail -f` on it follows along without a terminal to attach from. `serve <port>`
|
|
45
46
|
listens on TCP 127.0.0.1 instead of a socket, with no access control.
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
### One REPL, many clients
|
|
49
|
+
|
|
50
|
+
One REPL serves everyone using its browser: the person at its prompt and any number of agents. When
|
|
51
|
+
`pw-repl where` finds one running for the browser you need, use it rather than start another, as a
|
|
52
|
+
client of your own: `PW_CLIENT=<name>` (or `send -c <name>`), with a name that says who you are.
|
|
53
|
+
|
|
54
|
+
- A client has its own selected tab, so clients do not move each other's. Its commands show in the pane
|
|
55
|
+
as `[server:<name>]` lines.
|
|
56
|
+
- `modes` and `tab` say which client turned each mode on and opened each tab. `modes off --mine` turns
|
|
57
|
+
off only what you turned on; `tab close <url-part>` closes a tab you opened.
|
|
58
|
+
- Commands run one at a time, from every client: a long one (`capture on 60`, `sleep`) holds the rest.
|
|
59
|
+
|
|
60
|
+
A REPL of your own, on a socket of its own, is for a browser of your own (`--launch`), or when you are
|
|
61
|
+
asked for one. Several REPLs on one browser each see every tab but list only their own modes, and can
|
|
62
|
+
undo each other's routes, network or emulation settings.
|
|
51
63
|
|
|
52
64
|
A REPL in a terminal stops at its prompt (`quit`, or Ctrl-C); `send quit` is refused.
|
|
53
65
|
|
|
@@ -82,7 +94,19 @@ that, look at the browser itself: `tab` and `info` for where things are, `reques
|
|
|
82
94
|
clicks made (`body <#>` for what one returned), `console` for console messages and page errors. `watch
|
|
83
95
|
on` records each step someone takes in a tab, with the requests it caused (`watch on --changes` adds
|
|
84
96
|
what each step changed on the page); `watch` reads it back, and `watch new` only what it has not shown
|
|
85
|
-
yet.
|
|
97
|
+
yet. For a tab they have not opened yet, `watch on --next-tab [url-part]` waits for it and watches it
|
|
98
|
+
from its first page.
|
|
99
|
+
|
|
100
|
+
When watching someone:
|
|
101
|
+
|
|
102
|
+
- Read `body <#>` for any request that matters as soon as it shows up: the browser drops a body once
|
|
103
|
+
its tab navigates.
|
|
104
|
+
- `watch` leaves out images and other static files, failed ones too; `console error` and
|
|
105
|
+
`requests --all` show what failed.
|
|
106
|
+
- Without a url-part, `--next-tab` takes the first tab anyone opens; check `tab` and `info` once it
|
|
107
|
+
fires, since another tab opening later does not show in `watch`.
|
|
108
|
+
- A watch belongs to the tab: when another client watches it too, read it with `watch <n>`, since
|
|
109
|
+
`watch new`'s place is shared and each one's would hide steps from the other.
|
|
86
110
|
|
|
87
111
|
Exit status: `0` ok, `1` the command failed, `2` completion not confirmed (outcome unknown: do not
|
|
88
112
|
blindly retry a change), `64` usage or the REPL is not reachable. `pw-repl --help` has the options.
|
|
@@ -91,7 +115,29 @@ blindly retry a change), `64` usage or the REPL is not reachable. `pw-repl --hel
|
|
|
91
115
|
|
|
92
116
|
Run `pw-repl send help`. It lists six topics; `help <topic>` lists their commands, `help <command>`
|
|
93
117
|
gives usage and caveats, and `help --all` prints everything at once. It needs no running REPL. The
|
|
94
|
-
help is the command reference; this file does not repeat it.
|
|
118
|
+
help is the command reference; this file does not repeat it. If you know playwright-cli, its command
|
|
119
|
+
names work too (`help playwright-cli` lists them).
|
|
120
|
+
|
|
121
|
+
### Coming from playwright-cli
|
|
122
|
+
|
|
123
|
+
Its command names and most of their options work, and each says the first time what it is here. What
|
|
124
|
+
differs comes from the browser being shared. With `<name>` a client name of your own, e.g. from your
|
|
125
|
+
task (`cart-bug`), since two agents with one name are one client:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pw-repl send -c <name> open http://localhost:3000 # a tab of your own in the shared browser
|
|
129
|
+
pw-repl send -c <name> snapshot # no snapshot after each command; ask for one
|
|
130
|
+
pw-repl send -c <name> click e5
|
|
131
|
+
pw-repl send -c <name> close # your modes off; tab close <url-part> closes your tab
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
- There is no browser of your own to open or close: `open` opens a tab in the one the REPL uses, and
|
|
135
|
+
`close` turns off the modes you turned on and leaves every tab open.
|
|
136
|
+
- Instead of `-s=<session>`, send as a client: `-c <name>`, with a selected tab of its own, in a browser
|
|
137
|
+
whose cookies and storage are shared.
|
|
138
|
+
- `upload <selector> <file>` names the file input or the button that opens it; do not click a file
|
|
139
|
+
input first, since the file picker is not caught.
|
|
140
|
+
- Routes, network and emulation apply to one tab, not to the whole browser.
|
|
95
141
|
|
|
96
142
|
## Sharing the browser
|
|
97
143
|
|
|
@@ -115,8 +161,9 @@ help is the command reference; this file does not repeat it.
|
|
|
115
161
|
one works too (`--headless=new`); nobody answers its dialogs but `dialog`.
|
|
116
162
|
- `PW_CHROME` — the Chromium `--launch` starts (default: Playwright's own, then one on the `PATH`).
|
|
117
163
|
- `PW_CDP_URL` — CDP endpoint (default `http://localhost:9222`).
|
|
118
|
-
- `PW_SCREENSHOT_DIR` — where the REPL saves screenshots
|
|
119
|
-
|
|
164
|
+
- `PW_SCREENSHOT_DIR` — where the REPL saves screenshots, read when it starts, not by `send`. Without it,
|
|
165
|
+
a REPL on a socket of its own saves them next to its socket, and any other in `/tmp`. `screenshot`
|
|
166
|
+
prints each file's path; other REPLs may save theirs in the same place. Remove only your
|
|
120
167
|
own, and keep those too if they are needed, e.g. as evidence or as something to hand over.
|
|
121
168
|
- `PW_ENDPOINT` / `PW_TMUX_SESSION` — defaults for `send -e` / `-s`. `PW_SOCKET` — the socket `send`
|
|
122
169
|
looks for when neither is given (default `/tmp/playwright-repl.sock`).
|