@checkly/playwright-core 1.51.17-beta.2 → 1.54.2-beta.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 (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -35
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +0 -24
  345. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  348. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +0 -24
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
  353. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
  354. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
  355. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  356. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
  359. package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
  362. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  363. package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
  368. package/lib/vite/traceViewer/recorder.html +0 -17
  369. package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.BatfzHMG.css +0 -1
  373. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
  376. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
@@ -1,127 +1,99 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.kNoXServerRunningError = exports.BrowserType = exports.BrowserReadyState = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _os = _interopRequireDefault(require("os"));
9
- var _path = _interopRequireDefault(require("path"));
10
- var _browserContext = require("./browserContext");
11
- var _timeoutSettings = require("./timeoutSettings");
12
- var _debug = require("./utils/debug");
13
- var _assert = require("../utils/isomorphic/assert");
14
- var _manualPromise = require("../utils/isomorphic/manualPromise");
15
- var _fileUtils = require("./utils/fileUtils");
16
- var _helper = require("./helper");
17
- var _instrumentation = require("./instrumentation");
18
- var _pipeTransport = require("./pipeTransport");
19
- var _processLauncher = require("./utils/processLauncher");
20
- var _progress = require("./progress");
21
- var _protocolError = require("./protocolError");
22
- var _registry = require("./registry");
23
- var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
24
- var _transport = require("./transport");
25
- var _debugLogger = require("./utils/debugLogger");
26
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
- /**
28
- * Copyright (c) Microsoft Corporation.
29
- *
30
- * Licensed under the Apache License, Version 2.0 (the "License");
31
- * you may not use this file except in compliance with the License.
32
- * You may obtain a copy of the License at
33
- *
34
- * http://www.apache.org/licenses/LICENSE-2.0
35
- *
36
- * Unless required by applicable law or agreed to in writing, software
37
- * distributed under the License is distributed on an "AS IS" BASIS,
38
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
39
- * See the License for the specific language governing permissions and
40
- * limitations under the License.
41
- */
42
-
43
- const kNoXServerRunningError = exports.kNoXServerRunningError = 'Looks like you launched a headed browser without having a XServer running.\n' + 'Set either \'headless: true\' or use \'xvfb-run <your-playwright-app>\' before running Playwright.\n\n<3 Playwright Team';
44
- class BrowserReadyState {
45
- constructor() {
46
- this._wsEndpoint = new _manualPromise.ManualPromise();
47
- }
48
- onBrowserExit() {
49
- // Unblock launch when browser prematurely exits.
50
- this._wsEndpoint.resolve(undefined);
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 });
51
17
  }
