venetian 0.2.2-aarch64-linux → 0.2.3-aarch64-linux

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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/exe/aarch64-linux/LICENSE +2 -2
  3. data/exe/aarch64-linux/node +2 -2
  4. data/exe/aarch64-linux/package/browsers.json +9 -32
  5. data/exe/aarch64-linux/package/lib/coreBundle.js +5402 -4419
  6. data/exe/aarch64-linux/package/lib/server/electron/loader.js +0 -2
  7. data/exe/aarch64-linux/package/lib/serverRegistry.js +1674 -7082
  8. data/exe/aarch64-linux/package/lib/serverRegistry.js.LICENSE +8 -297
  9. data/exe/aarch64-linux/package/lib/tools/cli-client/help.json +19 -6
  10. data/exe/aarch64-linux/package/lib/tools/cli-client/minimist.js +1 -1
  11. data/exe/aarch64-linux/package/lib/tools/cli-client/output.js +9 -1
  12. data/exe/aarch64-linux/package/lib/tools/cli-client/program.js +17 -3
  13. data/exe/aarch64-linux/package/lib/tools/cli-client/registry.js +9 -5
  14. data/exe/aarch64-linux/package/lib/tools/cli-client/session.js +2 -1
  15. data/exe/aarch64-linux/package/lib/tools/skills/playwright-cli/SKILL.md +5 -0
  16. data/exe/aarch64-linux/package/lib/tools/skills/playwright-cli/references/tracing.md +1 -1
  17. data/exe/aarch64-linux/package/lib/tools/skills/playwright-component-testing/SKILL.md +4 -11
  18. data/exe/aarch64-linux/package/lib/tools/skills/playwright-component-testing/references/migration.md +6 -2
  19. data/exe/aarch64-linux/package/lib/tools/skills/playwright-component-testing/references/react.md +2 -0
  20. data/exe/aarch64-linux/package/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
  21. data/exe/aarch64-linux/package/lib/tools/skills/playwright-component-testing/references/vue.md +2 -0
  22. data/exe/aarch64-linux/package/lib/tools/skills/playwright-trace/SKILL.md +6 -3
  23. data/exe/aarch64-linux/package/lib/tools/utils/extension.js +13 -2
  24. data/exe/aarch64-linux/package/lib/utilsBundle.js +1934 -7341
  25. data/exe/aarch64-linux/package/lib/utilsBundle.js.LICENSE +8 -297
  26. data/exe/aarch64-linux/package/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  27. data/exe/aarch64-linux/package/lib/vite/{recorder/assets/codeMirrorModule-CwYYHbcZ.js → dashboard/assets/codeMirrorModule-CQ8RZGBm.js} +1 -1
  28. data/exe/aarch64-linux/package/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  29. data/exe/aarch64-linux/package/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  30. data/exe/aarch64-linux/package/lib/vite/dashboard/index.html +2 -2
  31. data/exe/aarch64-linux/package/lib/vite/htmlReport/report.css +1 -1
  32. data/exe/aarch64-linux/package/lib/vite/htmlReport/report.js +4 -4
  33. data/exe/aarch64-linux/package/lib/vite/recorder/assets/codeMirrorModule-CVQWJZAA.js +32 -0
  34. data/exe/aarch64-linux/package/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  35. data/exe/aarch64-linux/package/lib/vite/recorder/assets/index-hrlLqLtq.js +129 -0
  36. data/exe/aarch64-linux/package/lib/vite/recorder/index.html +2 -2
  37. data/exe/aarch64-linux/package/lib/vite/traceViewer/assets/{codeMirrorModule-rXmQmLUY.js → codeMirrorModule-BbkfBe3n.js} +1 -1
  38. data/exe/aarch64-linux/package/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +182 -0
  39. data/exe/aarch64-linux/package/lib/vite/traceViewer/assets/{xtermModule-BuZfJS5v.js → xtermModule-DywYcAf8.js} +1 -1
  40. data/exe/aarch64-linux/package/lib/vite/traceViewer/defaultSettingsView.Bqk9acqE.css +1 -0
  41. data/exe/aarch64-linux/package/lib/vite/traceViewer/index.B4cLoZK3.js +1 -0
  42. data/exe/aarch64-linux/package/lib/vite/traceViewer/index.html +3 -3
  43. data/exe/aarch64-linux/package/lib/vite/traceViewer/sw.bundle.js +3 -3
  44. data/exe/aarch64-linux/package/lib/vite/traceViewer/uiMode.CU5KtEkS.js +5 -0
  45. data/exe/aarch64-linux/package/lib/vite/traceViewer/{uiMode.C7UW1sC9.css → uiMode.CyMfwkXJ.css} +1 -1
  46. data/exe/aarch64-linux/package/lib/vite/traceViewer/uiMode.html +4 -4
  47. data/exe/aarch64-linux/package/package.json +1 -1
  48. data/exe/aarch64-linux/package/types/protocol.d.ts +201 -398
  49. data/exe/aarch64-linux/package/types/types.d.ts +771 -327
  50. data/lib/venetian/version.rb +2 -2
  51. metadata +21 -18
  52. data/exe/aarch64-linux/package/lib/vite/dashboard/assets/index-CyWAfh-p.js +0 -11
  53. data/exe/aarch64-linux/package/lib/vite/dashboard/assets/index-DhC616m4.css +0 -1
  54. data/exe/aarch64-linux/package/lib/vite/recorder/assets/index-DYjdXIbE.js +0 -129
  55. data/exe/aarch64-linux/package/lib/vite/recorder/assets/index-l_lX622x.css +0 -1
  56. data/exe/aarch64-linux/package/lib/vite/traceViewer/assets/defaultSettingsView-B-dXF5JN.js +0 -181
  57. data/exe/aarch64-linux/package/lib/vite/traceViewer/defaultSettingsView.BLFoOugd.css +0 -1
  58. data/exe/aarch64-linux/package/lib/vite/traceViewer/index.KZ4wOW1K.js +0 -1
  59. data/exe/aarch64-linux/package/lib/vite/traceViewer/uiMode.Dzuouizj.js +0 -5
