playwright-codegen-pro-core 1.0.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.
Files changed (468) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +3 -0
  4. package/ThirdPartyNotices.txt +3552 -0
  5. package/bin/install_media_pack.ps1 +5 -0
  6. package/bin/install_webkit_wsl.ps1 +33 -0
  7. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  8. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  9. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  10. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  11. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  12. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  13. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  14. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  15. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  16. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  17. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  18. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  19. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  20. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  21. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  22. package/browsers.json +81 -0
  23. package/bundles/mcp/package-lock.json +1135 -0
  24. package/bundles/mcp/package.json +10 -0
  25. package/bundles/mcp/raw-body.ts +43 -0
  26. package/bundles/utils/package-lock.json +466 -0
  27. package/bundles/utils/package.json +40 -0
  28. package/bundles/zip/package-lock.json +257 -0
  29. package/bundles/zip/package.json +16 -0
  30. package/cli.js +18 -0
  31. package/index.d.ts +17 -0
  32. package/index.js +32 -0
  33. package/index.mjs +28 -0
  34. package/lib/androidServerImpl.js +65 -0
  35. package/lib/browserServerImpl.js +120 -0
  36. package/lib/cli/driver.js +98 -0
  37. package/lib/cli/program.js +599 -0
  38. package/lib/cli/programWithTestStub.js +74 -0
  39. package/lib/client/android.js +361 -0
  40. package/lib/client/api.js +137 -0
  41. package/lib/client/artifact.js +79 -0
  42. package/lib/client/browser.js +169 -0
  43. package/lib/client/browserContext.js +563 -0
  44. package/lib/client/browserType.js +153 -0
  45. package/lib/client/cdpSession.js +55 -0
  46. package/lib/client/channelOwner.js +194 -0
  47. package/lib/client/clientHelper.js +64 -0
  48. package/lib/client/clientInstrumentation.js +55 -0
  49. package/lib/client/clientStackTrace.js +69 -0
  50. package/lib/client/clock.js +68 -0
  51. package/lib/client/connect.js +143 -0
  52. package/lib/client/connection.js +322 -0
  53. package/lib/client/consoleMessage.js +61 -0
  54. package/lib/client/coverage.js +44 -0
  55. package/lib/client/debugger.js +57 -0
  56. package/lib/client/dialog.js +56 -0
  57. package/lib/client/disposable.js +76 -0
  58. package/lib/client/download.js +62 -0
  59. package/lib/client/electron.js +138 -0
  60. package/lib/client/elementHandle.js +281 -0
  61. package/lib/client/errors.js +77 -0
  62. package/lib/client/eventEmitter.js +314 -0
  63. package/lib/client/events.js +103 -0
  64. package/lib/client/fetch.js +367 -0
  65. package/lib/client/fileChooser.js +46 -0
  66. package/lib/client/fileUtils.js +34 -0
  67. package/lib/client/frame.js +404 -0
  68. package/lib/client/harRouter.js +99 -0
  69. package/lib/client/input.js +84 -0
  70. package/lib/client/jsHandle.js +105 -0
  71. package/lib/client/jsonPipe.js +39 -0
  72. package/lib/client/localUtils.js +60 -0
  73. package/lib/client/locator.js +367 -0
  74. package/lib/client/network.js +750 -0
  75. package/lib/client/page.js +729 -0
  76. package/lib/client/platform.js +77 -0
  77. package/lib/client/playwright.js +71 -0
  78. package/lib/client/screencast.js +48 -0
  79. package/lib/client/selectors.js +57 -0
  80. package/lib/client/stream.js +39 -0
  81. package/lib/client/timeoutSettings.js +79 -0
  82. package/lib/client/tracing.js +126 -0
  83. package/lib/client/types.js +28 -0
  84. package/lib/client/video.js +68 -0
  85. package/lib/client/waiter.js +142 -0
  86. package/lib/client/webError.js +39 -0
  87. package/lib/client/worker.js +85 -0
  88. package/lib/client/writableStream.js +39 -0
  89. package/lib/generated/bindingsControllerSource.js +28 -0
  90. package/lib/generated/clockSource.js +28 -0
  91. package/lib/generated/injectedScriptSource.js +28 -0
  92. package/lib/generated/pollingRecorderSource.js +28 -0
  93. package/lib/generated/storageScriptSource.js +28 -0
  94. package/lib/generated/utilityScriptSource.js +28 -0
  95. package/lib/generated/webSocketMockSource.js +336 -0
  96. package/lib/inProcessFactory.js +60 -0
  97. package/lib/inprocess.js +3 -0
  98. package/lib/mcpBundle.js +81 -0
  99. package/lib/mcpBundleImpl/index.js +91 -0
  100. package/lib/outofprocess.js +76 -0
  101. package/lib/protocol/serializers.js +197 -0
  102. package/lib/protocol/validator.js +3035 -0
  103. package/lib/protocol/validatorPrimitives.js +193 -0
  104. package/lib/remote/playwrightConnection.js +131 -0
  105. package/lib/remote/playwrightPipeServer.js +100 -0
  106. package/lib/remote/playwrightServer.js +339 -0
  107. package/lib/remote/playwrightWebSocketServer.js +73 -0
  108. package/lib/remote/serverTransport.js +96 -0
  109. package/lib/server/android/android.js +465 -0
  110. package/lib/server/android/backendAdb.js +177 -0
  111. package/lib/server/artifact.js +127 -0
  112. package/lib/server/bidi/bidiBrowser.js +571 -0
  113. package/lib/server/bidi/bidiChromium.js +162 -0
  114. package/lib/server/bidi/bidiConnection.js +213 -0
  115. package/lib/server/bidi/bidiDeserializer.js +116 -0
  116. package/lib/server/bidi/bidiExecutionContext.js +267 -0
  117. package/lib/server/bidi/bidiFirefox.js +128 -0
  118. package/lib/server/bidi/bidiInput.js +146 -0
  119. package/lib/server/bidi/bidiNetworkManager.js +411 -0
  120. package/lib/server/bidi/bidiOverCdp.js +102 -0
  121. package/lib/server/bidi/bidiPage.js +599 -0
  122. package/lib/server/bidi/bidiPdf.js +106 -0
  123. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  124. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  125. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  126. package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
  127. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  128. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  129. package/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
  130. package/lib/server/browser.js +223 -0
  131. package/lib/server/browserContext.js +703 -0
  132. package/lib/server/browserType.js +338 -0
  133. package/lib/server/callLog.js +82 -0
  134. package/lib/server/chromium/appIcon.png +0 -0
  135. package/lib/server/chromium/chromium.js +399 -0
  136. package/lib/server/chromium/chromiumSwitches.js +104 -0
  137. package/lib/server/chromium/crBrowser.js +532 -0
  138. package/lib/server/chromium/crConnection.js +197 -0
  139. package/lib/server/chromium/crCoverage.js +235 -0
  140. package/lib/server/chromium/crDevTools.js +111 -0
  141. package/lib/server/chromium/crDragDrop.js +131 -0
  142. package/lib/server/chromium/crExecutionContext.js +146 -0
  143. package/lib/server/chromium/crInput.js +187 -0
  144. package/lib/server/chromium/crNetworkManager.js +711 -0
  145. package/lib/server/chromium/crPage.js +1004 -0
  146. package/lib/server/chromium/crPdf.js +121 -0
  147. package/lib/server/chromium/crProtocolHelper.js +145 -0
  148. package/lib/server/chromium/crServiceWorker.js +137 -0
  149. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  150. package/lib/server/chromium/protocol.d.js +16 -0
  151. package/lib/server/clock.js +149 -0
  152. package/lib/server/codegen/csharp.js +327 -0
  153. package/lib/server/codegen/java.js +274 -0
  154. package/lib/server/codegen/javascript.js +247 -0
  155. package/lib/server/codegen/jsonl.js +52 -0
  156. package/lib/server/codegen/language.js +132 -0
  157. package/lib/server/codegen/languages.js +68 -0
  158. package/lib/server/codegen/python.js +279 -0
  159. package/lib/server/codegen/types.js +16 -0
  160. package/lib/server/console.js +61 -0
  161. package/lib/server/cookieStore.js +206 -0
  162. package/lib/server/debugController.js +197 -0
  163. package/lib/server/debugger.js +117 -0
  164. package/lib/server/deviceDescriptors.js +39 -0
  165. package/lib/server/deviceDescriptorsSource.json +1779 -0
  166. package/lib/server/dialog.js +116 -0
  167. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  168. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  169. package/lib/server/dispatchers/browserContextDispatcher.js +381 -0
  170. package/lib/server/dispatchers/browserDispatcher.js +124 -0
  171. package/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
  172. package/lib/server/dispatchers/cdpSessionDispatcher.js +47 -0
  173. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  174. package/lib/server/dispatchers/debuggerDispatcher.js +80 -0
  175. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  176. package/lib/server/dispatchers/dispatcher.js +364 -0
  177. package/lib/server/dispatchers/disposableDispatcher.js +39 -0
  178. package/lib/server/dispatchers/electronDispatcher.js +90 -0
  179. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  180. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  181. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  182. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  183. package/lib/server/dispatchers/localUtilsDispatcher.js +185 -0
  184. package/lib/server/dispatchers/networkDispatchers.js +214 -0
  185. package/lib/server/dispatchers/pageDispatcher.js +430 -0
  186. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  187. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  188. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  189. package/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
  190. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  191. package/lib/server/disposable.js +41 -0
  192. package/lib/server/dom.js +833 -0
  193. package/lib/server/download.js +71 -0
  194. package/lib/server/electron/electron.js +272 -0
  195. package/lib/server/electron/loader.js +29 -0
  196. package/lib/server/errors.js +69 -0
  197. package/lib/server/fetch.js +621 -0
  198. package/lib/server/fileChooser.js +43 -0
  199. package/lib/server/fileUploadUtils.js +84 -0
  200. package/lib/server/firefox/ffBrowser.js +415 -0
  201. package/lib/server/firefox/ffConnection.js +142 -0
  202. package/lib/server/firefox/ffExecutionContext.js +150 -0
  203. package/lib/server/firefox/ffInput.js +175 -0
  204. package/lib/server/firefox/ffNetworkManager.js +256 -0
  205. package/lib/server/firefox/ffPage.js +495 -0
  206. package/lib/server/firefox/firefox.js +114 -0
  207. package/lib/server/firefox/protocol.d.js +16 -0
  208. package/lib/server/formData.js +147 -0
  209. package/lib/server/frameSelectors.js +160 -0
  210. package/lib/server/frames.js +1495 -0
  211. package/lib/server/har/harRecorder.js +147 -0
  212. package/lib/server/har/harTracer.js +608 -0
  213. package/lib/server/harBackend.js +157 -0
  214. package/lib/server/helper.js +96 -0
  215. package/lib/server/index.js +58 -0
  216. package/lib/server/input.js +322 -0
  217. package/lib/server/instrumentation.js +72 -0
  218. package/lib/server/javascript.js +291 -0
  219. package/lib/server/launchApp.js +127 -0
  220. package/lib/server/localUtils.js +214 -0
  221. package/lib/server/macEditingCommands.js +143 -0
  222. package/lib/server/network.js +668 -0
  223. package/lib/server/page.js +884 -0
  224. package/lib/server/pipeTransport.js +89 -0
  225. package/lib/server/playwright.js +69 -0
  226. package/lib/server/progress.js +136 -0
  227. package/lib/server/protocolError.js +52 -0
  228. package/lib/server/recorder/chat.js +161 -0
  229. package/lib/server/recorder/networkCapture.js +282 -0
  230. package/lib/server/recorder/recorderApp.js +581 -0
  231. package/lib/server/recorder/recorderRunner.js +138 -0
  232. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  233. package/lib/server/recorder/recorderUtils.js +157 -0
  234. package/lib/server/recorder/sessionExporter.js +40 -0
  235. package/lib/server/recorder/sessionPromptBuilder.js +128 -0
  236. package/lib/server/recorder/sessionRedactor.js +74 -0
  237. package/lib/server/recorder/throttledFile.js +57 -0
  238. package/lib/server/recorder.js +538 -0
  239. package/lib/server/registry/browserFetcher.js +177 -0
  240. package/lib/server/registry/dependencies.js +371 -0
  241. package/lib/server/registry/index.js +1395 -0
  242. package/lib/server/registry/nativeDeps.js +1281 -0
  243. package/lib/server/registry/oopDownloadBrowserMain.js +127 -0
  244. package/lib/server/screencast.js +238 -0
  245. package/lib/server/screenshotter.js +333 -0
  246. package/lib/server/selectors.js +112 -0
  247. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  248. package/lib/server/socksInterceptor.js +95 -0
  249. package/lib/server/trace/recorder/snapshotter.js +147 -0
  250. package/lib/server/trace/recorder/snapshotterInjected.js +561 -0
  251. package/lib/server/trace/recorder/tracing.js +615 -0
  252. package/lib/server/trace/viewer/traceViewer.js +244 -0
  253. package/lib/server/transport.js +181 -0
  254. package/lib/server/types.js +28 -0
  255. package/lib/server/usKeyboardLayout.js +152 -0
  256. package/lib/server/utils/ascii.js +44 -0
  257. package/lib/server/utils/comparators.js +139 -0
  258. package/lib/server/utils/crypto.js +216 -0
  259. package/lib/server/utils/debug.js +42 -0
  260. package/lib/server/utils/debugLogger.js +122 -0
  261. package/lib/server/utils/disposable.js +32 -0
  262. package/lib/server/utils/env.js +73 -0
  263. package/lib/server/utils/eventsHelper.js +41 -0
  264. package/lib/server/utils/expectUtils.js +123 -0
  265. package/lib/server/utils/fileUtils.js +191 -0
  266. package/lib/server/utils/happyEyeballs.js +207 -0
  267. package/lib/server/utils/hostPlatform.js +123 -0
  268. package/lib/server/utils/httpServer.js +205 -0
  269. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  270. package/lib/server/utils/image_tools/compare.js +109 -0
  271. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  272. package/lib/server/utils/image_tools/stats.js +102 -0
  273. package/lib/server/utils/linuxUtils.js +71 -0
  274. package/lib/server/utils/network.js +243 -0
  275. package/lib/server/utils/nodePlatform.js +154 -0
  276. package/lib/server/utils/pipeTransport.js +84 -0
  277. package/lib/server/utils/processLauncher.js +243 -0
  278. package/lib/server/utils/profiler.js +65 -0
  279. package/lib/server/utils/socksProxy.js +511 -0
  280. package/lib/server/utils/spawnAsync.js +41 -0
  281. package/lib/server/utils/task.js +51 -0
  282. package/lib/server/utils/userAgent.js +98 -0
  283. package/lib/server/utils/wsServer.js +121 -0
  284. package/lib/server/utils/zipFile.js +74 -0
  285. package/lib/server/utils/zones.js +57 -0
  286. package/lib/server/videoRecorder.js +133 -0
  287. package/lib/server/webkit/protocol.d.js +16 -0
  288. package/lib/server/webkit/webkit.js +108 -0
  289. package/lib/server/webkit/wkBrowser.js +331 -0
  290. package/lib/server/webkit/wkConnection.js +144 -0
  291. package/lib/server/webkit/wkExecutionContext.js +154 -0
  292. package/lib/server/webkit/wkInput.js +181 -0
  293. package/lib/server/webkit/wkInterceptableRequest.js +197 -0
  294. package/lib/server/webkit/wkPage.js +1164 -0
  295. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  296. package/lib/server/webkit/wkWorkers.js +106 -0
  297. package/lib/serverRegistry.js +147 -0
  298. package/lib/third_party/pixelmatch.js +255 -0
  299. package/lib/tools/backend/browserBackend.js +79 -0
  300. package/lib/tools/backend/common.js +63 -0
  301. package/lib/tools/backend/config.js +41 -0
  302. package/lib/tools/backend/console.js +66 -0
  303. package/lib/tools/backend/context.js +290 -0
  304. package/lib/tools/backend/cookies.js +152 -0
  305. package/lib/tools/backend/devtools.js +69 -0
  306. package/lib/tools/backend/dialogs.js +59 -0
  307. package/lib/tools/backend/evaluate.js +64 -0
  308. package/lib/tools/backend/files.js +60 -0
  309. package/lib/tools/backend/form.js +64 -0
  310. package/lib/tools/backend/keyboard.js +155 -0
  311. package/lib/tools/backend/logFile.js +95 -0
  312. package/lib/tools/backend/mouse.js +168 -0
  313. package/lib/tools/backend/navigate.js +106 -0
  314. package/lib/tools/backend/network.js +135 -0
  315. package/lib/tools/backend/pdf.js +48 -0
  316. package/lib/tools/backend/recorder.js +74 -0
  317. package/lib/tools/backend/response.js +302 -0
  318. package/lib/tools/backend/route.js +140 -0
  319. package/lib/tools/backend/runCode.js +76 -0
  320. package/lib/tools/backend/screenshot.js +88 -0
  321. package/lib/tools/backend/sessionLog.js +74 -0
  322. package/lib/tools/backend/snapshot.js +208 -0
  323. package/lib/tools/backend/storage.js +67 -0
  324. package/lib/tools/backend/tab.js +445 -0
  325. package/lib/tools/backend/tabs.js +67 -0
  326. package/lib/tools/backend/tool.js +47 -0
  327. package/lib/tools/backend/tools.js +104 -0
  328. package/lib/tools/backend/tracing.js +75 -0
  329. package/lib/tools/backend/utils.js +83 -0
  330. package/lib/tools/backend/verify.js +151 -0
  331. package/lib/tools/backend/video.js +89 -0
  332. package/lib/tools/backend/wait.js +63 -0
  333. package/lib/tools/backend/webstorage.js +223 -0
  334. package/lib/tools/cli-client/cli.js +6 -0
  335. package/lib/tools/cli-client/help.json +101 -0
  336. package/lib/tools/cli-client/minimist.js +128 -0
  337. package/lib/tools/cli-client/program.js +382 -0
  338. package/lib/tools/cli-client/registry.js +176 -0
  339. package/lib/tools/cli-client/session.js +289 -0
  340. package/lib/tools/cli-client/skill/SKILL.md +326 -0
  341. package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
  342. package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
  343. package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
  344. package/lib/tools/cli-client/skill/references/running-code.md +231 -0
  345. package/lib/tools/cli-client/skill/references/session-management.md +169 -0
  346. package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
  347. package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
  348. package/lib/tools/cli-client/skill/references/tracing.md +139 -0
  349. package/lib/tools/cli-client/skill/references/video-recording.md +46 -0
  350. package/lib/tools/cli-daemon/command.js +73 -0
  351. package/lib/tools/cli-daemon/commands.js +933 -0
  352. package/lib/tools/cli-daemon/daemon.js +178 -0
  353. package/lib/tools/cli-daemon/helpGenerator.js +173 -0
  354. package/lib/tools/cli-daemon/program.js +118 -0
  355. package/lib/tools/dashboard/appIcon.png +0 -0
  356. package/lib/tools/dashboard/dashboardApp.js +286 -0
  357. package/lib/tools/dashboard/dashboardController.js +296 -0
  358. package/lib/tools/exports.js +60 -0
  359. package/lib/tools/mcp/browserFactory.js +233 -0
  360. package/lib/tools/mcp/cdpRelay.js +353 -0
  361. package/lib/tools/mcp/cli-stub.js +7 -0
  362. package/lib/tools/mcp/config.d.js +16 -0
  363. package/lib/tools/mcp/config.js +401 -0
  364. package/lib/tools/mcp/configIni.js +189 -0
  365. package/lib/tools/mcp/extensionContextFactory.js +59 -0
  366. package/lib/tools/mcp/index.js +62 -0
  367. package/lib/tools/mcp/log.js +35 -0
  368. package/lib/tools/mcp/program.js +107 -0
  369. package/lib/tools/mcp/protocol.js +28 -0
  370. package/lib/tools/mcp/watchdog.js +44 -0
  371. package/lib/tools/trace/SKILL.md +163 -0
  372. package/lib/tools/trace/installSkill.js +48 -0
  373. package/lib/tools/trace/traceActions.js +142 -0
  374. package/lib/tools/trace/traceAttachments.js +69 -0
  375. package/lib/tools/trace/traceCli.js +80 -0
  376. package/lib/tools/trace/traceConsole.js +97 -0
  377. package/lib/tools/trace/traceErrors.js +55 -0
  378. package/lib/tools/trace/traceOpen.js +69 -0
  379. package/lib/tools/trace/traceParser.js +96 -0
  380. package/lib/tools/trace/traceRequests.js +158 -0
  381. package/lib/tools/trace/traceScreenshot.js +68 -0
  382. package/lib/tools/trace/traceSnapshot.js +149 -0
  383. package/lib/tools/trace/traceUtils.js +135 -0
  384. package/lib/tools/utils/connect.js +32 -0
  385. package/lib/tools/utils/mcp/http.js +152 -0
  386. package/lib/tools/utils/mcp/server.js +230 -0
  387. package/lib/tools/utils/mcp/tool.js +47 -0
  388. package/lib/tools/utils/socketConnection.js +108 -0
  389. package/lib/utils/isomorphic/ariaSnapshot.js +455 -0
  390. package/lib/utils/isomorphic/assert.js +31 -0
  391. package/lib/utils/isomorphic/colors.js +72 -0
  392. package/lib/utils/isomorphic/cssParser.js +245 -0
  393. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  394. package/lib/utils/isomorphic/formatUtils.js +64 -0
  395. package/lib/utils/isomorphic/headers.js +53 -0
  396. package/lib/utils/isomorphic/imageUtils.js +141 -0
  397. package/lib/utils/isomorphic/locatorGenerators.js +689 -0
  398. package/lib/utils/isomorphic/locatorParser.js +176 -0
  399. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  400. package/lib/utils/isomorphic/lruCache.js +51 -0
  401. package/lib/utils/isomorphic/manualPromise.js +114 -0
  402. package/lib/utils/isomorphic/mimeType.js +464 -0
  403. package/lib/utils/isomorphic/multimap.js +80 -0
  404. package/lib/utils/isomorphic/protocolFormatter.js +81 -0
  405. package/lib/utils/isomorphic/protocolMetainfo.js +347 -0
  406. package/lib/utils/isomorphic/rtti.js +43 -0
  407. package/lib/utils/isomorphic/selectorParser.js +386 -0
  408. package/lib/utils/isomorphic/semaphore.js +54 -0
  409. package/lib/utils/isomorphic/stackTrace.js +158 -0
  410. package/lib/utils/isomorphic/stringUtils.js +204 -0
  411. package/lib/utils/isomorphic/time.js +49 -0
  412. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  413. package/lib/utils/isomorphic/trace/entries.js +16 -0
  414. package/lib/utils/isomorphic/trace/snapshotRenderer.js +492 -0
  415. package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
  416. package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
  417. package/lib/utils/isomorphic/trace/traceLoader.js +131 -0
  418. package/lib/utils/isomorphic/trace/traceModel.js +366 -0
  419. package/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
  420. package/lib/utils/isomorphic/trace/traceUtils.js +58 -0
  421. package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
  422. package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
  423. package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
  424. package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
  425. package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
  426. package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
  427. package/lib/utils/isomorphic/types.js +16 -0
  428. package/lib/utils/isomorphic/urlMatch.js +243 -0
  429. package/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
  430. package/lib/utils/isomorphic/yaml.js +84 -0
  431. package/lib/utils.js +113 -0
  432. package/lib/utilsBundle.js +91 -0
  433. package/lib/utilsBundleImpl/index.js +218 -0
  434. package/lib/utilsBundleImpl/xdg-open +1066 -0
  435. package/lib/vite/dashboard/assets/index-Bn2lDGZX.js +50 -0
  436. package/lib/vite/dashboard/assets/index-DDWrEWMc.css +1 -0
  437. package/lib/vite/dashboard/index.html +28 -0
  438. package/lib/vite/htmlReport/index.html +89 -0
  439. package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
  440. package/lib/vite/recorder/assets/codeMirrorModule-RoSmqW0t.js +32 -0
  441. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  442. package/lib/vite/recorder/assets/index-CLrDthbi.js +193 -0
  443. package/lib/vite/recorder/assets/index-OFPIkgDs.css +1 -0
  444. package/lib/vite/recorder/index.html +29 -0
  445. package/lib/vite/recorder/playwright-logo.svg +9 -0
  446. package/lib/vite/traceViewer/assets/codeMirrorModule-Cigrr2OM.js +32 -0
  447. package/lib/vite/traceViewer/assets/defaultSettingsView-ConrJv9G.js +262 -0
  448. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  449. package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
  450. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  451. package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
  452. package/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
  453. package/lib/vite/traceViewer/index.EVGp-u_4.js +2 -0
  454. package/lib/vite/traceViewer/index.html +43 -0
  455. package/lib/vite/traceViewer/manifest.webmanifest +16 -0
  456. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  457. package/lib/vite/traceViewer/snapshot.html +21 -0
  458. package/lib/vite/traceViewer/sw.bundle.js +5 -0
  459. package/lib/vite/traceViewer/uiMode.Bewj7-uD.js +6 -0
  460. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  461. package/lib/vite/traceViewer/uiMode.html +17 -0
  462. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  463. package/lib/zipBundle.js +34 -0
  464. package/lib/zipBundleImpl.js +5 -0
  465. package/package.json +46 -0
  466. package/types/protocol.d.ts +24365 -0
  467. package/types/structs.d.ts +45 -0
  468. package/types/types.d.ts +23498 -0
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var daemon_exports = {};
30
+ __export(daemon_exports, {
31
+ startCliDaemonServer: () => startCliDaemonServer
32
+ });
33
+ module.exports = __toCommonJS(daemon_exports);
34
+ var import_fs = __toESM(require("fs"));
35
+ var import_net = __toESM(require("net"));
36
+ var import_os = __toESM(require("os"));
37
+ var import_path = __toESM(require("path"));
38
+ var import_utils = require("../../utils");
39
+ var import_utilsBundle = require("../../utilsBundle");
40
+ var import_network = require("../../server/utils/network");
41
+ var import_processLauncher = require("../../server/utils/processLauncher");
42
+ var import_browserBackend = require("../backend/browserBackend");
43
+ var import_tools = require("../backend/tools");
44
+ var import_command = require("./command");
45
+ var import_commands = require("./commands");
46
+ var import_socketConnection = require("../utils/socketConnection");
47
+ var import_registry = require("../cli-client/registry");
48
+ const daemonDebug = (0, import_utilsBundle.debug)("pw:daemon");
49
+ async function socketExists(socketPath) {
50
+ try {
51
+ const stat = await import_fs.default.promises.stat(socketPath);
52
+ if (stat?.isSocket())
53
+ return true;
54
+ } catch (e) {
55
+ }
56
+ return false;
57
+ }
58
+ async function startCliDaemonServer(sessionName, browserContext, browserInfo, contextConfig = {}, clientInfo = (0, import_registry.createClientInfo)(), options) {
59
+ const sessionConfig = createSessionConfig(clientInfo, sessionName, browserInfo, options);
60
+ const { socketPath } = sessionConfig;
61
+ if (process.platform !== "win32" && await socketExists(socketPath)) {
62
+ daemonDebug(`Socket already exists, removing: ${socketPath}`);
63
+ try {
64
+ await import_fs.default.promises.unlink(socketPath);
65
+ } catch (error) {
66
+ daemonDebug(`Failed to remove existing socket: ${error}`);
67
+ throw error;
68
+ }
69
+ }
70
+ const backend = new import_browserBackend.BrowserBackend(contextConfig, browserContext, import_tools.browserTools);
71
+ await backend.initialize({ cwd: process.cwd() });
72
+ await import_fs.default.promises.mkdir(import_path.default.dirname(socketPath), { recursive: true });
73
+ if (browserContext.isClosed())
74
+ throw new Error("Browser context was closed before the daemon could start");
75
+ const server = import_net.default.createServer((socket) => {
76
+ daemonDebug("new client connection");
77
+ const connection = new import_socketConnection.SocketConnection(socket);
78
+ connection.onclose = () => {
79
+ daemonDebug("client disconnected");
80
+ };
81
+ connection.onmessage = async (message) => {
82
+ const { id, method, params } = message;
83
+ try {
84
+ daemonDebug("received command", method);
85
+ if (method === "stop") {
86
+ daemonDebug("stop command received, shutting down");
87
+ await deleteSessionFile(clientInfo, sessionConfig);
88
+ const sendAck = async () => connection.send({ id, result: "ok" }).catch(() => {
89
+ });
90
+ if (options?.exitOnClose)
91
+ (0, import_processLauncher.gracefullyProcessExitDoNotHang)(0, () => sendAck());
92
+ else
93
+ await sendAck();
94
+ } else if (method === "run") {
95
+ const { toolName, toolParams } = parseCliCommand(params.args);
96
+ if (params.cwd)
97
+ toolParams._meta = { cwd: params.cwd };
98
+ const response = await backend.callTool(toolName, toolParams);
99
+ await connection.send({ id, result: formatResult(response) });
100
+ } else {
101
+ throw new Error(`Unknown method: ${method}`);
102
+ }
103
+ } catch (e) {
104
+ daemonDebug("command failed", e);
105
+ const error = process.env.PWDEBUGIMPL ? e.stack || e.message : e.message;
106
+ connection.send({ id, error }).catch(() => {
107
+ });
108
+ }
109
+ };
110
+ });
111
+ (0, import_network.decorateServer)(server);
112
+ browserContext.on("close", () => Promise.resolve().then(async () => {
113
+ await deleteSessionFile(clientInfo, sessionConfig);
114
+ if (options?.exitOnClose)
115
+ (0, import_processLauncher.gracefullyProcessExitDoNotHang)(0);
116
+ }));
117
+ await new Promise((resolve, reject) => {
118
+ server.on("error", (error) => {
119
+ daemonDebug(`server error: ${error.message}`);
120
+ reject(error);
121
+ });
122
+ server.listen(socketPath, () => resolve());
123
+ });
124
+ await saveSessionFile(clientInfo, sessionConfig);
125
+ return socketPath;
126
+ }
127
+ async function saveSessionFile(clientInfo, sessionConfig) {
128
+ await import_fs.default.promises.mkdir(clientInfo.daemonProfilesDir, { recursive: true });
129
+ const sessionFile = import_path.default.join(clientInfo.daemonProfilesDir, `${sessionConfig.name}.session`);
130
+ await import_fs.default.promises.writeFile(sessionFile, JSON.stringify(sessionConfig, null, 2));
131
+ }
132
+ async function deleteSessionFile(clientInfo, sessionConfig) {
133
+ await import_fs.default.promises.unlink(sessionConfig.socketPath).catch(() => {
134
+ });
135
+ if (!sessionConfig.cli.persistent) {
136
+ const sessionFile = import_path.default.join(clientInfo.daemonProfilesDir, `${sessionConfig.name}.session`);
137
+ await import_fs.default.promises.rm(sessionFile).catch(() => {
138
+ });
139
+ }
140
+ }
141
+ function formatResult(result) {
142
+ const isError = result.isError;
143
+ const text = result.content[0].type === "text" ? result.content[0].text : void 0;
144
+ return { isError, text };
145
+ }
146
+ function parseCliCommand(args) {
147
+ const command = import_commands.commands[args._[0]];
148
+ if (!command)
149
+ throw new Error("Command is required");
150
+ return (0, import_command.parseCommand)(command, args);
151
+ }
152
+ function daemonSocketPath(clientInfo, sessionName) {
153
+ const userNameHash = (0, import_utils.calculateSha1)(process.env.USERNAME || "default").slice(0, 8);
154
+ const socketName = `${sessionName}-${userNameHash}.sock`;
155
+ if (process.platform === "win32")
156
+ return `\\\\.\\pipe\\${clientInfo.workspaceDirHash}-${socketName}`;
157
+ const socketsDir = process.env.PLAYWRIGHT_DAEMON_SOCKETS_DIR || import_path.default.join(import_os.default.tmpdir(), "playwright-cli");
158
+ return import_path.default.join(socketsDir, clientInfo.workspaceDirHash, socketName);
159
+ }
160
+ function createSessionConfig(clientInfo, sessionName, browserInfo, options = {}) {
161
+ return {
162
+ name: sessionName,
163
+ version: clientInfo.version,
164
+ timestamp: Date.now(),
165
+ socketPath: daemonSocketPath(clientInfo, sessionName),
166
+ workspaceDir: clientInfo.workspaceDir,
167
+ cli: { persistent: options.persistent },
168
+ browser: {
169
+ browserName: browserInfo.browserName,
170
+ launchOptions: browserInfo.launchOptions,
171
+ userDataDir: browserInfo.userDataDir
172
+ }
173
+ };
174
+ }
175
+ // Annotate the CommonJS export names for ESM import in node:
176
+ 0 && (module.exports = {
177
+ startCliDaemonServer
178
+ });
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var helpGenerator_exports = {};
20
+ __export(helpGenerator_exports, {
21
+ generateHelp: () => generateHelp,
22
+ generateHelpJSON: () => generateHelpJSON,
23
+ generateReadme: () => generateReadme
24
+ });
25
+ module.exports = __toCommonJS(helpGenerator_exports);
26
+ var import_mcpBundle = require("../../mcpBundle");
27
+ var import_commands = require("./commands");
28
+ function commandArgs(command) {
29
+ const args = [];
30
+ const shape = command.args ? command.args.shape : {};
31
+ for (const [name, schema] of Object.entries(shape)) {
32
+ const zodSchema = schema;
33
+ const description = zodSchema.description ?? "";
34
+ args.push({ name, description, optional: zodSchema.safeParse(void 0).success });
35
+ }
36
+ return args;
37
+ }
38
+ function commandArgsText(args) {
39
+ return args.map((a) => a.optional ? `[${a.name}]` : `<${a.name}>`).join(" ");
40
+ }
41
+ function generateCommandHelp(command) {
42
+ const args = commandArgs(command);
43
+ const lines = [
44
+ `playwright-cli ${command.name} ${commandArgsText(args)}`,
45
+ "",
46
+ command.description,
47
+ ""
48
+ ];
49
+ if (args.length) {
50
+ lines.push("Arguments:");
51
+ lines.push(...args.map((a) => formatWithGap(` ${a.optional ? `[${a.name}]` : `<${a.name}>`}`, a.description.toLowerCase())));
52
+ }
53
+ if (command.options) {
54
+ lines.push("Options:");
55
+ const optionsShape = command.options.shape;
56
+ for (const [name, schema] of Object.entries(optionsShape)) {
57
+ const zodSchema = schema;
58
+ const description = (zodSchema.description ?? "").toLowerCase();
59
+ lines.push(formatWithGap(` --${name}`, description));
60
+ }
61
+ }
62
+ return lines.join("\n");
63
+ }
64
+ const categories = [
65
+ { name: "core", title: "Core" },
66
+ { name: "navigation", title: "Navigation" },
67
+ { name: "keyboard", title: "Keyboard" },
68
+ { name: "mouse", title: "Mouse" },
69
+ { name: "export", title: "Save as" },
70
+ { name: "tabs", title: "Tabs" },
71
+ { name: "storage", title: "Storage" },
72
+ { name: "network", title: "Network" },
73
+ { name: "devtools", title: "DevTools" },
74
+ { name: "install", title: "Install" },
75
+ { name: "config", title: "Configuration" },
76
+ { name: "browsers", title: "Browser sessions" }
77
+ ];
78
+ function generateHelp() {
79
+ const lines = [];
80
+ lines.push("Usage: playwright-cli <command> [args] [options]");
81
+ lines.push("Usage: playwright-cli -s=<session> <command> [args] [options]");
82
+ const commandsByCategory = /* @__PURE__ */ new Map();
83
+ for (const c of categories)
84
+ commandsByCategory.set(c.name, []);
85
+ for (const command of Object.values(import_commands.commands)) {
86
+ if (command.hidden)
87
+ continue;
88
+ commandsByCategory.get(command.category).push(command);
89
+ }
90
+ for (const c of categories) {
91
+ const cc = commandsByCategory.get(c.name);
92
+ if (!cc.length)
93
+ continue;
94
+ lines.push(`
95
+ ${c.title}:`);
96
+ for (const command of cc)
97
+ lines.push(generateHelpEntry(command));
98
+ }
99
+ lines.push("\nGlobal options:");
100
+ lines.push(formatWithGap(" --help [command]", "print help"));
101
+ lines.push(formatWithGap(" --version", "print version"));
102
+ return lines.join("\n");
103
+ }
104
+ function generateReadme() {
105
+ const lines = [];
106
+ lines.push("\n## Commands");
107
+ const commandsByCategory = /* @__PURE__ */ new Map();
108
+ for (const c of categories)
109
+ commandsByCategory.set(c.name, []);
110
+ for (const command of Object.values(import_commands.commands))
111
+ commandsByCategory.get(command.category).push(command);
112
+ for (const c of categories) {
113
+ const cc = commandsByCategory.get(c.name);
114
+ if (!cc.length)
115
+ continue;
116
+ lines.push(`
117
+ ### ${c.title}
118
+ `);
119
+ lines.push("```bash");
120
+ for (const command of cc)
121
+ lines.push(generateReadmeEntry(command));
122
+ lines.push("```");
123
+ }
124
+ return lines.join("\n");
125
+ }
126
+ function generateHelpEntry(command) {
127
+ const args = commandArgs(command);
128
+ const prefix = ` ${command.name} ${commandArgsText(args)}`;
129
+ const suffix = command.description.toLowerCase();
130
+ return formatWithGap(prefix, suffix);
131
+ }
132
+ function generateReadmeEntry(command) {
133
+ const args = commandArgs(command);
134
+ const prefix = `playwright-cli ${command.name} ${commandArgsText(args)}`;
135
+ const suffix = "# " + command.description.toLowerCase();
136
+ return formatWithGap(prefix, suffix, 40);
137
+ }
138
+ function unwrapZodType(schema) {
139
+ if ("unwrap" in schema && typeof schema.unwrap === "function")
140
+ return unwrapZodType(schema.unwrap());
141
+ return schema;
142
+ }
143
+ function generateHelpJSON() {
144
+ const booleanOptions = /* @__PURE__ */ new Set();
145
+ for (const command of Object.values(import_commands.commands)) {
146
+ if (!command.options)
147
+ continue;
148
+ const optionsShape = command.options.shape;
149
+ for (const [name, schema] of Object.entries(optionsShape)) {
150
+ const innerSchema = unwrapZodType(schema);
151
+ if (innerSchema instanceof import_mcpBundle.z.ZodBoolean)
152
+ booleanOptions.add(name);
153
+ }
154
+ }
155
+ const help = {
156
+ global: generateHelp(),
157
+ commands: Object.fromEntries(
158
+ Object.entries(import_commands.commands).map(([name, command]) => [name, generateCommandHelp(command)])
159
+ ),
160
+ booleanOptions: [...booleanOptions]
161
+ };
162
+ return help;
163
+ }
164
+ function formatWithGap(prefix, text, threshold = 30) {
165
+ const indent = Math.max(1, threshold - prefix.length);
166
+ return prefix + " ".repeat(indent) + text;
167
+ }
168
+ // Annotate the CommonJS export names for ESM import in node:
169
+ 0 && (module.exports = {
170
+ generateHelp,
171
+ generateHelpJSON,
172
+ generateReadme
173
+ });
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var program_exports = {};
30
+ __export(program_exports, {
31
+ resolveCLIConfig: () => resolveCLIConfig
32
+ });
33
+ module.exports = __toCommonJS(program_exports);
34
+ var import_fs = __toESM(require("fs"));
35
+ var import_path = __toESM(require("path"));
36
+ var import_daemon = require("./daemon");
37
+ var import_watchdog = require("../mcp/watchdog");
38
+ var import_browserFactory = require("../mcp/browserFactory");
39
+ var configUtils = __toESM(require("../mcp/config"));
40
+ var import_registry = require("../cli-client/registry");
41
+ var import_utilsBundle = require("../../utilsBundle");
42
+ import_utilsBundle.program.argument("[session-name]", "name of the session to create or connect to", "default").option("--headed", "run in headed mode (non-headless)").option("--extension", "run with the extension").option("--browser <name>", "browser to use (chromium, chrome, firefox, webkit)").option("--persistent", "use a persistent browser context").option("--profile <path>", "path to the user data dir").option("--config <path>", "path to the config file").option("--attach <name-or-endpoint>", "attach to a running Playwright browser by name or endpoint").action(async (sessionName, options) => {
43
+ (0, import_watchdog.setupExitWatchdog)();
44
+ const clientInfo = (0, import_registry.createClientInfo)();
45
+ const mcpConfig = await resolveCLIConfig(clientInfo, sessionName, options);
46
+ const clientInfoEx = {
47
+ cwd: process.cwd(),
48
+ sessionName,
49
+ workspaceDir: clientInfo.workspaceDir
50
+ };
51
+ try {
52
+ const { browser, browserInfo } = await (0, import_browserFactory.createBrowserWithInfo)(mcpConfig, clientInfoEx);
53
+ const browserContext = mcpConfig.browser.isolated ? await browser.newContext(mcpConfig.browser.contextOptions) : browser.contexts()[0];
54
+ if (!browserContext)
55
+ throw new Error("Error: unable to connect to a browser that does not have any contexts");
56
+ const persistent = options.persistent || options.profile || mcpConfig.browser.userDataDir ? true : void 0;
57
+ const socketPath = await (0, import_daemon.startCliDaemonServer)(sessionName, browserContext, browserInfo, mcpConfig, clientInfo, { persistent, exitOnClose: true });
58
+ console.log(`### Success
59
+ Daemon listening on ${socketPath}`);
60
+ console.log("<EOF>");
61
+ } catch (error) {
62
+ const message = process.env.PWDEBUGIMPL ? error.stack || error.message : error.message;
63
+ console.log(`### Error
64
+ ${message}`);
65
+ console.log("<EOF>");
66
+ }
67
+ });
68
+ void import_utilsBundle.program.parseAsync();
69
+ function defaultConfigFile() {
70
+ return import_path.default.resolve(".playwright", "cli.config.json");
71
+ }
72
+ async function resolveCLIConfig(clientInfo, sessionName, options) {
73
+ const config = options.config ? import_path.default.resolve(options.config) : void 0;
74
+ try {
75
+ if (!config && import_fs.default.existsSync(defaultConfigFile()))
76
+ options.config = defaultConfigFile();
77
+ } catch {
78
+ }
79
+ const daemonOverrides = configUtils.configFromCLIOptions({
80
+ config: options.config,
81
+ browser: options.browser,
82
+ headless: options.headed ? false : void 0,
83
+ extension: options.extension,
84
+ userDataDir: options.profile,
85
+ snapshotMode: "full"
86
+ });
87
+ daemonOverrides.browser.remoteEndpoint = options.attach;
88
+ const envOverrides = configUtils.configFromEnv();
89
+ const configFile = envOverrides.configFile ?? daemonOverrides.configFile;
90
+ const configInFile = await configUtils.loadConfig(configFile);
91
+ let result = configUtils.mergeConfig(configUtils.defaultConfig, {
92
+ browser: {
93
+ launchOptions: {
94
+ headless: true
95
+ }
96
+ }
97
+ });
98
+ result = configUtils.mergeConfig(result, configInFile);
99
+ result = configUtils.mergeConfig(result, daemonOverrides);
100
+ result = configUtils.mergeConfig(result, envOverrides);
101
+ if (result.browser.isolated === void 0)
102
+ result.browser.isolated = !options.profile && !options.persistent && !result.browser.userDataDir && !result.browser.remoteEndpoint && !result.extension;
103
+ if (!result.extension && !result.browser.isolated && !result.browser.userDataDir && !result.browser.remoteEndpoint) {
104
+ const browserToken = result.browser.launchOptions?.channel ?? result.browser?.browserName;
105
+ const userDataDir = import_path.default.resolve(clientInfo.daemonProfilesDir, `ud-${sessionName}-${browserToken}`);
106
+ result.browser.userDataDir = userDataDir;
107
+ }
108
+ result.configFile = configFile;
109
+ result.skillMode = true;
110
+ if (result.browser.launchOptions.headless !== false)
111
+ result.browser.contextOptions.viewport ??= { width: 1280, height: 720 };
112
+ await configUtils.validateConfig(result);
113
+ return result;
114
+ }
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ resolveCLIConfig
118
+ });
Binary file