@stablyai/internal-playwright-core 0.1.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 (405) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +3 -0
  4. package/ThirdPartyNotices.txt +1134 -0
  5. package/bin/install_media_pack.ps1 +5 -0
  6. package/bin/install_webkit_wsl.ps1 +35 -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 +80 -0
  23. package/cli.js +18 -0
  24. package/index.d.ts +17 -0
  25. package/index.js +32 -0
  26. package/index.mjs +28 -0
  27. package/lib/androidServerImpl.js +65 -0
  28. package/lib/browserServerImpl.js +120 -0
  29. package/lib/cli/cli.js +58 -0
  30. package/lib/cli/driver.js +97 -0
  31. package/lib/cli/program.js +634 -0
  32. package/lib/cli/programWithTestStub.js +74 -0
  33. package/lib/client/accessibility.js +49 -0
  34. package/lib/client/android.js +361 -0
  35. package/lib/client/api.js +137 -0
  36. package/lib/client/artifact.js +79 -0
  37. package/lib/client/browser.js +163 -0
  38. package/lib/client/browserContext.js +529 -0
  39. package/lib/client/browserType.js +184 -0
  40. package/lib/client/cdpSession.js +51 -0
  41. package/lib/client/channelOwner.js +194 -0
  42. package/lib/client/clientHelper.js +64 -0
  43. package/lib/client/clientInstrumentation.js +55 -0
  44. package/lib/client/clientStackTrace.js +69 -0
  45. package/lib/client/clock.js +68 -0
  46. package/lib/client/connection.js +314 -0
  47. package/lib/client/consoleMessage.js +54 -0
  48. package/lib/client/coverage.js +44 -0
  49. package/lib/client/dialog.js +56 -0
  50. package/lib/client/download.js +62 -0
  51. package/lib/client/electron.js +138 -0
  52. package/lib/client/elementHandle.js +281 -0
  53. package/lib/client/errors.js +77 -0
  54. package/lib/client/eventEmitter.js +314 -0
  55. package/lib/client/events.js +99 -0
  56. package/lib/client/fetch.js +369 -0
  57. package/lib/client/fileChooser.js +46 -0
  58. package/lib/client/fileUtils.js +34 -0
  59. package/lib/client/frame.js +408 -0
  60. package/lib/client/harRouter.js +87 -0
  61. package/lib/client/input.js +84 -0
  62. package/lib/client/jsHandle.js +109 -0
  63. package/lib/client/jsonPipe.js +39 -0
  64. package/lib/client/localUtils.js +60 -0
  65. package/lib/client/locator.js +368 -0
  66. package/lib/client/network.js +747 -0
  67. package/lib/client/page.js +721 -0
  68. package/lib/client/platform.js +74 -0
  69. package/lib/client/playwright.js +71 -0
  70. package/lib/client/selectors.js +55 -0
  71. package/lib/client/stream.js +39 -0
  72. package/lib/client/timeoutSettings.js +79 -0
  73. package/lib/client/tracing.js +117 -0
  74. package/lib/client/types.js +28 -0
  75. package/lib/client/video.js +59 -0
  76. package/lib/client/waiter.js +142 -0
  77. package/lib/client/webError.js +39 -0
  78. package/lib/client/webSocket.js +93 -0
  79. package/lib/client/worker.js +63 -0
  80. package/lib/client/writableStream.js +39 -0
  81. package/lib/common/debugLogger.js +90 -0
  82. package/lib/common/socksProxy.js +569 -0
  83. package/lib/common/timeoutSettings.js +73 -0
  84. package/lib/common/types.js +5 -0
  85. package/lib/generated/bindingsControllerSource.js +28 -0
  86. package/lib/generated/clockSource.js +28 -0
  87. package/lib/generated/consoleApiSource.js +28 -0
  88. package/lib/generated/injectedScriptSource.js +28 -0
  89. package/lib/generated/pollingRecorderSource.js +28 -0
  90. package/lib/generated/recorderSource.js +28 -0
  91. package/lib/generated/storageScriptSource.js +28 -0
  92. package/lib/generated/utilityScriptSource.js +28 -0
  93. package/lib/generated/webSocketMockSource.js +336 -0
  94. package/lib/image_tools/colorUtils.js +98 -0
  95. package/lib/image_tools/compare.js +108 -0
  96. package/lib/image_tools/imageChannel.js +70 -0
  97. package/lib/image_tools/stats.js +102 -0
  98. package/lib/inProcessFactory.js +60 -0
  99. package/lib/index.js +19 -0
  100. package/lib/inprocess.js +3 -0
  101. package/lib/outofprocess.js +76 -0
  102. package/lib/protocol/debug.js +27 -0
  103. package/lib/protocol/serializers.js +192 -0
  104. package/lib/protocol/transport.js +82 -0
  105. package/lib/protocol/validator.js +2919 -0
  106. package/lib/protocol/validatorPrimitives.js +193 -0
  107. package/lib/remote/playwrightConnection.js +129 -0
  108. package/lib/remote/playwrightServer.js +335 -0
  109. package/lib/server/accessibility.js +69 -0
  110. package/lib/server/android/android.js +465 -0
  111. package/lib/server/android/backendAdb.js +177 -0
  112. package/lib/server/artifact.js +127 -0
  113. package/lib/server/bidi/bidiBrowser.js +490 -0
  114. package/lib/server/bidi/bidiChromium.js +153 -0
  115. package/lib/server/bidi/bidiConnection.js +212 -0
  116. package/lib/server/bidi/bidiExecutionContext.js +221 -0
  117. package/lib/server/bidi/bidiFirefox.js +130 -0
  118. package/lib/server/bidi/bidiInput.js +146 -0
  119. package/lib/server/bidi/bidiNetworkManager.js +383 -0
  120. package/lib/server/bidi/bidiOverCdp.js +102 -0
  121. package/lib/server/bidi/bidiPage.js +552 -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/bidiDeserializer.js +98 -0
  125. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  126. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  127. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  128. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  129. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  130. package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  131. package/lib/server/browser.js +149 -0
  132. package/lib/server/browserContext.js +695 -0
  133. package/lib/server/browserType.js +328 -0
  134. package/lib/server/callLog.js +82 -0
  135. package/lib/server/chromium/appIcon.png +0 -0
  136. package/lib/server/chromium/chromium.js +402 -0
  137. package/lib/server/chromium/chromiumSwitches.js +95 -0
  138. package/lib/server/chromium/crAccessibility.js +263 -0
  139. package/lib/server/chromium/crBrowser.js +501 -0
  140. package/lib/server/chromium/crConnection.js +202 -0
  141. package/lib/server/chromium/crCoverage.js +235 -0
  142. package/lib/server/chromium/crDevTools.js +113 -0
  143. package/lib/server/chromium/crDragDrop.js +131 -0
  144. package/lib/server/chromium/crExecutionContext.js +146 -0
  145. package/lib/server/chromium/crInput.js +187 -0
  146. package/lib/server/chromium/crNetworkManager.js +666 -0
  147. package/lib/server/chromium/crPage.js +1069 -0
  148. package/lib/server/chromium/crPdf.js +121 -0
  149. package/lib/server/chromium/crProtocolHelper.js +145 -0
  150. package/lib/server/chromium/crServiceWorker.js +123 -0
  151. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  152. package/lib/server/chromium/protocol.d.js +16 -0
  153. package/lib/server/chromium/videoRecorder.js +113 -0
  154. package/lib/server/clock.js +149 -0
  155. package/lib/server/codegen/csharp.js +327 -0
  156. package/lib/server/codegen/java.js +274 -0
  157. package/lib/server/codegen/javascript.js +270 -0
  158. package/lib/server/codegen/jsonl.js +52 -0
  159. package/lib/server/codegen/language.js +132 -0
  160. package/lib/server/codegen/languages.js +68 -0
  161. package/lib/server/codegen/python.js +279 -0
  162. package/lib/server/codegen/types.js +16 -0
  163. package/lib/server/console.js +53 -0
  164. package/lib/server/cookieStore.js +206 -0
  165. package/lib/server/debugController.js +191 -0
  166. package/lib/server/debugger.js +119 -0
  167. package/lib/server/deviceDescriptors.js +39 -0
  168. package/lib/server/deviceDescriptorsSource.json +1779 -0
  169. package/lib/server/dialog.js +116 -0
  170. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  171. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  172. package/lib/server/dispatchers/browserContextDispatcher.js +364 -0
  173. package/lib/server/dispatchers/browserDispatcher.js +118 -0
  174. package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  175. package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  176. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  177. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  178. package/lib/server/dispatchers/dispatcher.js +371 -0
  179. package/lib/server/dispatchers/electronDispatcher.js +89 -0
  180. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  181. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  182. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  183. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  184. package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  185. package/lib/server/dispatchers/networkDispatchers.js +213 -0
  186. package/lib/server/dispatchers/pageDispatcher.js +401 -0
  187. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  188. package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  189. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  190. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  191. package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  192. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  193. package/lib/server/dom.js +806 -0
  194. package/lib/server/download.js +70 -0
  195. package/lib/server/electron/electron.js +270 -0
  196. package/lib/server/electron/loader.js +29 -0
  197. package/lib/server/errors.js +69 -0
  198. package/lib/server/fetch.js +621 -0
  199. package/lib/server/fileChooser.js +43 -0
  200. package/lib/server/fileUploadUtils.js +84 -0
  201. package/lib/server/firefox/ffAccessibility.js +238 -0
  202. package/lib/server/firefox/ffBrowser.js +428 -0
  203. package/lib/server/firefox/ffConnection.js +147 -0
  204. package/lib/server/firefox/ffExecutionContext.js +150 -0
  205. package/lib/server/firefox/ffInput.js +159 -0
  206. package/lib/server/firefox/ffNetworkManager.js +256 -0
  207. package/lib/server/firefox/ffPage.js +503 -0
  208. package/lib/server/firefox/firefox.js +116 -0
  209. package/lib/server/firefox/protocol.d.js +16 -0
  210. package/lib/server/formData.js +147 -0
  211. package/lib/server/frameSelectors.js +156 -0
  212. package/lib/server/frames.js +1502 -0
  213. package/lib/server/har/harRecorder.js +147 -0
  214. package/lib/server/har/harTracer.js +607 -0
  215. package/lib/server/harBackend.js +157 -0
  216. package/lib/server/helper.js +96 -0
  217. package/lib/server/index.js +58 -0
  218. package/lib/server/input.js +273 -0
  219. package/lib/server/instrumentation.js +69 -0
  220. package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
  221. package/lib/server/javascript.js +291 -0
  222. package/lib/server/launchApp.js +128 -0
  223. package/lib/server/localUtils.js +218 -0
  224. package/lib/server/macEditingCommands.js +143 -0
  225. package/lib/server/network.js +629 -0
  226. package/lib/server/page.js +871 -0
  227. package/lib/server/pipeTransport.js +89 -0
  228. package/lib/server/playwright.js +69 -0
  229. package/lib/server/progress.js +112 -0
  230. package/lib/server/protocolError.js +52 -0
  231. package/lib/server/recorder/chat.js +161 -0
  232. package/lib/server/recorder/codeGenerator.js +153 -0
  233. package/lib/server/recorder/csharp.js +310 -0
  234. package/lib/server/recorder/java.js +248 -0
  235. package/lib/server/recorder/javascript.js +229 -0
  236. package/lib/server/recorder/jsonl.js +47 -0
  237. package/lib/server/recorder/language.js +44 -0
  238. package/lib/server/recorder/python.js +276 -0
  239. package/lib/server/recorder/recorderActions.js +5 -0
  240. package/lib/server/recorder/recorderApp.js +387 -0
  241. package/lib/server/recorder/recorderRunner.js +138 -0
  242. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  243. package/lib/server/recorder/recorderUtils.js +157 -0
  244. package/lib/server/recorder/throttledFile.js +57 -0
  245. package/lib/server/recorder/utils.js +45 -0
  246. package/lib/server/recorder.js +499 -0
  247. package/lib/server/registry/browserFetcher.js +175 -0
  248. package/lib/server/registry/dependencies.js +371 -0
  249. package/lib/server/registry/index.js +1331 -0
  250. package/lib/server/registry/nativeDeps.js +1280 -0
  251. package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
  252. package/lib/server/screenshotter.js +333 -0
  253. package/lib/server/selectors.js +112 -0
  254. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  255. package/lib/server/socksInterceptor.js +95 -0
  256. package/lib/server/stably/ai-tools/http-request.js +70 -0
  257. package/lib/server/stably/ai-tools/stablyApiCaller.js +137 -0
  258. package/lib/server/stably/autohealing/elementHandleFromCoordinates.js +64 -0
  259. package/lib/server/stably/autohealing/healingService.js +228 -0
  260. package/lib/server/stably/autohealing/screenshotFrame.js +41 -0
  261. package/lib/server/stably/constants.js +31 -0
  262. package/lib/server/trace/recorder/snapshotter.js +147 -0
  263. package/lib/server/trace/recorder/snapshotterInjected.js +541 -0
  264. package/lib/server/trace/recorder/tracing.js +602 -0
  265. package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
  266. package/lib/server/trace/viewer/traceViewer.js +240 -0
  267. package/lib/server/transport.js +181 -0
  268. package/lib/server/types.js +28 -0
  269. package/lib/server/usKeyboardLayout.js +145 -0
  270. package/lib/server/utils/ascii.js +44 -0
  271. package/lib/server/utils/comparators.js +161 -0
  272. package/lib/server/utils/crypto.js +216 -0
  273. package/lib/server/utils/debug.js +42 -0
  274. package/lib/server/utils/debugLogger.js +122 -0
  275. package/lib/server/utils/env.js +73 -0
  276. package/lib/server/utils/eventsHelper.js +39 -0
  277. package/lib/server/utils/expectUtils.js +38 -0
  278. package/lib/server/utils/fileUtils.js +191 -0
  279. package/lib/server/utils/happyEyeballs.js +207 -0
  280. package/lib/server/utils/hostPlatform.js +111 -0
  281. package/lib/server/utils/httpServer.js +218 -0
  282. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  283. package/lib/server/utils/image_tools/compare.js +109 -0
  284. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  285. package/lib/server/utils/image_tools/stats.js +102 -0
  286. package/lib/server/utils/linuxUtils.js +71 -0
  287. package/lib/server/utils/network.js +233 -0
  288. package/lib/server/utils/nodePlatform.js +148 -0
  289. package/lib/server/utils/pipeTransport.js +84 -0
  290. package/lib/server/utils/processLauncher.js +241 -0
  291. package/lib/server/utils/profiler.js +65 -0
  292. package/lib/server/utils/socksProxy.js +511 -0
  293. package/lib/server/utils/spawnAsync.js +41 -0
  294. package/lib/server/utils/task.js +51 -0
  295. package/lib/server/utils/userAgent.js +98 -0
  296. package/lib/server/utils/wsServer.js +121 -0
  297. package/lib/server/utils/zipFile.js +74 -0
  298. package/lib/server/utils/zones.js +57 -0
  299. package/lib/server/webkit/protocol.d.js +16 -0
  300. package/lib/server/webkit/webkit.js +119 -0
  301. package/lib/server/webkit/wkAccessibility.js +237 -0
  302. package/lib/server/webkit/wkBrowser.js +339 -0
  303. package/lib/server/webkit/wkConnection.js +149 -0
  304. package/lib/server/webkit/wkExecutionContext.js +154 -0
  305. package/lib/server/webkit/wkInput.js +181 -0
  306. package/lib/server/webkit/wkInterceptableRequest.js +169 -0
  307. package/lib/server/webkit/wkPage.js +1134 -0
  308. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  309. package/lib/server/webkit/wkWorkers.js +104 -0
  310. package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
  311. package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
  312. package/lib/third_party/diff_match_patch.js +2222 -0
  313. package/lib/third_party/pixelmatch.js +255 -0
  314. package/lib/utils/ascii.js +31 -0
  315. package/lib/utils/comparators.js +171 -0
  316. package/lib/utils/crypto.js +33 -0
  317. package/lib/utils/debug.js +46 -0
  318. package/lib/utils/debugLogger.js +89 -0
  319. package/lib/utils/env.js +49 -0
  320. package/lib/utils/eventsHelper.js +38 -0
  321. package/lib/utils/fileUtils.js +205 -0
  322. package/lib/utils/glob.js +83 -0
  323. package/lib/utils/happy-eyeballs.js +160 -0
  324. package/lib/utils/headers.js +52 -0
  325. package/lib/utils/hostPlatform.js +128 -0
  326. package/lib/utils/httpServer.js +236 -0
  327. package/lib/utils/index.js +346 -0
  328. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  329. package/lib/utils/isomorphic/assert.js +31 -0
  330. package/lib/utils/isomorphic/colors.js +72 -0
  331. package/lib/utils/isomorphic/cssParser.js +245 -0
  332. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  333. package/lib/utils/isomorphic/headers.js +53 -0
  334. package/lib/utils/isomorphic/locatorGenerators.js +673 -0
  335. package/lib/utils/isomorphic/locatorParser.js +176 -0
  336. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  337. package/lib/utils/isomorphic/manualPromise.js +114 -0
  338. package/lib/utils/isomorphic/mimeType.js +459 -0
  339. package/lib/utils/isomorphic/multimap.js +80 -0
  340. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  341. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  342. package/lib/utils/isomorphic/rtti.js +43 -0
  343. package/lib/utils/isomorphic/selectorParser.js +386 -0
  344. package/lib/utils/isomorphic/semaphore.js +54 -0
  345. package/lib/utils/isomorphic/stackTrace.js +158 -0
  346. package/lib/utils/isomorphic/stringUtils.js +155 -0
  347. package/lib/utils/isomorphic/time.js +49 -0
  348. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  349. package/lib/utils/isomorphic/traceUtils.js +58 -0
  350. package/lib/utils/isomorphic/types.js +16 -0
  351. package/lib/utils/isomorphic/urlMatch.js +176 -0
  352. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  353. package/lib/utils/linuxUtils.js +78 -0
  354. package/lib/utils/manualPromise.js +109 -0
  355. package/lib/utils/mimeType.js +29 -0
  356. package/lib/utils/multimap.js +75 -0
  357. package/lib/utils/network.js +188 -0
  358. package/lib/utils/processLauncher.js +248 -0
  359. package/lib/utils/profiler.js +53 -0
  360. package/lib/utils/rtti.js +44 -0
  361. package/lib/utils/semaphore.js +51 -0
  362. package/lib/utils/spawnAsync.js +45 -0
  363. package/lib/utils/stackTrace.js +121 -0
  364. package/lib/utils/task.js +58 -0
  365. package/lib/utils/time.js +37 -0
  366. package/lib/utils/timeoutRunner.js +66 -0
  367. package/lib/utils/traceUtils.js +44 -0
  368. package/lib/utils/userAgent.js +105 -0
  369. package/lib/utils/wsServer.js +127 -0
  370. package/lib/utils/zipFile.js +75 -0
  371. package/lib/utils/zones.js +62 -0
  372. package/lib/utils.js +107 -0
  373. package/lib/utilsBundle.js +109 -0
  374. package/lib/utilsBundleImpl/index.js +218 -0
  375. package/lib/utilsBundleImpl/xdg-open +1066 -0
  376. package/lib/vite/htmlReport/index.html +84 -0
  377. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
  378. package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +24 -0
  379. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  380. package/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
  381. package/lib/vite/recorder/assets/index-Y-X2TGJv.js +193 -0
  382. package/lib/vite/recorder/index.html +29 -0
  383. package/lib/vite/recorder/playwright-logo.svg +9 -0
  384. package/lib/vite/traceViewer/assets/codeMirrorModule-Bhnc5o2x.js +24 -0
  385. package/lib/vite/traceViewer/assets/defaultSettingsView-ClwvkA2N.js +265 -0
  386. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  387. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
  388. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  389. package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +1 -0
  390. package/lib/vite/traceViewer/index.DFO9NNF5.js +2 -0
  391. package/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
  392. package/lib/vite/traceViewer/index.html +43 -0
  393. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  394. package/lib/vite/traceViewer/snapshot.html +21 -0
  395. package/lib/vite/traceViewer/sw.bundle.js +3 -0
  396. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  397. package/lib/vite/traceViewer/uiMode.Shu3QS-1.js +5 -0
  398. package/lib/vite/traceViewer/uiMode.html +17 -0
  399. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  400. package/lib/zipBundle.js +34 -0
  401. package/lib/zipBundleImpl.js +5 -0
  402. package/package.json +43 -0
  403. package/types/protocol.d.ts +23130 -0
  404. package/types/structs.d.ts +45 -0
  405. package/types/types.d.ts +22857 -0
