@playwright-repl/runner 0.21.2

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 (162) hide show
  1. package/README.md +116 -0
  2. package/dist/args.d.ts +16 -0
  3. package/dist/args.d.ts.map +1 -0
  4. package/dist/args.js +48 -0
  5. package/dist/args.js.map +1 -0
  6. package/dist/bridge-utils.cjs +197 -0
  7. package/dist/bridge-utils.cjs.map +1 -0
  8. package/dist/bridge-utils.d.cts +30 -0
  9. package/dist/bridge-utils.d.cts.map +1 -0
  10. package/dist/browser.d.ts +12 -0
  11. package/dist/browser.d.ts.map +1 -0
  12. package/dist/browser.js +40 -0
  13. package/dist/browser.js.map +1 -0
  14. package/dist/bundler.d.ts +6 -0
  15. package/dist/bundler.d.ts.map +1 -0
  16. package/dist/bundler.js +32 -0
  17. package/dist/bundler.js.map +1 -0
  18. package/dist/cdpPreload.cjs +44 -0
  19. package/dist/cdpPreload.cjs.map +1 -0
  20. package/dist/cdpPreload.d.cts +11 -0
  21. package/dist/cdpPreload.d.cts.map +1 -0
  22. package/dist/chrome-extension/background.js +233485 -0
  23. package/dist/chrome-extension/background.js.map +1 -0
  24. package/dist/chrome-extension/content/picker.js +279 -0
  25. package/dist/chrome-extension/content/recorder.js +475 -0
  26. package/dist/chrome-extension/devtools/console.html +17 -0
  27. package/dist/chrome-extension/devtools/console.js +28 -0
  28. package/dist/chrome-extension/devtools/console.js.map +1 -0
  29. package/dist/chrome-extension/devtools/devtools.html +8 -0
  30. package/dist/chrome-extension/devtools/devtools.js +7 -0
  31. package/dist/chrome-extension/devtools/devtools.js.map +1 -0
  32. package/dist/chrome-extension/icons/dramaturg_icon_128.png +0 -0
  33. package/dist/chrome-extension/icons/dramaturg_icon_16.png +0 -0
  34. package/dist/chrome-extension/icons/dramaturg_icon_32.png +0 -0
  35. package/dist/chrome-extension/icons/dramaturg_icon_48.png +0 -0
  36. package/dist/chrome-extension/index.css +1333 -0
  37. package/dist/chrome-extension/index.js +12462 -0
  38. package/dist/chrome-extension/index.js.map +1 -0
  39. package/dist/chrome-extension/index2.js +27327 -0
  40. package/dist/chrome-extension/index2.js.map +1 -0
  41. package/dist/chrome-extension/manifest.json +46 -0
  42. package/dist/chrome-extension/modulepreload-polyfill.js +30 -0
  43. package/dist/chrome-extension/modulepreload-polyfill.js.map +1 -0
  44. package/dist/chrome-extension/newtab/newtab.html +202 -0
  45. package/dist/chrome-extension/offscreen/offscreen.html +6 -0
  46. package/dist/chrome-extension/offscreen/offscreen.js +54 -0
  47. package/dist/chrome-extension/offscreen/offscreen.js.map +1 -0
  48. package/dist/chrome-extension/panel/panel.html +16 -0
  49. package/dist/chrome-extension/panel/panel.js +2210 -0
  50. package/dist/chrome-extension/panel/panel.js.map +1 -0
  51. package/dist/chrome-extension/preferences/preferences.html +14 -0
  52. package/dist/chrome-extension/preferences/preferences.js +102 -0
  53. package/dist/chrome-extension/preferences/preferences.js.map +1 -0
  54. package/dist/chrome-extension/settings.js +13 -0
  55. package/dist/chrome-extension/settings.js.map +1 -0
  56. package/dist/chrome-extension/sw-debugger-core.js +1127 -0
  57. package/dist/chrome-extension/sw-debugger-core.js.map +1 -0
  58. package/dist/cli.d.ts +14 -0
  59. package/dist/cli.d.ts.map +1 -0
  60. package/dist/cli.js +43 -0
  61. package/dist/cli.js.map +1 -0
  62. package/dist/compiler/classify.d.ts +13 -0
  63. package/dist/compiler/classify.d.ts.map +1 -0
  64. package/dist/compiler/classify.js +143 -0
  65. package/dist/compiler/classify.js.map +1 -0
  66. package/dist/compiler/index.d.ts +24 -0
  67. package/dist/compiler/index.d.ts.map +1 -0
  68. package/dist/compiler/index.js +41 -0
  69. package/dist/compiler/index.js.map +1 -0
  70. package/dist/compiler/parser.d.ts +24 -0
  71. package/dist/compiler/parser.d.ts.map +1 -0
  72. package/dist/compiler/parser.js +77 -0
  73. package/dist/compiler/parser.js.map +1 -0
  74. package/dist/compiler/transform.d.ts +20 -0
  75. package/dist/compiler/transform.d.ts.map +1 -0
  76. package/dist/compiler/transform.js +36 -0
  77. package/dist/compiler/transform.js.map +1 -0
  78. package/dist/compiler.d.ts +24 -0
  79. package/dist/compiler.d.ts.map +1 -0
  80. package/dist/compiler.js +129 -0
  81. package/dist/compiler.js.map +1 -0
  82. package/dist/config.d.ts +6 -0
  83. package/dist/config.d.ts.map +1 -0
  84. package/dist/config.js +16 -0
  85. package/dist/config.js.map +1 -0
  86. package/dist/discover.d.ts +5 -0
  87. package/dist/discover.d.ts.map +1 -0
  88. package/dist/discover.js +46 -0
  89. package/dist/discover.js.map +1 -0
  90. package/dist/execute.d.ts +13 -0
  91. package/dist/execute.d.ts.map +1 -0
  92. package/dist/execute.js +281 -0
  93. package/dist/execute.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +2 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/mode-detect.d.ts +21 -0
  99. package/dist/mode-detect.d.ts.map +1 -0
  100. package/dist/mode-detect.js +67 -0
  101. package/dist/mode-detect.js.map +1 -0
  102. package/dist/proxy-page.d.ts +32 -0
  103. package/dist/proxy-page.d.ts.map +1 -0
  104. package/dist/proxy-page.js +192 -0
  105. package/dist/proxy-page.js.map +1 -0
  106. package/dist/pw-cli.d.ts +12 -0
  107. package/dist/pw-cli.d.ts.map +1 -0
  108. package/dist/pw-cli.js +73 -0
  109. package/dist/pw-cli.js.map +1 -0
  110. package/dist/pw-launch.d.ts +15 -0
  111. package/dist/pw-launch.d.ts.map +1 -0
  112. package/dist/pw-launch.js +97 -0
  113. package/dist/pw-launch.js.map +1 -0
  114. package/dist/pw-preload.cjs +164 -0
  115. package/dist/pw-preload.cjs.map +1 -0
  116. package/dist/pw-preload.d.cts +15 -0
  117. package/dist/pw-preload.d.cts.map +1 -0
  118. package/dist/pw-repl-extension.d.ts +12 -0
  119. package/dist/pw-repl-extension.d.ts.map +1 -0
  120. package/dist/pw-repl-extension.js +100 -0
  121. package/dist/pw-repl-extension.js.map +1 -0
  122. package/dist/pw-repl.d.ts +12 -0
  123. package/dist/pw-repl.d.ts.map +1 -0
  124. package/dist/pw-repl.js +111 -0
  125. package/dist/pw-repl.js.map +1 -0
  126. package/dist/pw-worker.cjs +216 -0
  127. package/dist/pw-worker.cjs.map +1 -0
  128. package/dist/pw-worker.d.cts +13 -0
  129. package/dist/pw-worker.d.cts.map +1 -0
  130. package/dist/pw-worker.d.ts +11 -0
  131. package/dist/pw-worker.d.ts.map +1 -0
  132. package/dist/pw-worker.js +51 -0
  133. package/dist/pw-worker.js.map +1 -0
  134. package/dist/run-test.d.ts +22 -0
  135. package/dist/run-test.d.ts.map +1 -0
  136. package/dist/run-test.js +358 -0
  137. package/dist/run-test.js.map +1 -0
  138. package/dist/runner.d.ts +10 -0
  139. package/dist/runner.d.ts.map +1 -0
  140. package/dist/runner.js +82 -0
  141. package/dist/runner.js.map +1 -0
  142. package/dist/shim/alias.d.ts +11 -0
  143. package/dist/shim/alias.d.ts.map +1 -0
  144. package/dist/shim/alias.js +24 -0
  145. package/dist/shim/alias.js.map +1 -0
  146. package/dist/shim/framework.d.ts +11 -0
  147. package/dist/shim/framework.d.ts.map +1 -0
  148. package/dist/shim/framework.js +11 -0
  149. package/dist/shim/framework.js.map +1 -0
  150. package/dist/shim/test-runner-node.d.ts +49 -0
  151. package/dist/shim/test-runner-node.d.ts.map +1 -0
  152. package/dist/shim/test-runner-node.js +191 -0
  153. package/dist/shim/test-runner-node.js.map +1 -0
  154. package/dist/shim/test-runner.d.ts +44 -0
  155. package/dist/shim/test-runner.d.ts.map +1 -0
  156. package/dist/shim/test-runner.js +181 -0
  157. package/dist/shim/test-runner.js.map +1 -0
  158. package/dist/types.d.ts +41 -0
  159. package/dist/types.d.ts.map +1 -0
  160. package/dist/types.js +2 -0
  161. package/dist/types.js.map +1 -0
  162. package/package.json +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-page.js","sourceRoot":"","sources":["../src/proxy-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * pw — drop-in replacement for npx playwright test