@@ -4,87 +4,14 @@ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
4
4
 
5
5
  The following npm packages are inlined into this bundle.
6
6
 
7
- - anymatch@3.1.3 (https://github.com/micromatch/anymatch)
8
- - binary-extensions@2.3.0 (https://github.com/sindresorhus/binary-extensions)
9
- - braces@3.0.3 (https://github.com/micromatch/braces)
10
- - chokidar@3.6.0 (https://github.com/paulmillr/chokidar)
11
- - fill-range@7.1.1 (https://github.com/jonschlinkert/fill-range)
12
- - glob-parent@5.1.2 (https://github.com/gulpjs/glob-parent)
13
- - is-binary-path@2.1.0 (https://github.com/sindresorhus/is-binary-path)
14
- - is-extglob@2.1.1 (https://github.com/jonschlinkert/is-extglob)
15
- - is-glob@4.0.3 (https://github.com/micromatch/is-glob)
16
- - is-number@7.0.0 (https://github.com/jonschlinkert/is-number)
17
- - normalize-path@3.0.0 (https://github.com/jonschlinkert/normalize-path)
18
- - picomatch@2.3.2 (https://github.com/micromatch/picomatch)
19
- - readdirp@3.6.0 (https://github.com/paulmillr/readdirp)
20
- - to-regex-range@5.0.1 (https://github.com/micromatch/to-regex-range)
7
+ - chokidar@4.0.3 (https://github.com/paulmillr/chokidar)
8
+ - readdirp@4.1.2 (https://github.com/paulmillr/readdirp)
21
9
 
22
- %% anymatch@3.1.3 NOTICES AND INFORMATION BEGIN HERE
23
- =========================================
24
- The ISC License
25
-
26
- Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com)
27
-
28
- Permission to use, copy, modify, and/or distribute this software for any
29
- purpose with or without fee is hereby granted, provided that the above
30
- copyright notice and this permission notice appear in all copies.
31
-
32
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
33
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
34
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
35
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
36
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
37
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
38
- IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
39
- =========================================
40
- END OF anymatch@3.1.3 NOTICES AND INFORMATION
41
-
42
- %% binary-extensions@2.3.0 NOTICES AND INFORMATION BEGIN HERE
43
- =========================================
44
- MIT License
45
-
46
- Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
47
- Copyright (c) Paul Miller (https://paulmillr.com)
48
-
49
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
50
-
51
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
52
-
53
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
54
- =========================================
55
- END OF binary-extensions@2.3.0 NOTICES AND INFORMATION
56
-
57
- %% braces@3.0.3 NOTICES AND INFORMATION BEGIN HERE
10
+ %% chokidar@4.0.3 NOTICES AND INFORMATION BEGIN HERE
58
11
  =========================================
59
12
  The MIT License (MIT)
60
13
 
61
- Copyright (c) 2014-present, Jon Schlinkert.
62
-
63
- Permission is hereby granted, free of charge, to any person obtaining a copy
64
- of this software and associated documentation files (the "Software"), to deal
65
- in the Software without restriction, including without limitation the rights
66
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
67
- copies of the Software, and to permit persons to whom the Software is
68
- furnished to do so, subject to the following conditions:
69
-
70
- The above copyright notice and this permission notice shall be included in
71
- all copies or substantial portions of the Software.
72
-
73
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
74
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
75
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
76
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
77
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
78
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
79
- THE SOFTWARE.
80
- =========================================
81
- END OF braces@3.0.3 NOTICES AND INFORMATION
82
-
83
- %% chokidar@3.6.0 NOTICES AND INFORMATION BEGIN HERE
84
- =========================================
85
- The MIT License (MIT)
86
-
87
- Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker
14
+ Copyright (c) 2012 Paul Miller (https://paulmillr.com), Elan Shanker
88
15
 
89
16
  Permission is hereby granted, free of charge, to any person obtaining a copy
90
17
  of this software and associated documentation files (the “Software”), to deal
@@ -104,199 +31,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
104
31
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
105
32
  THE SOFTWARE.
106
33
  =========================================
107
- END OF chokidar@3.6.0 NOTICES AND INFORMATION
108
-
109
- %% fill-range@7.1.1 NOTICES AND INFORMATION BEGIN HERE
110
- =========================================
111
- The MIT License (MIT)
112
-
113
- Copyright (c) 2014-present, Jon Schlinkert.
114
-
115
- Permission is hereby granted, free of charge, to any person obtaining a copy
116
- of this software and associated documentation files (the "Software"), to deal
117
- in the Software without restriction, including without limitation the rights
118
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
119
- copies of the Software, and to permit persons to whom the Software is
120
- furnished to do so, subject to the following conditions:
121
-
122
- The above copyright notice and this permission notice shall be included in
123
- all copies or substantial portions of the Software.
124
-
125
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
126
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
127
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
128
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
129
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
130
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
131
- THE SOFTWARE.
132
- =========================================
133
- END OF fill-range@7.1.1 NOTICES AND INFORMATION
134
-
135
- %% glob-parent@5.1.2 NOTICES AND INFORMATION BEGIN HERE
136
- =========================================
137
- The ISC License
138
-
139
- Copyright (c) 2015, 2019 Elan Shanker
140
-
141
- Permission to use, copy, modify, and/or distribute this software for any
142
- purpose with or without fee is hereby granted, provided that the above
143
- copyright notice and this permission notice appear in all copies.
144
-
145
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
146
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
147
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
148
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
149
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
150
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
151
- IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
152
- =========================================
153
- END OF glob-parent@5.1.2 NOTICES AND INFORMATION
154
-
155
- %% is-binary-path@2.1.0 NOTICES AND INFORMATION BEGIN HERE
156
- =========================================
157
- MIT License
158
-
159
- Copyright (c) 2019 Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com), Paul Miller (https://paulmillr.com)
160
-
161
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
162
-
163
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
164
-
165
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
166
- =========================================
167
- END OF is-binary-path@2.1.0 NOTICES AND INFORMATION
168
-
169
- %% is-extglob@2.1.1 NOTICES AND INFORMATION BEGIN HERE
170
- =========================================
171
- The MIT License (MIT)
172
-
173
- Copyright (c) 2014-2016, Jon Schlinkert
174
-
175
- Permission is hereby granted, free of charge, to any person obtaining a copy
176
- of this software and associated documentation files (the "Software"), to deal
177
- in the Software without restriction, including without limitation the rights
178
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
179
- copies of the Software, and to permit persons to whom the Software is
180
- furnished to do so, subject to the following conditions:
181
-
182
- The above copyright notice and this permission notice shall be included in
183
- all copies or substantial portions of the Software.
184
-
185
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
186
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
187
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
188
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
189
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
190
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
191
- THE SOFTWARE.
192
- =========================================
193
- END OF is-extglob@2.1.1 NOTICES AND INFORMATION
194
-
195
- %% is-glob@4.0.3 NOTICES AND INFORMATION BEGIN HERE
196
- =========================================
197
- The MIT License (MIT)
198
-
199
- Copyright (c) 2014-2017, Jon Schlinkert.
200
-
201
- Permission is hereby granted, free of charge, to any person obtaining a copy
202
- of this software and associated documentation files (the "Software"), to deal
203
- in the Software without restriction, including without limitation the rights
204
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
205
- copies of the Software, and to permit persons to whom the Software is
206
- furnished to do so, subject to the following conditions:
207
-
208
- The above copyright notice and this permission notice shall be included in
209
- all copies or substantial portions of the Software.
210
-
211
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
212
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
213
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
214
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
215
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
216
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
217
- THE SOFTWARE.
218
- =========================================
219
- END OF is-glob@4.0.3 NOTICES AND INFORMATION
220
-
221
- %% is-number@7.0.0 NOTICES AND INFORMATION BEGIN HERE
222
- =========================================
223
- The MIT License (MIT)
224
-
225
- Copyright (c) 2014-present, Jon Schlinkert.
226
-
227
- Permission is hereby granted, free of charge, to any person obtaining a copy
228
- of this software and associated documentation files (the "Software"), to deal
229
- in the Software without restriction, including without limitation the rights
230
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
231
- copies of the Software, and to permit persons to whom the Software is
232
- furnished to do so, subject to the following conditions:
233
-
234
- The above copyright notice and this permission notice shall be included in
235
- all copies or substantial portions of the Software.
236
-
237
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
238
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
239
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
240
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
241
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
242
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
243
- THE SOFTWARE.
244
- =========================================
245
- END OF is-number@7.0.0 NOTICES AND INFORMATION
246
-
247
- %% normalize-path@3.0.0 NOTICES AND INFORMATION BEGIN HERE
248
- =========================================
249
- The MIT License (MIT)
250
-
251
- Copyright (c) 2014-2018, Jon Schlinkert.
252
-
253
- Permission is hereby granted, free of charge, to any person obtaining a copy
254
- of this software and associated documentation files (the "Software"), to deal
255
- in the Software without restriction, including without limitation the rights
256
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
257
- copies of the Software, and to permit persons to whom the Software is
258
- furnished to do so, subject to the following conditions:
259
-
260
- The above copyright notice and this permission notice shall be included in
261
- all copies or substantial portions of the Software.
262
-
263
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
264
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
265
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
266
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
267
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
268
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
269
- THE SOFTWARE.
270
- =========================================
271
- END OF normalize-path@3.0.0 NOTICES AND INFORMATION
34
+ END OF chokidar@4.0.3 NOTICES AND INFORMATION
272
35
 
273
- %% picomatch@2.3.2 NOTICES AND INFORMATION BEGIN HERE
274
- =========================================
275
- The MIT License (MIT)
276
-
277
- Copyright (c) 2017-present, Jon Schlinkert.
278
-
279
- Permission is hereby granted, free of charge, to any person obtaining a copy
280
- of this software and associated documentation files (the "Software"), to deal
281
- in the Software without restriction, including without limitation the rights
282
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
283
- copies of the Software, and to permit persons to whom the Software is
284
- furnished to do so, subject to the following conditions:
285
-
286
- The above copyright notice and this permission notice shall be included in
287
- all copies or substantial portions of the Software.
288
-
289
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
290
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
291
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
292
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
293
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
294
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
295
- THE SOFTWARE.
296
- =========================================
297
- END OF picomatch@2.3.2 NOTICES AND INFORMATION
298
-
299
- %% readdirp@3.6.0 NOTICES AND INFORMATION BEGIN HERE
36
+ %% readdirp@4.1.2 NOTICES AND INFORMATION BEGIN HERE
300
37
  =========================================
301
38
  MIT License
302
39
 
@@ -320,35 +57,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
320
57
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
321
58
  SOFTWARE.
322
59
  =========================================
323
- END OF readdirp@3.6.0 NOTICES AND INFORMATION
324
-
325
- %% to-regex-range@5.0.1 NOTICES AND INFORMATION BEGIN HERE
326
- =========================================
327
- The MIT License (MIT)
328
-
329
- Copyright (c) 2015-present, Jon Schlinkert.
330
-
331
- Permission is hereby granted, free of charge, to any person obtaining a copy
332
- of this software and associated documentation files (the "Software"), to deal
333
- in the Software without restriction, including without limitation the rights
334
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
335
- copies of the Software, and to permit persons to whom the Software is
336
- furnished to do so, subject to the following conditions:
337
-
338
- The above copyright notice and this permission notice shall be included in
339
- all copies or substantial portions of the Software.
340
-
341
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
342
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
343
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
344
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
345
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
346
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
347
- THE SOFTWARE.
348
- =========================================
349
- END OF to-regex-range@5.0.1 NOTICES AND INFORMATION
60
+ END OF readdirp@4.1.2 NOTICES AND INFORMATION
350
61
 
351
62
  SUMMARY
352
63
  =========================================
353
- Total Packages: 14
64
+ Total Packages: 2
354
65
  =========================================
@@ -1,5 +1,5 @@
1
1
  {
2
- "global": "Usage: playwright-cli <command> [args] [options]\nUsage: playwright-cli -s=<session> <command> [args] [options]\n\nCore:\n open [url] open the browser\n attach [name] attach to a running playwright browser\n close close the browser\n detach detach from an attached browser\n goto <url> navigate to a url\n type <text> type text into editable element\n click <target> [button] perform click on a web page\n dblclick <target> [button] perform double click on a web page\n fill <target> <text> fill text into editable element\n drag <startTarget> <endTarget> perform drag and drop between two elements\n drop <target> drop files or data onto an element\n hover <target> hover over element on page\n select <target> <val> select an option in a dropdown\n upload <file> upload one or multiple files\n check <target> check a checkbox or radio button\n uncheck <target> uncheck a checkbox or radio button\n snapshot [target] capture page snapshot to obtain element ref\n find [text] search the page snapshot for text or a regexp, returning matching nodes with surrounding context (like search snippets)\n eval <func> [target] evaluate javascript expression on page or element\n dialog-accept [prompt] accept a dialog\n dialog-dismiss dismiss a dialog\n resize <w> <h> resize the browser window\n delete-data delete session data\n\nNavigation:\n go-back go back to the previous page\n go-forward go forward to the next page\n reload reload the current page\n\nKeyboard:\n press <key> press a key on the keyboard, `a`, `arrowleft`\n keydown <key> press a key down on the keyboard\n keyup <key> press a key up on the keyboard\n\nMouse:\n mousemove <x> <y> move mouse to a given position\n mousedown [button] press mouse down\n mouseup [button] press mouse up\n mousewheel <dx> <dy> scroll mouse wheel\n\nSave as:\n screenshot [target] screenshot of the current page or element\n pdf save page as pdf\n\nTabs:\n tab-list list all tabs\n tab-new [url] create a new tab\n tab-close [index] close a browser tab\n tab-select <index> select a browser tab\n\nStorage:\n state-load <filename> loads browser storage (authentication) state from a file\n state-save [filename] saves the current storage (authentication) state to a file\n cookie-list list all cookies (optionally filtered by domain/path)\n cookie-get <name> get a specific cookie by name\n cookie-set <name> <value> set a cookie with optional flags\n cookie-delete <name> delete a specific cookie\n cookie-clear clear all cookies\n localstorage-list list all localstorage key-value pairs\n localstorage-get <key> get a localstorage item by key\n localstorage-set <key> <value> set a localstorage item\n localstorage-delete <key> delete a localstorage item\n localstorage-clear clear all localstorage\n sessionstorage-list list all sessionstorage key-value pairs\n sessionstorage-get <key> get a sessionstorage item by key\n sessionstorage-set <key> <value> set a sessionstorage item\n sessionstorage-delete <key> delete a sessionstorage item\n sessionstorage-clear clear all sessionstorage\n\nNetwork:\n requests list all network requests since loading the page. each request is numbered for use with the `request` command.\n request <index> show full details (headers, body, response) of a single network request by its number from the `requests` command.\n request-headers <index> print only the request headers for a single network request by its number from the `requests` command.\n request-body <index> print only the request body for a single network request by its number from the `requests` command.\n response-headers <index> print only the response headers for a single network request by its number from the `requests` command.\n response-body <index> print the response body for a single network request by its number from the `requests` command. textual bodies are inlined; binary bodies are saved to a file and the path is printed.\n route <pattern> mock network requests matching a url pattern\n route-list list all active network routes\n unroute [pattern] remove routes matching a pattern (or all routes)\n network-state-set <state> set the browser network state to online or offline\n\nDevTools:\n console [min-level] list console messages\n run-code [code] run playwright code snippet\n tracing-start start trace recording\n tracing-stop stop trace recording\n video-start [filename] start video recording\n video-stop stop video recording\n video-chapter <title> add a chapter marker to the video recording\n video-show-actions annotate subsequent cli/mcp actions on the page with a callout that names the action and highlights the target element\n video-hide-actions stop annotating actions performed on the page\n show show playwright dashboard\n pause-at <location> run the test up to a specific location and pause there\n resume resume the test execution\n step-over step over the next call in the test\n generate-locator <target> generate a playwright locator for the given element\n highlight [target] show (or with --hide, remove) a highlight overlay for an element; `--hide` without a target hides all page highlights.\n\nInstall:\n install initialize workspace\n install-browser [browser] install browser\n\nBrowser sessions:\n list list browser sessions\n close-all close all browser sessions\n kill-all forcefully kill all browser sessions (for stale/zombie processes)\n\nGlobal options:\n --help [command] print help\n --json output response as JSON\n --raw output only the result value, without status and code\n --version print version",
2
+ "global": "Usage: playwright-cli <command> [args] [options]\nUsage: playwright-cli -s=<session> <command> [args] [options]\n\nCore:\n open [url] open the browser\n attach [name] attach to a running playwright browser\n close close the browser\n detach detach from an attached browser\n goto <url> navigate to a url\n type <text> type text into editable element\n click <target> [button] perform click on a web page\n dblclick <target> [button] perform double click on a web page\n fill <target> <text> fill text into editable element\n drag <startTarget> <endTarget> perform drag and drop between two elements\n drop <target> drop files or data onto an element\n hover <target> hover over element on page\n select <target> <val> select an option in a dropdown\n upload <files...> upload one or multiple files\n check <target> check a checkbox or radio button\n uncheck <target> uncheck a checkbox or radio button\n snapshot [target] capture page snapshot to obtain element ref\n find [text] search the page snapshot for text or a regexp, returning matching nodes with surrounding context (like search snippets)\n eval <func> [target] evaluate javascript expression on page or element\n dialog-accept [prompt] accept a dialog\n dialog-dismiss dismiss a dialog\n resize <w> <h> resize the browser window\n delete-data delete session data\n\nNavigation:\n go-back go back to the previous page\n go-forward go forward to the next page\n reload reload the current page\n\nKeyboard:\n press <key> press a key on the keyboard, `a`, `arrowleft`\n keydown <key> press a key down on the keyboard\n keyup <key> press a key up on the keyboard\n\nMouse:\n mousemove <x> <y> move mouse to a given position\n mousedown [button] press mouse down\n mouseup [button] press mouse up\n mousewheel <dx> <dy> scroll mouse wheel\n\nSave as:\n screenshot [target] screenshot of the current page or element\n pdf save page as pdf\n\nTabs:\n tab-list list all tabs\n tab-new [url] create a new tab\n tab-close [index] close a browser tab\n tab-select <index> select a browser tab\n\nStorage:\n state-load <filename> loads browser storage (authentication) state from a file\n state-save [filename] saves the current storage (authentication) state to a file\n cookie-list list all cookies (optionally filtered by domain/path)\n cookie-get <name> get a specific cookie by name\n cookie-set <name> <value> set a cookie with optional flags\n cookie-delete <name> delete a specific cookie\n cookie-clear clear all cookies\n localstorage-list list all localstorage key-value pairs\n localstorage-get <key> get a localstorage item by key\n localstorage-set <key> <value> set a localstorage item\n localstorage-delete <key> delete a localstorage item\n localstorage-clear clear all localstorage\n sessionstorage-list list all sessionstorage key-value pairs\n sessionstorage-get <key> get a sessionstorage item by key\n sessionstorage-set <key> <value> set a sessionstorage item\n sessionstorage-delete <key> delete a sessionstorage item\n sessionstorage-clear clear all sessionstorage\n\nNetwork:\n requests list all network requests since loading the page. each request is numbered for use with the `request` command.\n request <index> show full details (headers, body, response) of a single network request by its number from the `requests` command.\n request-headers <index> print only the request headers for a single network request by its number from the `requests` command.\n request-body <index> print only the request body for a single network request by its number from the `requests` command.\n response-headers <index> print only the response headers for a single network request by its number from the `requests` command.\n response-body <index> print the response body for a single network request by its number from the `requests` command. textual bodies are inlined; binary bodies are saved to a file and the path is printed.\n route <pattern> mock network requests matching a url pattern\n route-list list all active network routes\n unroute [pattern] remove routes matching a pattern (or all routes)\n network-state-set <state> set the browser network state to online or offline\n\nDevTools:\n console [min-level] list console messages\n run-code [code] run playwright code snippet\n recording-start start recording user actions\n recording-stop stop recording user actions and print them as playwright code\n tracing-start start trace recording\n tracing-stop stop trace recording\n video-start [filename] start video recording\n video-stop stop video recording\n video-chapter <title> add a chapter marker to the video recording\n video-show-actions annotate subsequent cli/mcp actions on the page with a callout that names the action and highlights the target element\n video-hide-actions stop annotating actions performed on the page\n show show playwright dashboard\n pause-at <location> run the test up to a specific location and pause there\n resume resume the test execution\n step-over step over the next call in the test\n generate-locator <target> generate a playwright locator for the given element\n highlight [target] show (or with --hide, remove) a highlight overlay for an element; `--hide` without a target hides all page highlights.\n\nInstall:\n install initialize workspace\n install-browser [browser] install browser\n\nBrowser sessions:\n list list browser sessions\n close-all close all browser sessions\n kill-all forcefully kill all browser sessions (for stale/zombie processes)\n\nGlobal options:\n --help [command] print help\n --json output response as JSON\n --raw output only the result value, without status and code\n --version print version",
3
3
  "commands": {
4
4
  "open": {
5
5
  "help": "playwright-cli open [url]\n\nOpen the browser\n\nArguments:\n [url] the url to navigate to\nOptions:\n --browser browser or chrome channel to use, possible values: chrome, firefox, webkit, msedge.\n --config path to the configuration file, defaults to .playwright/cli.config.json\n --device emulate a specific device, for example \"iphone 15\".\n --headed run browser in headed mode\n --mobile emulate a generic mobile device (pixel 10 for chromium, iphone 17 for webkit). mobile pages are usually lighter, which saves tokens.\n --persistent use persistent browser profile\n --profile path to a persistent user data directory.",
@@ -119,11 +119,12 @@
119
119
  ]
120
120
  },
121
121
  "upload": {
122
- "help": "playwright-cli upload <file>\n\nUpload one or multiple files\n\nArguments:\n <file> the absolute paths to the files to upload",
122
+ "help": "playwright-cli upload <files...>\n\nUpload one or multiple files\n\nArguments:\n <files...> the absolute paths to the files to upload",
123
123
  "flags": {},
124
124
  "args": [
125
- "file"
126
- ]
125
+ "files"
126
+ ],
127
+ "variadicArg": true
127
128
  },
128
129
  "check": {
129
130
  "help": "playwright-cli check <target>\n\nCheck a checkbox or radio button\n\nArguments:\n <target> exact target element reference from the page snapshot, or a unique element selector",
@@ -546,9 +547,10 @@
546
547
  "args": []
547
548
  },
548
549
  "install": {
549
- "help": "playwright-cli install \n\nInitialize workspace\n\nOptions:\n --skills install skills, possible values: claude (default), agents.",
550
+ "help": "playwright-cli install \n\nInitialize workspace\n\nOptions:\n --skills install skills, possible values: claude (default), agents.\n --global install skills into the home directory instead of the workspace (alias: -g). requires --skills.",
550
551
  "flags": {
551
- "skills": "string"
552
+ "skills": "string",
553
+ "global": "boolean"
552
554
  },
553
555
  "args": []
554
556
  },
@@ -566,6 +568,16 @@
566
568
  "browser"
567
569
  ]
568
570
  },
571
+ "recording-start": {
572
+ "help": "playwright-cli recording-start \n\nStart recording user actions\n",
573
+ "flags": {},
574
+ "args": []
575
+ },
576
+ "recording-stop": {
577
+ "help": "playwright-cli recording-stop \n\nStop recording user actions and print them as Playwright code\n",
578
+ "flags": {},
579
+ "args": []
580
+ },
569
581
  "tracing-start": {
570
582
  "help": "playwright-cli tracing-start \n\nStart trace recording\n",
571
583
  "flags": {},
@@ -694,6 +706,7 @@
694
706
  "httpOnly",
695
707
  "secure",
696
708
  "static",
709
+ "global",
697
710
  "with-deps",
698
711
  "dry-run",
699
712
  "list",
@@ -70,7 +70,7 @@ function minimist(args, opts) {
70
70
  } else {
71
71
  setArg(key, strings[key] ? "" : true);
72
72
  }
73
- } else if (/^-[^-]+/.test(arg)) {
73
+ } else if (/^-[A-Za-z]/.test(arg)) {
74
74
  const letters = arg.slice(1, -1).split("");
75
75
  let broken = false;
76
76
  for (let j = 0; j < letters.length; j++) {
@@ -80,6 +80,10 @@ class TextOutput {
80
80
  console.error(`Error: no target specified for attach command; use one of [name], --cdp, --endpoint, or --extension to specify the target to attach to.`);
81
81
  return process.exit(1);
82
82
  }
83
+ errorInstallGlobalRequiresSkills() {
84
+ console.error(`Error: --global requires --skills`);
85
+ return process.exit(1);
86
+ }
83
87
  list({ all, browsers, servers, channelSessions }) {
84
88
  const byWorkspace = /* @__PURE__ */ new Map();
85
89
  for (const browser of browsers) {
@@ -161,7 +165,7 @@ class TextOutput {
161
165
  attach(session, pid, endpoint, toolResult) {
162
166
  if (endpoint) {
163
167
  console.log(`### Session \`${session}\` created, attached to \`${endpoint}\`.`);
164
- console.log(`Run commands with: playwright-cli --s=${session} <command>`);
168
+ console.log(`Run commands with: playwright-cli -s=${session} <command>`);
165
169
  console.log("");
166
170
  } else {
167
171
  console.log(`### Browser \`${session}\` opened with pid ${pid}.`);
@@ -236,6 +240,10 @@ class JsonOutput {
236
240
  this._emit({ isError: true, error: `no target specified for attach command; use one of [name], --cdp, --endpoint, or --extension to specify the target to attach to.` });
237
241
  return process.exit(1);
238
242
  }
243
+ errorInstallGlobalRequiresSkills() {
244
+ this._emit({ isError: true, error: `--global requires --skills` });
245
+ return process.exit(1);
246
+ }
239
247
  list({ all, browsers, servers, channelSessions }) {
240
248
  const payload = { browsers };
241
249
  if (all) {
@@ -50,6 +50,7 @@ const globalOptions = [
50
50
  ];
51
51
  const booleanOptions = [
52
52
  "all",
53
+ "g",
53
54
  "help",
54
55
  "json",
55
56
  "raw",
@@ -65,6 +66,10 @@ async function program(options) {
65
66
  args.session = args.s;
66
67
  delete args.s;
67
68
  }
69
+ if (args.g) {
70
+ args.global = true;
71
+ delete args.g;
72
+ }
68
73
  const output = args.json ? new import_output.JsonOutput() : new import_output.TextOutput();
69
74
  const commandName = args._?.[0];
70
75
  if (args.version || args.v) {
@@ -168,6 +173,8 @@ async function program(options) {
168
173
  return;
169
174
  }
170
175
  case "install":
176
+ if (args.global && !args.skills)
177
+ output.errorInstallGlobalRequiresSkills();
171
178
  await runInitWorkspace(args, output);
172
179
  output.installed();
173
180
  return;
@@ -206,7 +213,8 @@ async function program(options) {
206
213
  const foreground = args.port !== void 0;
207
214
  const child = (0, import_child_process.spawn)(process.execPath, daemonArgs, {
208
215
  detached: !foreground,
209
- stdio: foreground ? "inherit" : ["pipe", "pipe", "ignore"]
216
+ stdio: foreground ? "inherit" : ["pipe", "pipe", "ignore"],
217
+ windowsHide: true
210
218
  });
211
219
  if (foreground) {
212
220
  await new Promise((resolve) => child.on("exit", () => resolve()));
@@ -260,6 +268,8 @@ async function runInSession(entry, clientInfo, args, output) {
260
268
  delete args[globalOption];
261
269
  const session = new import_session.Session(entry);
262
270
  const result = await session.run(clientInfo, args, { raw, json: output.json });
271
+ if (result.isError)
272
+ process.exitCode = 1;
263
273
  return result.text;
264
274
  }
265
275
  async function runInSessionOrStop(entry, clientInfo, args, output) {
@@ -273,7 +283,11 @@ async function runInSessionOrStop(entry, clientInfo, args, output) {
273
283
  }
274
284
  async function runInitWorkspace(args, output) {
275
285
  const cliPath = (0, import_package.libPath)("entry", "cliDaemon.js");
276
- const daemonArgs = [cliPath, "--init-workspace", ...args.skills ? ["--init-skills", String(args.skills)] : []];
286
+ const daemonArgs = [
287
+ cliPath,
288
+ "--init-workspace",
289
+ ...args.skills ? [args.global ? "--init-skills-global" : "--init-skills", String(args.skills)] : []
290
+ ];
277
291
  await new Promise((resolve, reject) => {
278
292
  const child = (0, import_child_process.spawn)(process.execPath, daemonArgs, {
279
293
  stdio: output.installStdio(),
@@ -389,7 +403,7 @@ function validateFlags(args, command, output) {
389
403
  }
390
404
  function validateArgs(args, command, output) {
391
405
  const positional = args._.slice(1);
392
- if (positional.length > command.args.length)
406
+ if (positional.length > command.args.length && !command.variadicArg)
393
407
  output.errorTooManyArguments(command.args.length, positional.length, command.help);
394
408
  }
395
409
  function calculateSha1(buffer) {
@@ -91,9 +91,9 @@ class Registry {
91
91
  }
92
92
  static async load() {
93
93
  const sessions = /* @__PURE__ */ new Map();
94
- const hashDirs = await import_fs.default.promises.readdir(baseDaemonDir).catch(() => []);
94
+ const hashDirs = await import_fs.default.promises.readdir(baseDaemonDir()).catch(() => []);
95
95
  for (const workspaceDirHash of hashDirs) {
96
- const daemonDir = import_path.default.join(baseDaemonDir, workspaceDirHash);
96
+ const daemonDir = import_path.default.join(baseDaemonDir(), workspaceDirHash);
97
97
  const stat = await import_fs.default.promises.stat(daemonDir);
98
98
  if (!stat.isDirectory())
99
99
  continue;
@@ -116,7 +116,7 @@ class Registry {
116
116
  return new Registry(sessions);
117
117
  }
118
118
  }
119
- const baseDaemonDir = (() => {
119
+ function computeBaseDaemonDir() {
120
120
  if (process.env.PWTEST_DAEMON_SESSION_DIR)
121
121
  return process.env.PWTEST_DAEMON_SESSION_DIR;
122
122
  let localCacheDir;
@@ -129,7 +129,11 @@ const baseDaemonDir = (() => {
129
129
  if (!localCacheDir)
130
130
  throw new Error("Unsupported platform: " + process.platform);
131
131
  return import_path.default.join(localCacheDir, "ms-playwright", "daemon");
132
- })();
132
+ }
133
+ let _baseDaemonDir;
134
+ function baseDaemonDir() {
135
+ return _baseDaemonDir ??= computeBaseDaemonDir();
136
+ }
133
137
  function createClientInfo() {
134
138
  const workspaceDir = findWorkspaceDir(process.cwd());
135
139
  const version = process.env.PLAYWRIGHT_CLI_VERSION_FOR_TEST || import_package.packageJSON.version;
@@ -157,7 +161,7 @@ function findWorkspaceDir(startDir) {
157
161
  return void 0;
158
162
  }
159
163
  const daemonProfilesDir = (workspaceDirHash) => {
160
- return import_path.default.join(baseDaemonDir, workspaceDirHash);
164
+ return import_path.default.join(baseDaemonDir(), workspaceDirHash);
161
165
  };
162
166
  function explicitSessionName(sessionName) {
163
167
  return sessionName || process.env.PLAYWRIGHT_CLI_SESSION;
@@ -151,8 +151,9 @@ to start the browser session.`);
151
151
  const child = (0, import_child_process.spawn)(process.execPath, args, {
152
152
  detached: true,
153
153
  stdio: ["ignore", "pipe", err],
154
- cwd: process.cwd()
154
+ cwd: process.cwd(),
155
155
  // Will be used as root.
156
+ windowsHide: true
156
157
  });
157
158
  let signalled = false;
158
159
  const sigintHandler = () => {
@@ -165,6 +165,11 @@ playwright-cli run-code "async page => await page.context().grantPermissions(['g
165
165
  playwright-cli run-code --filename=script.js
166
166
  playwright-cli tracing-start
167
167
  playwright-cli tracing-stop
168
+
169
+ # record user actions in the browser, print them as Playwright code on stop
170
+ playwright-cli recording-start
171
+ playwright-cli recording-stop
172
+
168
173
  playwright-cli video-start video.webm
169
174
  playwright-cli video-chapter "Chapter Title" --description="Details" --duration=2000
170
175
  playwright-cli video-stop
@@ -19,7 +19,7 @@ playwright-cli tracing-stop
19
19
 
20
20
  ## Trace Output Files
21
21
 
22
- When you start tracing, Playwright creates a `traces/` directory with several files:
22
+ When you start tracing, Playwright creates a `.playwright-cli/traces/` directory with several files:
23
23
 
24
24
  ### `trace-{timestamp}.trace`
25
25
 
@@ -45,7 +45,7 @@ Everything the component needs must be set up *inside the story* (it runs in the
45
45
 
46
46
  ## Conventions
47
47
 
48
- - Story id: path under `src/` without the `.story.*` extension, plus the export name — `src/components/Button.story.tsx` export `Primary` → `components/Button/Primary`. Any unique suffix works too: `mount('Button/Primary')`. A `.story.vue` single-file component is one story, addressable by its path alone (its `default` export).
48
+ - Story id: path under `src/` without the `.story.*` extension, plus the export name — `src/components/Button.story.tsx` export `Primary` → `components/Button/Primary`. Any unique suffix works too: `mount('Button/Primary')`. A `.story.vue` single-file component is one story, addressable by its path alone (its `default` export). With gallery types (`references/typing.md`) ids are prefixed with the package name: `acme-ui/components/Button/Primary`.
49
49
  - One export per scenario. Prefer a new story export over parameterizing an existing one — stories are greppable, reviewable documentation of component states.
50
50
 
51
51
  ## Testing patterns
@@ -89,15 +89,7 @@ export const WithTitle = ({ title = 'Default' }: { title?: string }) =>
89
89
  const component = await mount('components/Button/WithTitle', { title: 'Hello' });
90
90
  ```
91
91
 
92
- `mount` is generic over the story: pass the story type as a template argument to type-check the props (and `update()`):
93
-
94
- ```ts
95
- import type { WithTitle } from './Button.story';
96
-
97
- const component = await mount<typeof WithTitle>('components/Button/WithTitle', { title: 'Hello' });
98
- ```
99
-
100
- This works for React and Vue stories alike; Vue stories must additionally declare the props at runtime — see the `Typed props` sections in `references/react.md` / `references/vue.md`.
92
+ Props are type-checked in two optional ways, see `references/typing.md`: pass the story type as a template argument (`mount<typeof WithTitle>('components/Button/WithTitle', { title: 'Hello' })`, no setup), or generate gallery types with a small Vite plugin so the id itself is typed (`mount('acme-ui/components/Button/WithTitle', { title: 'Hello' })`, with autocomplete and rename safety). Vue stories must additionally declare the props at runtime — see the `Typed props` sections in `references/react.md` / `references/vue.md`.
101
93
 
102
94
  ### Prop transitions with `update()`
103
95
 
@@ -133,11 +125,12 @@ Open your gallery URL (`baseURL`) in a browser and call `await window.mount({ st
133
125
 
134
126
  ## Decision points
135
127
 
136
- - **Monorepos / non-`src` layouts**: change the glob and the id derivation in your gallery (`references/gallery-spec.md`) to match.
128
+ - **Monorepos / non-`src` layouts**: change the glob and the id derivation in your gallery (`references/gallery-spec.md`) to match, and prefix ids with the package name (`references/typing.md`).
137
129
  - **Global providers** (theme, i18n, store, router): create a shared `decorator` helper next to the gallery and wrap components in stories; see `references/react.md` / `references/vue.md`.
138
130
  ## References
139
131
 
140
132
  - `references/gallery-spec.md` — the gallery endpoint contract to implement (**start here**).
133
+ - `references/typing.md` — optional typing for `mount`: explicit story types vs generated gallery types, with the Vite plugin.
141
134
  - `references/react.md` — React walkthrough: providers, StrictMode, CSS.
142
135
  - `references/vue.md` — Vue walkthrough: `.story.ts` and `.story.vue` stories, plugins.
143
136
  - `references/migration.md` — migrating off `@playwright/experimental-ct-react` / `-vue`.