@@ -0,0 +1,402 @@
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 chromium_exports = {};
30
+ __export(chromium_exports, {
31
+ Chromium: () => Chromium,
32
+ waitForReadyState: () => waitForReadyState
33
+ });
34
+ module.exports = __toCommonJS(chromium_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_chromiumSwitches = require("./chromiumSwitches");
39
+ var import_crBrowser = require("./crBrowser");
40
+ var import_crConnection = require("./crConnection");
41
+ var import_utils = require("../../utils");
42
+ var import_ascii = require("../utils/ascii");
43
+ var import_debugLogger = require("../utils/debugLogger");
44
+ var import_manualPromise = require("../../utils/isomorphic/manualPromise");
45
+ var import_network = require("../utils/network");
46
+ var import_userAgent = require("../utils/userAgent");
47
+ var import_browserContext = require("../browserContext");
48
+ var import_browserType = require("../browserType");
49
+ var import_helper = require("../helper");
50
+ var import_registry = require("../registry");
51
+ var import_transport = require("../transport");
52
+ var import_crDevTools = require("./crDevTools");
53
+ var import_browser = require("../browser");
54
+ var import_fileUtils = require("../utils/fileUtils");
55
+ var import_processLauncher = require("../utils/processLauncher");
56
+ const ARTIFACTS_FOLDER = import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-");
57
+ class Chromium extends import_browserType.BrowserType {
58
+ constructor(parent, bidiChromium) {
59
+ super(parent, "chromium");
60
+ this._bidiChromium = bidiChromium;
61
+ if ((0, import_utils.debugMode)() === "inspector")
62
+ this._devtools = this._createDevTools();
63
+ }
64
+ launch(progress, options, protocolLogger) {
65
+ if (options.channel?.startsWith("bidi-"))
66
+ return this._bidiChromium.launch(progress, options, protocolLogger);
67
+ return super.launch(progress, options, protocolLogger);
68
+ }
69
+ async launchPersistentContext(progress, userDataDir, options) {
70
+ if (options.channel?.startsWith("bidi-"))
71
+ return this._bidiChromium.launchPersistentContext(progress, userDataDir, options);
72
+ return super.launchPersistentContext(progress, userDataDir, options);
73
+ }
74
+ async connectOverCDP(progress, endpointURL, options) {
75
+ return await this._connectOverCDPInternal(progress, endpointURL, options);
76
+ }
77
+ async _connectOverCDPInternal(progress, endpointURL, options, onClose) {
78
+ let headersMap;
79
+ if (options.headers)
80
+ headersMap = (0, import_utils.headersArrayToObject)(options.headers, false);
81
+ if (!headersMap)
82
+ headersMap = { "User-Agent": (0, import_userAgent.getUserAgent)() };
83
+ else if (headersMap && !Object.keys(headersMap).some((key) => key.toLowerCase() === "user-agent"))
84
+ headersMap["User-Agent"] = (0, import_userAgent.getUserAgent)();
85
+ const artifactsDir = await progress.race(import_fs.default.promises.mkdtemp(ARTIFACTS_FOLDER));
86
+ const doCleanup = async () => {
87
+ await (0, import_fileUtils.removeFolders)([artifactsDir]);
88
+ const cb = onClose;
89
+ onClose = void 0;
90
+ await cb?.();
91
+ };
92
+ let chromeTransport;
93
+ const doClose = async () => {
94
+ await chromeTransport?.closeAndWait();
95
+ await doCleanup();
96
+ };
97
+ try {
98
+ const wsEndpoint = await urlToWSEndpoint(progress, endpointURL, headersMap);
99
+ chromeTransport = await import_transport.WebSocketTransport.connect(progress, wsEndpoint, { headers: headersMap });
100
+ const browserProcess = { close: doClose, kill: doClose };
101
+ const persistent = { noDefaultViewport: true };
102
+ const browserOptions = {
103
+ slowMo: options.slowMo,
104
+ name: "chromium",
105
+ isChromium: true,
106
+ persistent,
107
+ browserProcess,
108
+ protocolLogger: import_helper.helper.debugProtocolLogger(),
109
+ browserLogsCollector: new import_debugLogger.RecentLogsCollector(),
110
+ artifactsDir,
111
+ downloadsPath: options.downloadsPath || artifactsDir,
112
+ tracesDir: options.tracesDir || artifactsDir,
113
+ originalLaunchOptions: {}
114
+ };
115
+ (0, import_browserContext.validateBrowserContextOptions)(persistent, browserOptions);
116
+ const browser = await progress.race(import_crBrowser.CRBrowser.connect(this.attribution.playwright, chromeTransport, browserOptions));
117
+ browser._isCollocatedWithServer = false;
118
+ browser.on(import_browser.Browser.Events.Disconnected, doCleanup);
119
+ return browser;
120
+ } catch (error) {
121
+ await doClose().catch(() => {
122
+ });
123
+ throw error;
124
+ }
125
+ }
126
+ _createDevTools() {
127
+ const directory = import_registry.registry.findExecutable("chromium").directory;
128
+ return directory ? new import_crDevTools.CRDevTools(import_path.default.join(directory, "devtools-preferences.json")) : void 0;
129
+ }
130
+ async connectToTransport(transport, options, browserLogsCollector) {
131
+ let devtools = this._devtools;
132
+ if (options.__testHookForDevTools) {
133
+ devtools = this._createDevTools();
134
+ await options.__testHookForDevTools(devtools);
135
+ }
136
+ try {
137
+ return await import_crBrowser.CRBrowser.connect(this.attribution.playwright, transport, options, devtools);
138
+ } catch (e) {
139
+ if (browserLogsCollector.recentLogs().some((log) => log.includes("Failed to create a ProcessSingleton for your profile directory."))) {
140
+ throw new Error(
141
+ "Failed to create a ProcessSingleton for your profile directory. This usually means that the profile is already in use by another instance of Chromium."
142
+ );
143
+ }
144
+ throw e;
145
+ }
146
+ }
147
+ doRewriteStartupLog(error) {
148
+ if (!error.logs)
149
+ return error;
150
+ if (error.logs.includes("Missing X server"))
151
+ error.logs = "\n" + (0, import_ascii.wrapInASCIIBox)(import_browserType.kNoXServerRunningError, 1);
152
+ if (!error.logs.includes("crbug.com/357670") && !error.logs.includes("No usable sandbox!") && !error.logs.includes("crbug.com/638180"))
153
+ return error;
154
+ error.logs = [
155
+ `Chromium sandboxing failed!`,
156
+ `================================`,
157
+ `To avoid the sandboxing issue, do either of the following:`,
158
+ ` - (preferred): Configure your environment to support sandboxing`,
159
+ ` - (alternative): Launch Chromium without sandbox using 'chromiumSandbox: false' option`,
160
+ `================================`,
161
+ ``
162
+ ].join("\n");
163
+ return error;
164
+ }
165
+ amendEnvironment(env) {
166
+ return env;
167
+ }
168
+ attemptToGracefullyCloseBrowser(transport) {
169
+ const message = { method: "Browser.close", id: import_crConnection.kBrowserCloseMessageId, params: {} };
170
+ transport.send(message);
171
+ }
172
+ async _launchWithSeleniumHub(progress, hubUrl, options) {
173
+ await progress.race(this._createArtifactDirs(options));
174
+ if (!hubUrl.endsWith("/"))
175
+ hubUrl = hubUrl + "/";
176
+ const args = this._innerDefaultArgs(options);
177
+ args.push("--remote-debugging-port=0");
178
+ const isEdge = options.channel && options.channel.startsWith("msedge");
179
+ let desiredCapabilities = {
180
+ "browserName": isEdge ? "MicrosoftEdge" : "chrome",
181
+ [isEdge ? "ms:edgeOptions" : "goog:chromeOptions"]: { args }
182
+ };
183
+ if (process.env.SELENIUM_REMOTE_CAPABILITIES) {
184
+ const remoteCapabilities = parseSeleniumRemoteParams({ name: "capabilities", value: process.env.SELENIUM_REMOTE_CAPABILITIES }, progress);
185
+ if (remoteCapabilities)
186
+ desiredCapabilities = { ...desiredCapabilities, ...remoteCapabilities };
187
+ }
188
+ let headers = {};
189
+ if (process.env.SELENIUM_REMOTE_HEADERS) {
190
+ const remoteHeaders = parseSeleniumRemoteParams({ name: "headers", value: process.env.SELENIUM_REMOTE_HEADERS }, progress);
191
+ if (remoteHeaders)
192
+ headers = remoteHeaders;
193
+ }
194
+ progress.log(`<selenium> connecting to ${hubUrl}`);
195
+ const response = await (0, import_network.fetchData)(progress, {
196
+ url: hubUrl + "session",
197
+ method: "POST",
198
+ headers: {
199
+ "Content-Type": "application/json; charset=utf-8",
200
+ ...headers
201
+ },
202
+ data: JSON.stringify({
203
+ capabilities: { alwaysMatch: desiredCapabilities }
204
+ })
205
+ }, seleniumErrorHandler);
206
+ const value = JSON.parse(response).value;
207
+ const sessionId = value.sessionId;
208
+ progress.log(`<selenium> connected to sessionId=${sessionId}`);
209
+ const disconnectFromSelenium = async () => {
210
+ progress.log(`<selenium> disconnecting from sessionId=${sessionId}`);
211
+ await (0, import_network.fetchData)(void 0, {
212
+ url: hubUrl + "session/" + sessionId,
213
+ method: "DELETE",
214
+ headers
215
+ }).catch((error) => progress.log(`<error disconnecting from selenium>: ${error}`));
216
+ progress.log(`<selenium> disconnected from sessionId=${sessionId}`);
217
+ import_processLauncher.gracefullyCloseSet.delete(disconnectFromSelenium);
218
+ };
219
+ import_processLauncher.gracefullyCloseSet.add(disconnectFromSelenium);
220
+ try {
221
+ const capabilities = value.capabilities;
222
+ let endpointURL;
223
+ if (capabilities["se:cdp"]) {
224
+ progress.log(`<selenium> using selenium v4`);
225
+ const endpointURLString = addProtocol(capabilities["se:cdp"]);
226
+ endpointURL = new URL(endpointURLString);
227
+ if (endpointURL.hostname === "localhost" || endpointURL.hostname === "127.0.0.1")
228
+ endpointURL.hostname = new URL(hubUrl).hostname;
229
+ progress.log(`<selenium> retrieved endpoint ${endpointURL.toString()} for sessionId=${sessionId}`);
230
+ } else {
231
+ progress.log(`<selenium> using selenium v3`);
232
+ const maybeChromeOptions = capabilities["goog:chromeOptions"];
233
+ const chromeOptions = maybeChromeOptions && typeof maybeChromeOptions === "object" ? maybeChromeOptions : void 0;
234
+ const debuggerAddress = chromeOptions && typeof chromeOptions.debuggerAddress === "string" ? chromeOptions.debuggerAddress : void 0;
235
+ const chromeOptionsURL = typeof maybeChromeOptions === "string" ? maybeChromeOptions : void 0;
236
+ const endpointURLString = addProtocol(debuggerAddress || chromeOptionsURL).replace("localhost", "127.0.0.1");
237
+ progress.log(`<selenium> retrieved endpoint ${endpointURLString} for sessionId=${sessionId}`);
238
+ endpointURL = new URL(endpointURLString);
239
+ if (endpointURL.hostname === "localhost" || endpointURL.hostname === "127.0.0.1") {
240
+ const sessionInfoUrl = new URL(hubUrl).origin + "/grid/api/testsession?session=" + sessionId;
241
+ try {
242
+ const sessionResponse = await (0, import_network.fetchData)(progress, {
243
+ url: sessionInfoUrl,
244
+ method: "GET",
245
+ headers
246
+ }, seleniumErrorHandler);
247
+ const proxyId = JSON.parse(sessionResponse).proxyId;
248
+ endpointURL.hostname = new URL(proxyId).hostname;
249
+ progress.log(`<selenium> resolved endpoint ip ${endpointURL.toString()} for sessionId=${sessionId}`);
250
+ } catch (e) {
251
+ progress.log(`<selenium> unable to resolve endpoint ip for sessionId=${sessionId}, running in standalone?`);
252
+ }
253
+ }
254
+ }
255
+ return await this._connectOverCDPInternal(progress, endpointURL.toString(), {
256
+ ...options,
257
+ headers: (0, import_utils.headersObjectToArray)(headers)
258
+ }, disconnectFromSelenium);
259
+ } catch (e) {
260
+ await disconnectFromSelenium();
261
+ throw e;
262
+ }
263
+ }
264
+ async defaultArgs(options, isPersistent, userDataDir) {
265
+ const chromeArguments = this._innerDefaultArgs(options);
266
+ chromeArguments.push(`--user-data-dir=${userDataDir}`);
267
+ if (options.cdpPort !== void 0)
268
+ chromeArguments.push(`--remote-debugging-port=${options.cdpPort}`);
269
+ else
270
+ chromeArguments.push("--remote-debugging-pipe");
271
+ if (isPersistent)
272
+ chromeArguments.push("about:blank");
273
+ else
274
+ chromeArguments.push("--no-startup-window");
275
+ return chromeArguments;
276
+ }
277
+ _innerDefaultArgs(options) {
278
+ const { args = [] } = options;
279
+ const userDataDirArg = args.find((arg) => arg.startsWith("--user-data-dir"));
280
+ if (userDataDirArg)
281
+ throw this._createUserDataDirArgMisuseError("--user-data-dir");
282
+ if (args.find((arg) => arg.startsWith("--remote-debugging-pipe")))
283
+ throw new Error("Playwright manages remote debugging connection itself.");
284
+ if (args.find((arg) => !arg.startsWith("-")))
285
+ throw new Error("Arguments can not specify page to be opened");
286
+ const chromeArguments = [...(0, import_chromiumSwitches.chromiumSwitches)(options.assistantMode, options.channel)];
287
+ if (import_os.default.platform() === "darwin") {
288
+ chromeArguments.push("--enable-unsafe-swiftshader");
289
+ }
290
+ if (options.devtools)
291
+ chromeArguments.push("--auto-open-devtools-for-tabs");
292
+ if (options.headless) {
293
+ chromeArguments.push("--headless");
294
+ chromeArguments.push(
295
+ "--hide-scrollbars",
296
+ "--mute-audio",
297
+ "--blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4"
298
+ );
299
+ }
300
+ if (options.chromiumSandbox !== true)
301
+ chromeArguments.push("--no-sandbox");
302
+ const proxy = options.proxyOverride || options.proxy;
303
+ if (proxy) {
304
+ const proxyURL = new URL(proxy.server);
305
+ const isSocks = proxyURL.protocol === "socks5:";
306
+ if (isSocks && !options.socksProxyPort) {
307
+ chromeArguments.push(`--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE ${proxyURL.hostname}"`);
308
+ }
309
+ chromeArguments.push(`--proxy-server=${proxy.server}`);
310
+ const proxyBypassRules = [];
311
+ if (options.socksProxyPort)
312
+ proxyBypassRules.push("<-loopback>");
313
+ if (proxy.bypass)
314
+ proxyBypassRules.push(...proxy.bypass.split(",").map((t) => t.trim()).map((t) => t.startsWith(".") ? "*" + t : t));
315
+ if (!process.env.PLAYWRIGHT_DISABLE_FORCED_CHROMIUM_PROXIED_LOOPBACK && !proxyBypassRules.includes("<-loopback>"))
316
+ proxyBypassRules.push("<-loopback>");
317
+ if (proxyBypassRules.length > 0)
318
+ chromeArguments.push(`--proxy-bypass-list=${proxyBypassRules.join(";")}`);
319
+ }
320
+ chromeArguments.push(...args);
321
+ return chromeArguments;
322
+ }
323
+ async waitForReadyState(options, browserLogsCollector) {
324
+ return waitForReadyState(options, browserLogsCollector);
325
+ }
326
+ getExecutableName(options) {
327
+ if (options.channel)
328
+ return options.channel;
329
+ return options.headless ? "chromium-headless-shell" : "chromium";
330
+ }
331
+ }
332
+ async function waitForReadyState(options, browserLogsCollector) {
333
+ if (options.cdpPort === void 0 && !options.args?.some((a) => a.startsWith("--remote-debugging-port")))
334
+ return {};
335
+ const result = new import_manualPromise.ManualPromise();
336
+ browserLogsCollector.onMessage((message) => {
337
+ if (message.includes("Failed to create a ProcessSingleton for your profile directory.")) {
338
+ result.reject(new Error("Failed to create a ProcessSingleton for your profile directory. This usually means that the profile is already in use by another instance of Chromium."));
339
+ }
340
+ const match = message.match(/DevTools listening on (.*)/);
341
+ if (match)
342
+ result.resolve({ wsEndpoint: match[1] });
343
+ });
344
+ return result;
345
+ }
346
+ async function urlToWSEndpoint(progress, endpointURL, headers) {
347
+ if (endpointURL.startsWith("ws"))
348
+ return endpointURL;
349
+ progress.log(`<ws preparing> retrieving websocket url from ${endpointURL}`);
350
+ const url = new URL(endpointURL);
351
+ if (!url.pathname.endsWith("/"))
352
+ url.pathname += "/";
353
+ url.pathname += "json/version/";
354
+ const httpURL = url.toString();
355
+ const json = await (0, import_network.fetchData)(
356
+ progress,
357
+ {
358
+ url: httpURL,
359
+ headers
360
+ },
361
+ async (_, resp) => new Error(`Unexpected status ${resp.statusCode} when connecting to ${httpURL}.
362
+ This does not look like a DevTools server, try connecting via ws://.`)
363
+ );
364
+ return JSON.parse(json).webSocketDebuggerUrl;
365
+ }
366
+ async function seleniumErrorHandler(params, response) {
367
+ const body = await streamToString(response);
368
+ let message = body;
369
+ try {
370
+ const json = JSON.parse(body);
371
+ message = json.value.localizedMessage || json.value.message;
372
+ } catch (e) {
373
+ }
374
+ return new Error(`Error connecting to Selenium at ${params.url}: ${message}`);
375
+ }
376
+ function addProtocol(url) {
377
+ if (!["ws://", "wss://", "http://", "https://"].some((protocol) => url.startsWith(protocol)))
378
+ return "http://" + url;
379
+ return url;
380
+ }
381
+ function streamToString(stream) {
382
+ return new Promise((resolve, reject) => {
383
+ const chunks = [];
384
+ stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
385
+ stream.on("error", reject);
386
+ stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
387
+ });
388
+ }
389
+ function parseSeleniumRemoteParams(env, progress) {
390
+ try {
391
+ const parsed = JSON.parse(env.value);
392
+ progress.log(`<selenium> using additional ${env.name} "${env.value}"`);
393
+ return parsed;
394
+ } catch (e) {
395
+ progress.log(`<selenium> ignoring additional ${env.name} "${env.value}": ${e}`);
396
+ }
397
+ }
398
+ // Annotate the CommonJS export names for ESM import in node:
399
+ 0 && (module.exports = {
400
+ Chromium,
401
+ waitForReadyState
402
+ });
@@ -0,0 +1,95 @@
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 chromiumSwitches_exports = {};
20
+ __export(chromiumSwitches_exports, {
21
+ chromiumSwitches: () => chromiumSwitches
22
+ });
23
+ module.exports = __toCommonJS(chromiumSwitches_exports);
24
+ const disabledFeatures = (assistantMode) => [
25
+ // See https://github.com/microsoft/playwright/pull/10380
26
+ "AcceptCHFrame",
27
+ // See https://github.com/microsoft/playwright/issues/14047
28
+ "AvoidUnnecessaryBeforeUnloadCheckSync",
29
+ "DestroyProfileOnBrowserClose",
30
+ // See https://github.com/microsoft/playwright/pull/13854
31
+ "DialMediaRouteProvider",
32
+ "GlobalMediaControls",
33
+ // See https://github.com/microsoft/playwright/pull/27605
34
+ "HttpsUpgrades",
35
+ // Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
36
+ "LensOverlay",
37
+ // See https://github.com/microsoft/playwright/pull/8162
38
+ "MediaRouter",
39
+ // See https://github.com/microsoft/playwright/issues/28023
40
+ "PaintHolding",
41
+ // See https://github.com/microsoft/playwright/issues/32230
42
+ "ThirdPartyStoragePartitioning",
43
+ // See https://github.com/microsoft/playwright/issues/16126
44
+ "Translate",
45
+ // See https://issues.chromium.org/u/1/issues/435410220
46
+ "AutoDeElevate",
47
+ // See https://github.com/microsoft/playwright/issues/37714
48
+ "RenderDocument",
49
+ assistantMode ? "AutomationControlled" : ""
50
+ ].filter(Boolean);
51
+ const chromiumSwitches = (assistantMode, channel) => [
52
+ "--disable-field-trial-config",
53
+ // https://source.chromium.org/chromium/chromium/src/+/main:testing/variations/README.md
54
+ "--disable-background-networking",
55
+ "--disable-background-timer-throttling",
56
+ "--disable-backgrounding-occluded-windows",
57
+ "--disable-back-forward-cache",
58
+ // Avoids surprises like main request not being intercepted during page.goBack().
59
+ "--disable-breakpad",
60
+ "--disable-client-side-phishing-detection",
61
+ "--disable-component-extensions-with-background-pages",
62
+ "--disable-component-update",
63
+ // Avoids unneeded network activity after startup.
64
+ "--no-default-browser-check",
65
+ "--disable-default-apps",
66
+ "--disable-dev-shm-usage",
67
+ "--disable-extensions",
68
+ "--disable-features=" + disabledFeatures(assistantMode).join(","),
69
+ process.env.PLAYWRIGHT_LEGACY_SCREENSHOT ? "" : "--enable-features=CDPScreenshotNewSurface",
70
+ "--allow-pre-commit-input",
71
+ "--disable-hang-monitor",
72
+ "--disable-ipc-flooding-protection",
73
+ "--disable-popup-blocking",
74
+ "--disable-prompt-on-repost",
75
+ "--disable-renderer-backgrounding",
76
+ "--force-color-profile=srgb",
77
+ "--metrics-recording-only",
78
+ "--no-first-run",
79
+ "--password-store=basic",
80
+ "--use-mock-keychain",
81
+ // See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
82
+ "--no-service-autorun",
83
+ "--export-tagged-pdf",
84
+ // https://chromium-review.googlesource.com/c/chromium/src/+/4853540
85
+ "--disable-search-engine-choice-screen",
86
+ // https://issues.chromium.org/41491762
87
+ "--unsafely-disable-devtools-self-xss-warnings",
88
+ // Edge can potentially restart on Windows (msRelaunchNoCompatLayer) which looses its file descriptors (stdout/stderr) and CDP (3/4). Disable until fixed upstream.
89
+ "--edge-skip-compat-layer-relaunch",
90
+ assistantMode ? "" : "--enable-automation"
91
+ ].filter(Boolean);
92
+ // Annotate the CommonJS export names for ESM import in node:
93
+ 0 && (module.exports = {
94
+ chromiumSwitches
95
+ });