4
+ *
5
+ * Routes test files:
6
+ * - Bridge-eligible files → direct bridge execution (fast, no test runner overhead)
7
+ * - Node-mode files → standard `npx playwright test` (full compatibility)
8
+ *
9
+ * When no bridge is available, all tests go through standard Playwright.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=pw-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-cli.d.ts","sourceRoot":"","sources":["../src/pw-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
package/dist/pw-cli.js ADDED
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * pw — drop-in replacement for npx playwright test
4
+ *
5
+ * Routes test files:
6
+ * - Bridge-eligible files → direct bridge execution (fast, no test runner overhead)
7
+ * - Node-mode files → standard `npx playwright test` (full compatibility)
8
+ *
9
+ * When no bridge is available, all tests go through standard Playwright.
10
+ */
11
+ import { spawn } from 'node:child_process';
12
+ import { createRequire } from 'node:module';
13
+ import path from 'node:path';
14
+ import fs from 'node:fs';
15
+ import { fileURLToPath } from 'node:url';
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const _require = createRequire(__filename);
18
+ // Resolve Playwright CLI from the user's project to avoid duplicate module instances
19
+ const projectRequire = createRequire(path.join(process.cwd(), 'package.json'));
20
+ let pwCliPath;
21
+ try {
22
+ pwCliPath = projectRequire.resolve('@playwright/test/cli');
23
+ }
24
+ catch {
25
+ pwCliPath = _require.resolve('@playwright/test/cli');
26
+ }
27
+ // Chrome extension: bundled in dist/chrome-extension/ (npm), or monorepo fallback (dev)
28
+ const bundledExt = path.resolve(path.dirname(__filename), 'chrome-extension');
29
+ const monorepoExt = path.resolve(path.dirname(__filename), '../../extension/dist');
30
+ const extPath = fs.existsSync(path.join(bundledExt, 'manifest.json'))
31
+ ? bundledExt
32
+ : monorepoExt;
33
+ const args = process.argv.slice(2);
34
+ const subcommand = args[0];
35
+ // ─── Subcommands ─────────────────────────────────────────────────────────────
36
+ if (subcommand === 'launch') {
37
+ const { handleLaunch } = await import('./pw-launch.js');
38
+ await handleLaunch(args.slice(1));
39
+ process.exit(0);
40
+ }
41
+ if (subcommand === 'close') {
42
+ const { handleClose } = await import('./pw-launch.js');
43
+ await handleClose(args.slice(1));
44
+ process.exit(0);
45
+ }
46
+ if (subcommand === 'repl') {
47
+ const { handleRepl } = await import('./pw-repl.js');
48
+ await handleRepl(args.slice(1));
49
+ // handleRepl keeps process alive via node:repl — don't exit here
50
+ }
51
+ if (subcommand === 'repl-extension') {
52
+ const { handleReplExtension } = await import('./pw-repl-extension.js');
53
+ await handleReplExtension(args.slice(1));
54
+ // handleReplExtension keeps process alive via node:repl
55
+ }
56
+ // ─── Default: test ───────────────────────────────────────────────────────────
57
+ if (args.length === 0 || (args[0] && args[0].startsWith('-'))) {
58
+ args.unshift('test');
59
+ }
60
+ // Run tests via standard Playwright — no preload, no Module._load hooks.
61
+ // Bridge mode is handled by the VS Code extension's _tryDirectBridge.
62
+ const child = spawn(process.execPath, [pwCliPath, ...args], {
63
+ stdio: 'inherit',
64
+ cwd: process.cwd(),
65
+ env: {
66
+ ...process.env,
67
+ PW_EXT_PATH: extPath,
68
+ },
69
+ });
70
+ child.on('exit', (code) => {
71
+ process.exit(code ?? 1);
72
+ });
73
+ //# sourceMappingURL=pw-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-cli.js","sourceRoot":"","sources":["../src/pw-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE3C,qFAAqF;AACrF,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/E,IAAI,SAAiB,CAAC;AACtB,IAAI,CAAC;IACH,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC7D,CAAC;AAAC,MAAM,CAAC;IACP,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACvD,CAAC;AACD,wFAAwF;AACxF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACnF,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,WAAW,CAAC;AAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3B,gFAAgF;AAEhF,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;IAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,iEAAiE;AACnE,CAAC;AAED,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;IACpC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACvE,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,wDAAwD;AAC1D,CAAC;AAED,gFAAgF;AAEhF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AAED,yEAAyE;AACzE,sEAAsE;AACtE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;IAC1D,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,GAAG,EAAE;QACH,GAAG,OAAO,CAAC,GAAG;QACd,WAAW,EAAE,OAAO;KACrB;CACF,CAAC,CAAC;AAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;IACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * pw launch / pw close — browser lifecycle management.
3
+ *
4
+ * Launches Chrome with the extension loaded and --remote-debugging-port.
5
+ * Injects the bridge port into the extension so it knows where to connect
6
+ * when pw repl-extension starts a BridgeServer later.
7
+ *
8
+ * Usage:
9
+ * pw launch --port 9222 # launch Chrome + extension
10
+ * pw launch --port 9222 --bridge-port 9877 # custom bridge port
11
+ * pw close --port 9222 # close browser via CDP
12
+ */
13
+ export declare function handleLaunch(argv: string[]): Promise<void>;
14
+ export declare function handleClose(argv: string[]): Promise<void>;
15
+ //# sourceMappingURL=pw-launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-launch.d.ts","sourceRoot":"","sources":["../src/pw-launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0BH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDhE;AAID,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAW/D"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * pw launch / pw close — browser lifecycle management.
3
+ *
4
+ * Launches Chrome with the extension loaded and --remote-debugging-port.
5
+ * Injects the bridge port into the extension so it knows where to connect
6
+ * when pw repl-extension starts a BridgeServer later.
7
+ *
8
+ * Usage:
9
+ * pw launch --port 9222 # launch Chrome + extension
10
+ * pw launch --port 9222 --bridge-port 9877 # custom bridge port
11
+ * pw close --port 9222 # close browser via CDP
12
+ */
13
+ import fs from 'node:fs';
14
+ import path from 'node:path';
15
+ import { createRequire } from 'node:module';
16
+ import { fileURLToPath } from 'node:url';
17
+ import { minimist } from '@playwright-repl/core';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const _require = createRequire(__filename);
20
+ // ─── Extension path resolution ───────────────────────────────────────────────
21
+ function findExtensionPath() {
22
+ const bundledExt = path.resolve(path.dirname(__filename), 'chrome-extension');
23
+ const coreMain = _require.resolve('@playwright-repl/core');
24
+ const coreDir = coreMain.replace(/[\\/]dist[\\/].*$/, '');
25
+ const monorepoExt = path.resolve(coreDir, '../extension/dist');
26
+ const extPath = fs.existsSync(path.join(bundledExt, 'manifest.json')) ? bundledExt : monorepoExt;
27
+ if (!fs.existsSync(path.join(extPath, 'manifest.json')))
28
+ throw new Error('Chrome extension not found. Run "pnpm run build" first.');
29
+ return extPath;
30
+ }
31
+ // ─── handleLaunch ────────────────────────────────────────────────────────────
32
+ export async function handleLaunch(argv) {
33
+ const args = minimist(argv, {
34
+ boolean: ['headless'],
35
+ string: ['port', 'bridge-port'],
36
+ default: { port: '9222', 'bridge-port': '9877' },
37
+ });
38
+ const port = parseInt(args.port, 10);
39
+ const bridgePort = parseInt(args['bridge-port'], 10);
40
+ const headless = args.headless;
41
+ const extPath = findExtensionPath();
42
+ // 1. Launch Chrome with extension
43
+ const pw = _require('@playwright/test');
44
+ const os = await import('node:os');
45
+ const userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'pw-repl-'));
46
+ const defaultDir = path.join(userDataDir, 'Default');
47
+ fs.mkdirSync(defaultDir, { recursive: true });
48
+ fs.writeFileSync(path.join(defaultDir, 'Preferences'), JSON.stringify({
49
+ devtools: { preferences: { currentDockState: '"bottom"' } },
50
+ }));
51
+ const browserContext = await pw.chromium.launchPersistentContext(userDataDir, {
52
+ channel: 'chromium',
53
+ headless,
54
+ args: [
55
+ `--disable-extensions-except=${extPath}`,
56
+ `--load-extension=${extPath}`,
57
+ '--no-first-run',
58
+ '--no-default-browser-check',
59
+ '--disable-background-timer-throttling',
60
+ '--disable-infobars',
61
+ `--remote-debugging-port=${port}`,
62
+ ],
63
+ });
64
+ console.log(`Chrome launched on CDP port ${port}`);
65
+ // 2. Inject bridge port into extension via service worker
66
+ let sw = browserContext.serviceWorkers()[0];
67
+ if (!sw)
68
+ sw = await browserContext.waitForEvent('serviceworker', { timeout: 10000 });
69
+ await sw.evaluate((p) => {
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ globalThis.chrome.storage.local.set({ bridgePort: p });
72
+ }, bridgePort);
73
+ console.log(`Bridge port ${bridgePort} set via service worker`);
74
+ console.log(`Ready! CDP: ${port} | Bridge: ${bridgePort}`);
75
+ console.log('Extension will connect when BridgeServer starts (pw repl-extension).');
76
+ // Keep alive, Ctrl+C to close
77
+ await new Promise((resolve) => {
78
+ process.on('SIGINT', async () => {
79
+ console.log('\nClosing...');
80
+ await browserContext.close().catch(() => { });
81
+ resolve();
82
+ });
83
+ });
84
+ }
85
+ // ─── handleClose ─────────────────────────────────────────────────────────────
86
+ export async function handleClose(argv) {
87
+ const args = minimist(argv, {
88
+ string: ['port'],
89
+ default: { port: '9222' },
90
+ });
91
+ const port = parseInt(args.port, 10);
92
+ const pw = _require('@playwright/test');
93
+ const browser = await pw.chromium.connectOverCDP(`http://localhost:${port}`);
94
+ await browser.close();
95
+ console.log(`Browser on port ${port} closed.`);
96
+ }
97
+ //# sourceMappingURL=pw-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-launch.js","sourceRoot":"","sources":["../src/pw-launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ /**
3
+ * Preloaded via NODE_OPTIONS --require.
4
+ *
5
+ * Patches Playwright's chromium.launch for:
6
+ * 1. Context reuse — shared context/page across tests in a worker
7
+ * 2. CDP reuse — connectOverCDP when PW_REUSE_CDP is set
8
+ *
9
+ * Also patches workerMain to route bridge-eligible tests to the bridge.
10
+ *
11
+ * Uses process 'loaded' event to patch AFTER all modules are initialized,
12
+ * avoiding Module._load hooks that interfere with Playwright's test file
13
+ * loading context (which causes "two different versions" errors).
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const Module = require("module");
17
+ const path = require("path");
18
+ let sharedContext = null;
19
+ let sharedPage = null;
20
+ let defaultViewport = null;
21
+ // ─── workerMain interception (must use Module._load for this) ────────────────
22
+ // Only intercept 'workerMain', pass everything else through immediately.
23
+ const origLoad = Module._load;
24
+ let workerPatched = false;
25
+ Module._load = function (request, parent) {
26
+ // Only intercept workerMain — everything else passes through untouched
27
+ if (!workerPatched && typeof request === 'string' && request.includes('workerMain')) {
28
+ workerPatched = true;
29
+ // Remove hook BEFORE loading workerMain so test file loading
30
+ // goes through the original Module._load (no foreign stack frames)
31
+ Module._load = origLoad;
32
+ const realModule = origLoad.call(this, request, parent);
33
+ const origCreate = realModule.create;
34
+ return {
35
+ create(params) {
36
+ const worker = origCreate(params);
37
+ const bridge = origLoad.call(this, path.resolve(__dirname, 'pw-worker.cjs'), module);
38
+ bridge.patchWorker(worker, params);
39
+ return worker;
40
+ },
41
+ };
42
+ }
43
+ // Pass through — hook is still active but only until workerMain is found
44
+ return origLoad.apply(this, arguments);
45
+ };
46
+ // ─── chromium.launch patching (deferred, no Module._load) ────────────────────
47
+ // Use setImmediate to patch after all --require scripts and the main module
48
+ // have loaded. By this time, @playwright/test is in the module cache.
49
+ setImmediate(() => {
50
+ let pw;
51
+ try {
52
+ // Resolve from user's project to avoid duplicate module instances
53
+ const { createRequire } = require('module');
54
+ const projectRequire = createRequire(path.join(process.cwd(), 'package.json'));
55
+ pw = projectRequire('@playwright/test');
56
+ }
57
+ catch {
58
+ try {
59
+ pw = require('@playwright/test');
60
+ }
61
+ catch {
62
+ return; // @playwright/test not available, nothing to patch
63
+ }
64
+ }
65
+ if (!pw?.chromium?.launch || pw.chromium.launch._pwReusePatched)
66
+ return;
67
+ pw.chromium.launch._pwReusePatched = true;
68
+ const origLaunch = pw.chromium.launch;
69
+ pw.chromium.launch = async function () {
70
+ const cdpEndpoint = process.env.PW_REUSE_CDP;
71
+ // When BrowserManager is running, connect to its browser via CDP
72
+ if (cdpEndpoint && pw.chromium.connectOverCDP) {
73
+ let browser;
74
+ try {
75
+ browser = await pw.chromium.connectOverCDP(cdpEndpoint);
76
+ }
77
+ catch {
78
+ // Browser not running — fall back to normal launch
79
+ return origLaunch.apply(this, arguments);
80
+ }
81
+ // Reuse existing context from BrowserManager
82
+ const origNewContext = browser.newContext.bind(browser);
83
+ browser.newContext = async function (contextOptions) {
84
+ if (!sharedContext) {
85
+ const contexts = browser.contexts();
86
+ if (contexts.length > 0) {
87
+ sharedContext = contexts[0];
88
+ sharedPage = sharedContext.pages()[0] || await sharedContext.newPage();
89
+ }
90
+ else {
91
+ sharedContext = await origNewContext(contextOptions);
92
+ sharedPage = sharedContext.pages()[0] || await sharedContext.newPage();
93
+ }
94
+ defaultViewport = sharedPage.viewportSize();
95
+ }
96
+ else {
97
+ try {
98
+ await sharedContext.clearCookies();
99
+ await sharedContext.clearPermissions().catch(() => { });
100
+ await sharedContext.unrouteAll({ behavior: 'ignoreErrors' }).catch(() => { });
101
+ await sharedPage.unrouteAll({ behavior: 'ignoreErrors' }).catch(() => { });
102
+ if (defaultViewport)
103
+ await sharedPage.setViewportSize(defaultViewport);
104
+ await sharedPage.evaluate(() => {
105
+ try {
106
+ localStorage.clear();
107
+ }
108
+ catch { }
109
+ try {
110
+ sessionStorage.clear();
111
+ }
112
+ catch { }
113
+ }).catch(() => { });
114
+ await sharedPage.goto('about:blank', { waitUntil: 'commit' });
115
+ }
116
+ catch { }
117
+ }
118
+ sharedContext.newPage = async () => sharedPage;
119
+ sharedContext.close = async () => { };
120
+ return sharedContext;
121
+ };
122
+ // Don't close BrowserManager's browser
123
+ browser.close = async () => { };
124
+ return browser;
125
+ }
126
+ // Normal path: launch new browser, reuse context across tests
127
+ const browser = await origLaunch.apply(this, arguments);
128
+ const origNewContext = browser.newContext.bind(browser);
129
+ browser.newContext = async function (contextOptions) {
130
+ if (!sharedContext) {
131
+ sharedContext = await origNewContext(contextOptions);
132
+ sharedPage = sharedContext.pages()[0] || await sharedContext.newPage();
133
+ defaultViewport = sharedPage.viewportSize();
134
+ }
135
+ else {
136
+ try {
137
+ await sharedContext.clearCookies();
138
+ await sharedContext.clearPermissions().catch(() => { });
139
+ await sharedContext.unrouteAll({ behavior: 'ignoreErrors' }).catch(() => { });
140
+ await sharedPage.unrouteAll({ behavior: 'ignoreErrors' }).catch(() => { });
141
+ if (defaultViewport)
142
+ await sharedPage.setViewportSize(defaultViewport);
143
+ await sharedPage.evaluate(() => {
144
+ try {
145
+ localStorage.clear();
146
+ }
147
+ catch { }
148
+ try {
149
+ sessionStorage.clear();
150
+ }
151
+ catch { }
152
+ }).catch(() => { });
153
+ await sharedPage.goto('about:blank', { waitUntil: 'commit' });
154
+ }
155
+ catch { }
156
+ }
157
+ sharedContext.newPage = async () => sharedPage;
158
+ sharedContext.close = async () => { };
159
+ return sharedContext;
160
+ };
161
+ return browser;
162
+ };
163
+ });
164
+ //# sourceMappingURL=pw-preload.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-preload.cjs","sourceRoot":"","sources":["../src/pw-preload.cts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Preloaded via NODE_OPTIONS --require.
3
+ *
4
+ * Patches Playwright's chromium.launch for:
5
+ * 1. Context reuse — shared context/page across tests in a worker
6
+ * 2. CDP reuse — connectOverCDP when PW_REUSE_CDP is set
7
+ *
8
+ * Also patches workerMain to route bridge-eligible tests to the bridge.
9
+ *
10
+ * Uses process 'loaded' event to patch AFTER all modules are initialized,
11
+ * avoiding Module._load hooks that interfere with Playwright's test file
12
+ * loading context (which causes "two different versions" errors).
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=pw-preload.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-preload.d.cts","sourceRoot":"","sources":["../src/pw-preload.cts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * pw repl-extension — REPL that routes commands through the Chrome extension bridge.
3
+ *
4
+ * Starts a BridgeServer and waits for the extension to connect. The extension
5
+ * retries every 3s, so start this after `pw launch --bridge-port <port>`.
6
+ *
7
+ * Usage:
8
+ * pw repl-extension --bridge-port 9877 # interactive REPL
9
+ * pw repl-extension --bridge-port 9877 bench.js # run script, exit
10
+ */
11
+ export declare function handleReplExtension(argv: string[]): Promise<void>;
12
+ //# sourceMappingURL=pw-repl-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-repl-extension.d.ts","sourceRoot":"","sources":["../src/pw-repl-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFvE"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * pw repl-extension — REPL that routes commands through the Chrome extension bridge.
3
+ *
4
+ * Starts a BridgeServer and waits for the extension to connect. The extension
5
+ * retries every 3s, so start this after `pw launch --bridge-port <port>`.
6
+ *
7
+ * Usage:
8
+ * pw repl-extension --bridge-port 9877 # interactive REPL
9
+ * pw repl-extension --bridge-port 9877 bench.js # run script, exit
10
+ */
11
+ import repl from 'node:repl';
12
+ import { inspect } from 'node:util';
13
+ import fs from 'node:fs';
14
+ import { BridgeServer, minimist } from '@playwright-repl/core';
15
+ export async function handleReplExtension(argv) {
16
+ const args = minimist(argv, {
17
+ string: ['bridge-port'],
18
+ default: { 'bridge-port': '9877' },
19
+ });
20
+ const bridgePort = parseInt(args['bridge-port'], 10);
21
+ const scriptFile = args._[0];
22
+ // Start BridgeServer and wait for extension to connect
23
+ const bridge = new BridgeServer();
24
+ await bridge.start(bridgePort);
25
+ console.log(`BridgeServer on port ${bridge.port}`);
26
+ console.log('Waiting for extension to connect...');
27
+ await bridge.waitForConnection(30000);
28
+ console.log('Extension connected.');
29
+ // Script mode: read file, run through bridge, print timing, exit
30
+ if (scriptFile) {
31
+ const script = fs.readFileSync(scriptFile, 'utf-8');
32
+ const start = performance.now();
33
+ try {
34
+ const result = await bridge.runScript(script, 'javascript');
35
+ const elapsed = performance.now() - start;
36
+ if (result.text)
37
+ console.log(result.text);
38
+ console.log(`${elapsed.toFixed(1)}ms${result.isError ? ' (error)' : ''}`);
39
+ }
40
+ catch (e) {
41
+ const elapsed = performance.now() - start;
42
+ console.error(e.message);
43
+ console.log(`${elapsed.toFixed(1)}ms (error)`);
44
+ }
45
+ await bridge.close();
46
+ process.exit(0);
47
+ }
48
+ let lastElapsed = 0;
49
+ function formatValue(value) {
50
+ if (value === undefined || value === null)
51
+ return '';
52
+ if (typeof value === 'string')
53
+ return value;
54
+ if (typeof value === 'number' || typeof value === 'boolean')
55
+ return String(value);
56
+ return inspect(value, { depth: 1, colors: true });
57
+ }
58
+ const r = repl.start({
59
+ prompt: 'pw> ',
60
+ eval: (input, _context, _file, cb) => {
61
+ const cmd = input.trim();
62
+ if (!cmd) {
63
+ cb(null, undefined);
64
+ return;
65
+ }
66
+ const start = performance.now();
67
+ bridge.run(cmd).then((result) => {
68
+ lastElapsed = performance.now() - start;
69
+ if (result.isError) {
70
+ cb(new Error(result.text || 'Unknown error'));
71
+ }
72
+ else {
73
+ cb(null, result.text || undefined);
74
+ }
75
+ }, (err) => {
76
+ lastElapsed = performance.now() - start;
77
+ cb(err);
78
+ });
79
+ },
80
+ writer(value) {
81
+ const formatted = formatValue(value);
82
+ const timing = `(${lastElapsed.toFixed(1)}ms)`;
83
+ lastElapsed = 0;
84
+ if (!formatted && !timing)
85
+ return '';
86
+ if (!formatted)
87
+ return timing;
88
+ return timing ? `${formatted}\n${timing}` : formatted;
89
+ },
90
+ });
91
+ // Block until REPL exits (Ctrl+D / .exit)
92
+ await new Promise((resolve) => {
93
+ r.on('exit', async () => {
94
+ await bridge.close();
95
+ resolve();
96
+ });
97
+ });
98
+ process.exit(0);
99
+ }
100
+ //# sourceMappingURL=pw-repl-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-repl-extension.js","sourceRoot":"","sources":["../src/pw-repl-extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * pw repl — minimal Node REPL with Playwright globals.
3
+ *
4
+ * Connects to an existing Chrome via CDP, exposes page/context/browser/expect
5
+ * on the REPL context, and lets you type raw Playwright API or plain JS.
6
+ *
7
+ * Usage:
8
+ * pw repl --port 9222 # interactive REPL
9
+ * pw repl --port 9222 bench.js # run script, exit (browser stays alive)
10
+ */
11
+ export declare function handleRepl(argv: string[]): Promise<void>;
12
+ //# sourceMappingURL=pw-repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pw-repl.d.ts","sourceRoot":"","sources":["../src/pw-repl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkG9D"}