52
- async waitUntilReady() {
53
- const wsEndpoint = await this._wsEndpoint;
54
- return {
55
- wsEndpoint
56
- };
57
- }
58
- }
59
- exports.BrowserReadyState = BrowserReadyState;
60
- class BrowserType extends _instrumentation.SdkObject {
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 browserType_exports = {};
30
+ __export(browserType_exports, {
31
+ BrowserType: () => BrowserType,
32
+ kNoXServerRunningError: () => kNoXServerRunningError
33
+ });
34
+ module.exports = __toCommonJS(browserType_exports);
35
+ var import_fs = __toESM(require("fs"));
36
+ var import_os = __toESM(require("os"));
37
+ var import_path = __toESM(require("path"));
38
+ var import_browserContext = require("./browserContext");
39
+ var import_debug = require("./utils/debug");
40
+ var import_assert = require("../utils/isomorphic/assert");
41
+ var import_manualPromise = require("../utils/isomorphic/manualPromise");
42
+ var import_time = require("../utils/isomorphic/time");
43
+ var import_fileUtils = require("./utils/fileUtils");
44
+ var import_helper = require("./helper");
45
+ var import_instrumentation = require("./instrumentation");
46
+ var import_pipeTransport = require("./pipeTransport");
47
+ var import_processLauncher = require("./utils/processLauncher");
48
+ var import_protocolError = require("./protocolError");
49
+ var import_registry = require("./registry");
50
+ var import_socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
51
+ var import_transport = require("./transport");
52
+ var import_debugLogger = require("./utils/debugLogger");
53
+ const kNoXServerRunningError = "Looks like you launched a headed browser without having a XServer running.\nSet either 'headless: true' or use 'xvfb-run <your-playwright-app>' before running Playwright.\n\n<3 Playwright Team";
54
+ class BrowserType extends import_instrumentation.SdkObject {
61
55
  constructor(parent, browserName) {
62
- super(parent, 'browser-type');
63
- this._name = void 0;
64
- this._useBidi = false;
56
+ super(parent, "browser-type");
65
57
  this.attribution.browserType = this;
66
58
  this._name = browserName;
59
+ this.logName = "browser";
67
60
  }
68
61
  executablePath() {
69
- return _registry.registry.findExecutable(this._name).executablePath(this.attribution.playwright.options.sdkLanguage) || '';
62
+ return import_registry.registry.findExecutable(this._name).executablePath(this.attribution.playwright.options.sdkLanguage) || "";
70
63
  }
71
64
  name() {
72
65
  return this._name;
73
66
  }
74
- async launch(metadata, options, protocolLogger) {
67
+ async launch(progress, options, protocolLogger) {
75
68
  options = this._validateLaunchOptions(options);
76
- if (this._useBidi) options.useWebSocket = true;
77
- const controller = new _progress.ProgressController(metadata, this);
78
- controller.setLogName('browser');
79
- const browser = await controller.run(progress => {
80
- const seleniumHubUrl = options.__testHookSeleniumRemoteURL || process.env.SELENIUM_REMOTE_URL;
81
- if (seleniumHubUrl) return this._launchWithSeleniumHub(progress, seleniumHubUrl, options);
82
- return this._innerLaunchWithRetries(progress, options, undefined, _helper.helper.debugProtocolLogger(protocolLogger)).catch(e => {
83
- throw this._rewriteStartupLog(e);
84
- });
85
- }, _timeoutSettings.TimeoutSettings.launchTimeout(options));
86
- return browser;
69
+ const seleniumHubUrl = options.__testHookSeleniumRemoteURL || process.env.SELENIUM_REMOTE_URL;
70
+ if (seleniumHubUrl)
71
+ return this._launchWithSeleniumHub(progress, seleniumHubUrl, options);
72
+ return this._innerLaunchWithRetries(progress, options, void 0, import_helper.helper.debugProtocolLogger(protocolLogger)).catch((e) => {
73
+ throw this._rewriteStartupLog(e);
74
+ });
87
75
  }
88
- async launchPersistentContext(metadata, userDataDir, options) {
76
+ async launchPersistentContext(progress, userDataDir, options) {
89
77
  const launchOptions = this._validateLaunchOptions(options);
90
- if (this._useBidi) launchOptions.useWebSocket = true;
91
- const controller = new _progress.ProgressController(metadata, this);
92
- controller.setLogName('browser');
93
- const browser = await controller.run(async progress => {
94
- var _options$clientCertif;
95
- // Note: Any initial TLS requests will fail since we rely on the Page/Frames initialize which sets ignoreHTTPSErrors.
96
- let clientCertificatesProxy;
97
- if ((_options$clientCertif = options.clientCertificates) !== null && _options$clientCertif !== void 0 && _options$clientCertif.length) {
98
- var _clientCertificatesPr;
99
- clientCertificatesProxy = new _socksClientCertificatesInterceptor.ClientCertificatesProxy(options);
100
- launchOptions.proxyOverride = await ((_clientCertificatesPr = clientCertificatesProxy) === null || _clientCertificatesPr === void 0 ? void 0 : _clientCertificatesPr.listen());
101
- options = {
102
- ...options
103
- };
104
- options.internalIgnoreHTTPSErrors = true;
105
- }
106
- progress.cleanupWhenAborted(() => {
107
- var _clientCertificatesPr2;
108
- return (_clientCertificatesPr2 = clientCertificatesProxy) === null || _clientCertificatesPr2 === void 0 ? void 0 : _clientCertificatesPr2.close();
109
- });
110
- const browser = await this._innerLaunchWithRetries(progress, launchOptions, options, _helper.helper.debugProtocolLogger(), userDataDir).catch(e => {
111
- throw this._rewriteStartupLog(e);
112
- });
113
- browser._defaultContext._clientCertificatesProxy = clientCertificatesProxy;
114
- return browser;
115
- }, _timeoutSettings.TimeoutSettings.launchTimeout(launchOptions));
78
+ let clientCertificatesProxy;
79
+ if (options.clientCertificates?.length) {
80
+ clientCertificatesProxy = await progress.raceWithCleanup(import_socksClientCertificatesInterceptor.ClientCertificatesProxy.create(options), (proxy) => proxy.close());
81
+ launchOptions.proxyOverride = clientCertificatesProxy.proxySettings();
82
+ options = { ...options };
83
+ options.internalIgnoreHTTPSErrors = true;
84
+ }
85
+ const browser = await this._innerLaunchWithRetries(progress, launchOptions, options, import_helper.helper.debugProtocolLogger(), userDataDir).catch((e) => {
86
+ throw this._rewriteStartupLog(e);
87
+ });
88
+ browser._defaultContext._clientCertificatesProxy = clientCertificatesProxy;
116
89
  return browser._defaultContext;
117
90
  }
118
91
  async _innerLaunchWithRetries(progress, options, persistent, protocolLogger, userDataDir) {
119
92
  try {
120
93
  return await this._innerLaunch(progress, options, persistent, protocolLogger, userDataDir);
121
94
  } catch (error) {
122
- // @see https://github.com/microsoft/playwright/issues/5214
123
- const errorMessage = typeof error === 'object' && typeof error.message === 'string' ? error.message : '';
124
- if (errorMessage.includes('Inconsistency detected by ld.so')) {
95
+ const errorMessage = typeof error === "object" && typeof error.message === "string" ? error.message : "";
96
+ if (errorMessage.includes("Inconsistency detected by ld.so")) {
125
97
  progress.log(`<restarting browser due to hitting race condition in glibc>`);
126
98
  return this._innerLaunch(progress, options, persistent, protocolLogger, userDataDir);
127
99
  }
@@ -129,18 +101,14 @@ class BrowserType extends _instrumentation.SdkObject {
129
101
  }
130
102
  }
131
103
  async _innerLaunch(progress, options, persistent, protocolLogger, maybeUserDataDir) {
132
- options.proxy = options.proxy ? (0, _browserContext.normalizeProxySettings)(options.proxy) : undefined;
133
- const browserLogsCollector = new _debugLogger.RecentLogsCollector();
134
- const {
135
- browserProcess,
136
- userDataDir,
137
- artifactsDir,
138
- transport
139
- } = await this._launchProcess(progress, options, !!persistent, browserLogsCollector, maybeUserDataDir);
140
- if (options.__testHookBeforeCreateBrowser) await options.__testHookBeforeCreateBrowser();
104
+ options.proxy = options.proxy ? (0, import_browserContext.normalizeProxySettings)(options.proxy) : void 0;
105
+ const browserLogsCollector = new import_debugLogger.RecentLogsCollector();
106
+ const { browserProcess, userDataDir, artifactsDir, transport } = await this._launchProcess(progress, options, !!persistent, browserLogsCollector, maybeUserDataDir);
107
+ if (options.__testHookBeforeCreateBrowser)
108
+ await progress.race(options.__testHookBeforeCreateBrowser());
141
109
  const browserOptions = {
142
110
  name: this._name,
143
- isChromium: this._name === 'chromium',
111
+ isChromium: this._name === "chromium",
144
112
  channel: options.channel,
145
113
  slowMo: options.slowMo,
146
114
  persistent,
@@ -153,187 +121,189 @@ class BrowserType extends _instrumentation.SdkObject {
153
121
  proxy: options.proxy,
154
122
  protocolLogger,
155
123
  browserLogsCollector,
156
- wsEndpoint: options.useWebSocket ? transport.wsEndpoint : undefined,
124
+ wsEndpoint: transport instanceof import_transport.WebSocketTransport ? transport.wsEndpoint : void 0,
157
125
  originalLaunchOptions: options
158
126
  };
159
- if (persistent) (0, _browserContext.validateBrowserContextOptions)(persistent, browserOptions);
127
+ if (persistent)
128
+ (0, import_browserContext.validateBrowserContextOptions)(persistent, browserOptions);
160
129
  copyTestHooks(options, browserOptions);
161
- const browser = await this.connectToTransport(transport, browserOptions);
130
+ const browser = await progress.race(this.connectToTransport(transport, browserOptions, browserLogsCollector));
162
131
  browser._userDataDirForTest = userDataDir;
163
- // We assume no control when using custom arguments, and do not prepare the default context in that case.
164
- if (persistent && !options.ignoreAllDefaultArgs) await browser._defaultContext._loadDefaultContext(progress);
132
+ if (persistent && !options.ignoreAllDefaultArgs)
133
+ await browser._defaultContext._loadDefaultContext(progress);
165
134
  return browser;
166
135
  }
167
- async _launchProcess(progress, options, isPersistent, browserLogsCollector, userDataDir) {
168
- var _await$readyState$wai;
136
+ async _prepareToLaunch(options, isPersistent, userDataDir) {
169
137
  const {
170
138
  ignoreDefaultArgs,
171
139
  ignoreAllDefaultArgs,
172
140
  args = [],
173
- executablePath = null,
174
- handleSIGINT = true,
175
- handleSIGTERM = true,
176
- handleSIGHUP = true
141
+ executablePath = null
177
142
  } = options;
178
- const env = options.env ? (0, _processLauncher.envArrayToObject)(options.env) : process.env;
179
143
  await this._createArtifactDirs(options);
180
144
  const tempDirectories = [];
181
- const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), 'playwright-artifacts-'));
145
+ const artifactsDir = await import_fs.default.promises.mkdtemp(import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-"));
182
146
  tempDirectories.push(artifactsDir);
183
147
  if (userDataDir) {
184
- (0, _assert.assert)(_path.default.isAbsolute(userDataDir), 'userDataDir must be an absolute path');
185
- // Firefox bails if the profile directory does not exist, Chrome creates it. We ensure consistent behavior here.
186
- if (!(await (0, _fileUtils.existsAsync)(userDataDir))) await _fs.default.promises.mkdir(userDataDir, {
187
- recursive: true,
188
- mode: 0o700
189
- });
148
+ (0, import_assert.assert)(import_path.default.isAbsolute(userDataDir), "userDataDir must be an absolute path");
149
+ if (!await (0, import_fileUtils.existsAsync)(userDataDir))
150
+ await import_fs.default.promises.mkdir(userDataDir, { recursive: true, mode: 448 });
190
151
  } else {
191
- userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), `playwright_${this._name}dev_profile-`));
152
+ userDataDir = await import_fs.default.promises.mkdtemp(import_path.default.join(import_os.default.tmpdir(), `playwright_${this._name}dev_profile-`));
192
153
  tempDirectories.push(userDataDir);
193
154
  }
194
155
  await this.prepareUserDataDir(options, userDataDir);
195
156
  const browserArguments = [];
196
- if (ignoreAllDefaultArgs) browserArguments.push(...args);else if (ignoreDefaultArgs) browserArguments.push(...this.defaultArgs(options, isPersistent, userDataDir).filter(arg => ignoreDefaultArgs.indexOf(arg) === -1));else browserArguments.push(...this.defaultArgs(options, isPersistent, userDataDir));
157
+ if (ignoreAllDefaultArgs)
158
+ browserArguments.push(...args);
159
+ else if (ignoreDefaultArgs)
160
+ browserArguments.push(...this.defaultArgs(options, isPersistent, userDataDir).filter((arg) => ignoreDefaultArgs.indexOf(arg) === -1));
161
+ else
162
+ browserArguments.push(...this.defaultArgs(options, isPersistent, userDataDir));
197
163
  let executable;
198
164
  if (executablePath) {
199
- if (!(await (0, _fileUtils.existsAsync)(executablePath))) throw new Error(`Failed to launch ${this._name} because executable doesn't exist at ${executablePath}`);
165
+ if (!await (0, import_fileUtils.existsAsync)(executablePath))
166
+ throw new Error(`Failed to launch ${this._name} because executable doesn't exist at ${executablePath}`);
200
167
  executable = executablePath;
201
168
  } else {
202
- const registryExecutable = _registry.registry.findExecutable(this.getExecutableName(options));
203
- if (!registryExecutable || registryExecutable.browserName !== this._name) throw new Error(`Unsupported ${this._name} channel "${options.channel}"`);
169
+ const registryExecutable = import_registry.registry.findExecutable(this.getExecutableName(options));
170
+ if (!registryExecutable || registryExecutable.browserName !== this._name)
171
+ throw new Error(`Unsupported ${this._name} channel "${options.channel}"`);
204
172
  executable = registryExecutable.executablePathOrDie(this.attribution.playwright.options.sdkLanguage);
205
- await _registry.registry.validateHostRequirementsForExecutablesIfNeeded([registryExecutable], this.attribution.playwright.options.sdkLanguage);
173
+ await import_registry.registry.validateHostRequirementsForExecutablesIfNeeded([registryExecutable], this.attribution.playwright.options.sdkLanguage);
206
174
  }
207
- const readyState = this.readyState(options);
208
- // Note: it is important to define these variables before launchProcess, so that we don't get
209
- // "Cannot access 'browserServer' before initialization" if something went wrong.
210
- let transport = undefined;
211
- let browserProcess = undefined;
175
+ return { executable, browserArguments, userDataDir, artifactsDir, tempDirectories };
176
+ }
177
+ async _launchProcess(progress, options, isPersistent, browserLogsCollector, userDataDir) {
212
178
  const {
213
- launchedProcess,
214
- gracefullyClose,
215
- kill
216
- } = await (0, _processLauncher.launchProcess)({
217
- command: executable,
218
- args: browserArguments,
219
- env: this.amendEnvironment(env, userDataDir, executable, browserArguments),
179
+ handleSIGINT = true,
180
+ handleSIGTERM = true,
181
+ handleSIGHUP = true
182
+ } = options;
183
+ const env = options.env ? (0, import_processLauncher.envArrayToObject)(options.env) : process.env;
184
+ const prepared = await progress.race(this._prepareToLaunch(options, isPersistent, userDataDir));
185
+ progress.cleanupWhenAborted(() => (0, import_fileUtils.removeFolders)(prepared.tempDirectories));
186
+ let transport = void 0;
187
+ let browserProcess = void 0;
188
+ const exitPromise = new import_manualPromise.ManualPromise();
189
+ const { launchedProcess, gracefullyClose, kill } = await (0, import_processLauncher.launchProcess)({
190
+ command: prepared.executable,
191
+ args: prepared.browserArguments,
192
+ env: this.amendEnvironment(env, prepared.userDataDir, isPersistent),
220
193
  handleSIGINT,
221
194
  handleSIGTERM,
222
195
  handleSIGHUP,
223
- log: message => {
224
- readyState === null || readyState === void 0 || readyState.onBrowserOutput(message);
196
+ log: (message) => {
225
197
  progress.log(message);
226
198
  browserLogsCollector.log(message);
227
199
  },
228
- stdio: 'pipe',
229
- tempDirectories,
200
+ stdio: "pipe",
201
+ tempDirectories: prepared.tempDirectories,
230
202
  attemptToGracefullyClose: async () => {
231
- if (options.__testHookGracefullyClose) await options.__testHookGracefullyClose();
232
- // We try to gracefully close to prevent crash reporting and core dumps.
233
- // Note that it's fine to reuse the pipe transport, since
234
- // our connection ignores kBrowserCloseMessageId.
203
+ if (options.__testHookGracefullyClose)
204
+ await options.__testHookGracefullyClose();
235
205
  this.attemptToGracefullyCloseBrowser(transport);
236
206
  },
237
207
  onExit: (exitCode, signal) => {
238
- // Unblock launch when browser prematurely exits.
239
- readyState === null || readyState === void 0 || readyState.onBrowserExit();
240
- if (browserProcess && browserProcess.onclose) browserProcess.onclose(exitCode, signal);
208
+ exitPromise.resolve();
209
+ if (browserProcess && browserProcess.onclose)
210
+ browserProcess.onclose(exitCode, signal);
241
211
  }
242
212
  });
243
213
  async function closeOrKill(timeout) {
244
214
  let timer;
245
215
  try {
246
- await Promise.race([gracefullyClose(), new Promise((resolve, reject) => timer = setTimeout(reject, timeout))]);
216
+ await Promise.race([
217
+ gracefullyClose(),
218
+ new Promise((resolve, reject) => timer = setTimeout(reject, timeout))
219
+ ]);
247
220
  } catch (ignored) {
248
- await kill().catch(ignored => {}); // Make sure to await actual process exit.
221
+ await kill().catch((ignored2) => {
222
+ });
249
223
  } finally {
250
224
  clearTimeout(timer);
251
225
  }
252
226
  }
253
227
  browserProcess = {
254
- onclose: undefined,
228
+ onclose: void 0,
255
229
  process: launchedProcess,
256
- close: () => closeOrKill(options.__testHookBrowserCloseTimeout || _timeoutSettings.DEFAULT_TIMEOUT),
230
+ close: () => closeOrKill(options.__testHookBrowserCloseTimeout || import_time.DEFAULT_PLAYWRIGHT_TIMEOUT),
257
231
  kill
258
232
  };
259
- progress.cleanupWhenAborted(() => closeOrKill(progress.timeUntilDeadline()));
260
- const wsEndpoint = (_await$readyState$wai = await (readyState === null || readyState === void 0 ? void 0 : readyState.waitUntilReady())) === null || _await$readyState$wai === void 0 ? void 0 : _await$readyState$wai.wsEndpoint;
261
- if (options.useWebSocket) {
262
- transport = await _transport.WebSocketTransport.connect(progress, wsEndpoint);
233
+ progress.cleanupWhenAborted(() => closeOrKill(import_time.DEFAULT_PLAYWRIGHT_TIMEOUT));
234
+ const { wsEndpoint } = await progress.race([
235
+ this.waitForReadyState(options, browserLogsCollector),
236
+ exitPromise.then(() => ({ wsEndpoint: void 0 }))
237
+ ]);
238
+ if (options.cdpPort !== void 0 || !this.supportsPipeTransport()) {
239
+ transport = await import_transport.WebSocketTransport.connect(progress, wsEndpoint);
263
240
  } else {
264
241
  const stdio = launchedProcess.stdio;
265
- transport = new _pipeTransport.PipeTransport(stdio[3], stdio[4]);
242
+ transport = new import_pipeTransport.PipeTransport(stdio[3], stdio[4]);
266
243
  }
267
- return {
268
- browserProcess,
269
- artifactsDir,
270
- userDataDir,
271
- transport
272
- };
244
+ progress.cleanupWhenAborted(() => transport.close());
245
+ return { browserProcess, artifactsDir: prepared.artifactsDir, userDataDir: prepared.userDataDir, transport };
273
246
  }
274
247
  async _createArtifactDirs(options) {
275
- if (options.downloadsPath) await _fs.default.promises.mkdir(options.downloadsPath, {
276
- recursive: true
277
- });
278
- if (options.tracesDir) await _fs.default.promises.mkdir(options.tracesDir, {
279
- recursive: true
280
- });
248
+ if (options.downloadsPath)
249
+ await import_fs.default.promises.mkdir(options.downloadsPath, { recursive: true });
250
+ if (options.tracesDir)
251
+ await import_fs.default.promises.mkdir(options.tracesDir, { recursive: true });
281
252
  }
282
- async connectOverCDP(metadata, endpointURL, options, timeout) {
283
- throw new Error('CDP connections are only supported by Chromium');
253
+ async connectOverCDP(progress, endpointURL, options) {
254
+ throw new Error("CDP connections are only supported by Chromium");
284
255
  }
285
256
  async _launchWithSeleniumHub(progress, hubUrl, options) {
286
- throw new Error('Connecting to SELENIUM_REMOTE_URL is only supported by Chromium');
257
+ throw new Error("Connecting to SELENIUM_REMOTE_URL is only supported by Chromium");
287
258
  }
288
259
  _validateLaunchOptions(options) {
289
- const {
290
- devtools = false
291
- } = options;
292
- let {
293
- headless = !devtools,
294
- downloadsPath,
295
- proxy
296
- } = options;
297
- if ((0, _debug.debugMode)()) headless = false;
298
- if (downloadsPath && !_path.default.isAbsolute(downloadsPath)) downloadsPath = _path.default.join(process.cwd(), downloadsPath);
299
- if (this.attribution.playwright.options.socksProxyPort) proxy = {
300
- server: `socks5://127.0.0.1:${this.attribution.playwright.options.socksProxyPort}`
301
- };
302
- return {
303
- ...options,
304
- devtools,
305
- headless,
306
- downloadsPath,
307
- proxy
308
- };
260
+ const { devtools = false } = options;
261
+ let { headless = !devtools, downloadsPath, proxy } = options;
262
+ if ((0, import_debug.debugMode)())
263
+ headless = false;
264
+ if (downloadsPath && !import_path.default.isAbsolute(downloadsPath))
265
+ downloadsPath = import_path.default.join(process.cwd(), downloadsPath);
266
+ if (options.socksProxyPort)
267
+ proxy = { server: `socks5://127.0.0.1:${options.socksProxyPort}` };
268
+ return { ...options, devtools, headless, downloadsPath, proxy };
309
269
  }
310
270
  _createUserDataDirArgMisuseError(userDataDirArg) {
311
271
  switch (this.attribution.playwright.options.sdkLanguage) {
312
- case 'java':
272
+ case "java":
313
273
  return new Error(`Pass userDataDir parameter to 'BrowserType.launchPersistentContext(userDataDir, options)' instead of specifying '${userDataDirArg}' argument`);
314
- case 'python':
274
+ case "python":
315
275
  return new Error(`Pass user_data_dir parameter to 'browser_type.launch_persistent_context(user_data_dir, **kwargs)' instead of specifying '${userDataDirArg}' argument`);
316
- case 'csharp':
276
+ case "csharp":
317
277
  return new Error(`Pass userDataDir parameter to 'BrowserType.LaunchPersistentContextAsync(userDataDir, options)' instead of specifying '${userDataDirArg}' argument`);
318
278
  default:
319
279
  return new Error(`Pass userDataDir parameter to 'browserType.launchPersistentContext(userDataDir, options)' instead of specifying '${userDataDirArg}' argument`);
320
280
  }
321
281
  }
322
282
  _rewriteStartupLog(error) {
323
- if (!(0, _protocolError.isProtocolError)(error)) return error;
283
+ if (!(0, import_protocolError.isProtocolError)(error))
284
+ return error;
324
285
  return this.doRewriteStartupLog(error);
325
286
  }
326
- readyState(options) {
327
- return undefined;
287
+ async waitForReadyState(options, browserLogsCollector) {
288
+ return {};
289
+ }
290
+ async prepareUserDataDir(options, userDataDir) {
291
+ }
292
+ supportsPipeTransport() {
293
+ return true;
328
294
  }
329
- async prepareUserDataDir(options, userDataDir) {}
330
295
  getExecutableName(options) {
331
296
  return options.channel || this._name;
332
297
  }
333
298
  }
334
- exports.BrowserType = BrowserType;
335
299
  function copyTestHooks(from, to) {
336
300
  for (const [key, value] of Object.entries(from)) {
337
- if (key.startsWith('__testHook')) to[key] = value;
301
+ if (key.startsWith("__testHook"))
302
+ to[key] = value;
338
303
  }
339
- }
304
+ }
305
+ // Annotate the CommonJS export names for ESM import in node:
306
+ 0 && (module.exports = {
307
+ BrowserType,
308
+ kNoXServerRunningError
309
+ });
@@ -1,35 +1,41 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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 callLog_exports = {};
20
+ __export(callLog_exports, {
21
+ compressCallLog: () => compressCallLog,
22
+ findRepeatedSubsequencesForTest: () => findRepeatedSubsequencesForTest
5
23
  });
6
- exports.compressCallLog = compressCallLog;
7
- exports.findRepeatedSubsequencesForTest = void 0;
8
- /**
9
- * Copyright (c) Microsoft Corporation.
10
- *
11
- * Licensed under the Apache License, Version 2.0 (the 'License");
12
- * you may not use this file except in compliance with the License.
13
- * You may obtain a copy of the License at
14
- *
15
- * http://www.apache.org/licenses/LICENSE-2.0
16
- *
17
- * Unless required by applicable law or agreed to in writing, software
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
- * See the License for the specific language governing permissions and
21
- * limitations under the License.
22
- */
23
-
24
+ module.exports = __toCommonJS(callLog_exports);
24
25
  function compressCallLog(log) {
25
26
  const lines = [];
26
27
  for (const block of findRepeatedSubsequences(log)) {
27
28
  for (let i = 0; i < block.sequence.length; i++) {
28
29
  const line = block.sequence[i];
29
30
  const leadingWhitespace = line.match(/^\s*/);
30
- const whitespacePrefix = ' ' + (leadingWhitespace === null || leadingWhitespace === void 0 ? void 0 : leadingWhitespace[0]) || '';
31
- const countPrefix = `${block.count} × `;
32
- if (block.count > 1 && i === 0) lines.push(whitespacePrefix + countPrefix + line.trim());else if (block.count > 1) lines.push(whitespacePrefix + ' '.repeat(countPrefix.length - 2) + '- ' + line.trim());else lines.push(whitespacePrefix + '- ' + line.trim());
31
+ const whitespacePrefix = " " + leadingWhitespace?.[0] || "";
32
+ const countPrefix = `${block.count} \xD7 `;
33
+ if (block.count > 1 && i === 0)
34
+ lines.push(whitespacePrefix + countPrefix + line.trim());
35
+ else if (block.count > 1)
36
+ lines.push(whitespacePrefix + " ".repeat(countPrefix.length - 2) + "- " + line.trim());
37
+ else
38
+ lines.push(whitespacePrefix + "- " + line.trim());
33
39
  }
34
40
  }
35
41
  return lines;
@@ -39,41 +45,38 @@ function findRepeatedSubsequences(s) {
39
45
  const result = [];
40
46
  let i = 0;
41
47
  const arraysEqual = (a1, a2) => {
42
- if (a1.length !== a2.length) return false;
48
+ if (a1.length !== a2.length)
49
+ return false;
43
50
  for (let j = 0; j < a1.length; j++) {
44
- if (a1[j] !== a2[j]) return false;
51
+ if (a1[j] !== a2[j])
52
+ return false;
45
53
  }
46
54
  return true;
47
55
  };
48
56
  while (i < n) {
49
57
  let maxRepeatCount = 1;
50
- let maxRepeatSubstr = [s[i]]; // Initialize with the element at index i
58
+ let maxRepeatSubstr = [s[i]];
51
59
  let maxRepeatLength = 1;
52
-
53
- // Try substrings of length from 1 to the remaining length of the array
54
60
  for (let p = 1; p <= n - i; p++) {
55
- const substr = s.slice(i, i + p); // Extract substring as array
61
+ const substr = s.slice(i, i + p);
56
62
  let k = 1;
57
-
58
- // Count how many times the substring repeats consecutively
59
- while (i + p * k <= n && arraysEqual(s.slice(i + p * (k - 1), i + p * k), substr)) k += 1;
60
- k -= 1; // Adjust k since it increments one extra time in the loop
61
-
62
- // Update the maximal repeating substring if necessary
63
+ while (i + p * k <= n && arraysEqual(s.slice(i + p * (k - 1), i + p * k), substr))
64
+ k += 1;
65
+ k -= 1;
63
66
  if (k > 1 && k * p > maxRepeatCount * maxRepeatLength) {
64
67
  maxRepeatCount = k;
65
68
  maxRepeatSubstr = substr;
66
69
  maxRepeatLength = p;
67
70
  }
68
71
  }
69
-
70
- // Record the substring and its count
71
- result.push({
72
- sequence: maxRepeatSubstr,
73
- count: maxRepeatCount
74
- });
75
- i += maxRepeatLength * maxRepeatCount; // Move index forward
72
+ result.push({ sequence: maxRepeatSubstr, count: maxRepeatCount });
73
+ i += maxRepeatLength * maxRepeatCount;
76
74
  }
77
75
  return result;
78
76
  }
79
- const findRepeatedSubsequencesForTest = exports.findRepeatedSubsequencesForTest = findRepeatedSubsequences;
77
+ const findRepeatedSubsequencesForTest = findRepeatedSubsequences;
78
+ // Annotate the CommonJS export names for ESM import in node:
79
+ 0 && (module.exports = {
80
+ compressCallLog,
81
+ findRepeatedSubsequencesForTest
82
+ });