@zohodesk/testinglibrary 3.2.11 → 3.2.13

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 (529) hide show
  1. package/build/common/searchFake/steps/searchFake.spec.js +2 -2
  2. package/npm-shrinkwrap.json +265 -253
  3. package/package.json +3 -3
  4. package/playwright-mcp-test/node_modules/.package-lock.json +54 -0
  5. package/playwright-mcp-test/node_modules/@playwright/mcp/LICENSE +202 -0
  6. package/playwright-mcp-test/node_modules/@playwright/mcp/README.md +907 -0
  7. package/playwright-mcp-test/node_modules/@playwright/mcp/cli.js +24 -0
  8. package/playwright-mcp-test/node_modules/@playwright/mcp/config.d.ts +174 -0
  9. package/playwright-mcp-test/node_modules/@playwright/mcp/index.d.ts +23 -0
  10. package/playwright-mcp-test/node_modules/@playwright/mcp/index.js +19 -0
  11. package/playwright-mcp-test/node_modules/@playwright/mcp/package.json +52 -0
  12. package/playwright-mcp-test/node_modules/playwright/LICENSE +202 -0
  13. package/playwright-mcp-test/node_modules/playwright/NOTICE +5 -0
  14. package/playwright-mcp-test/node_modules/playwright/README.md +168 -0
  15. package/playwright-mcp-test/node_modules/playwright/ThirdPartyNotices.txt +6277 -0
  16. package/playwright-mcp-test/node_modules/playwright/cli.js +19 -0
  17. package/playwright-mcp-test/node_modules/playwright/index.d.ts +17 -0
  18. package/playwright-mcp-test/node_modules/playwright/index.js +17 -0
  19. package/playwright-mcp-test/node_modules/playwright/index.mjs +18 -0
  20. package/playwright-mcp-test/node_modules/playwright/jsx-runtime.js +42 -0
  21. package/playwright-mcp-test/node_modules/playwright/jsx-runtime.mjs +21 -0
  22. package/playwright-mcp-test/node_modules/playwright/lib/agents/generateAgents.js +368 -0
  23. package/playwright-mcp-test/node_modules/playwright/lib/agents/generator.agent.md +101 -0
  24. package/playwright-mcp-test/node_modules/playwright/lib/agents/healer.agent.md +77 -0
  25. package/playwright-mcp-test/node_modules/playwright/lib/agents/planner.agent.md +138 -0
  26. package/playwright-mcp-test/node_modules/playwright/lib/agents/test-coverage.prompt.md +31 -0
  27. package/playwright-mcp-test/node_modules/playwright/lib/agents/test-generate.prompt.md +8 -0
  28. package/playwright-mcp-test/node_modules/playwright/lib/agents/test-heal.prompt.md +6 -0
  29. package/playwright-mcp-test/node_modules/playwright/lib/agents/test-plan.prompt.md +9 -0
  30. package/playwright-mcp-test/node_modules/playwright/lib/common/config.js +280 -0
  31. package/playwright-mcp-test/node_modules/playwright/lib/common/configLoader.js +344 -0
  32. package/playwright-mcp-test/node_modules/playwright/lib/common/esmLoaderHost.js +102 -0
  33. package/playwright-mcp-test/node_modules/playwright/lib/common/expectBundle.js +52 -0
  34. package/playwright-mcp-test/node_modules/playwright/lib/common/expectBundleImpl.js +389 -0
  35. package/playwright-mcp-test/node_modules/playwright/lib/common/fixtures.js +302 -0
  36. package/playwright-mcp-test/node_modules/playwright/lib/common/globals.js +58 -0
  37. package/playwright-mcp-test/node_modules/playwright/lib/common/ipc.js +60 -0
  38. package/playwright-mcp-test/node_modules/playwright/lib/common/poolBuilder.js +85 -0
  39. package/playwright-mcp-test/node_modules/playwright/lib/common/process.js +104 -0
  40. package/playwright-mcp-test/node_modules/playwright/lib/common/suiteUtils.js +140 -0
  41. package/playwright-mcp-test/node_modules/playwright/lib/common/test.js +321 -0
  42. package/playwright-mcp-test/node_modules/playwright/lib/common/testLoader.js +101 -0
  43. package/playwright-mcp-test/node_modules/playwright/lib/common/testType.js +298 -0
  44. package/playwright-mcp-test/node_modules/playwright/lib/common/validators.js +68 -0
  45. package/playwright-mcp-test/node_modules/playwright/lib/fsWatcher.js +67 -0
  46. package/playwright-mcp-test/node_modules/playwright/lib/index.js +682 -0
  47. package/playwright-mcp-test/node_modules/playwright/lib/internalsForTest.js +42 -0
  48. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/events.js +77 -0
  49. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/folders.js +30 -0
  50. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/stringInternPool.js +69 -0
  51. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/teleReceiver.js +508 -0
  52. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/teleSuiteUpdater.js +137 -0
  53. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/testServerConnection.js +211 -0
  54. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/testServerInterface.js +16 -0
  55. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/testTree.js +334 -0
  56. package/playwright-mcp-test/node_modules/playwright/lib/isomorphic/types.d.js +16 -0
  57. package/playwright-mcp-test/node_modules/playwright/lib/loader/loaderMain.js +59 -0
  58. package/playwright-mcp-test/node_modules/playwright/lib/matchers/expect.js +325 -0
  59. package/playwright-mcp-test/node_modules/playwright/lib/matchers/matcherHint.js +87 -0
  60. package/playwright-mcp-test/node_modules/playwright/lib/matchers/matchers.js +366 -0
  61. package/playwright-mcp-test/node_modules/playwright/lib/matchers/toBeTruthy.js +73 -0
  62. package/playwright-mcp-test/node_modules/playwright/lib/matchers/toEqual.js +99 -0
  63. package/playwright-mcp-test/node_modules/playwright/lib/matchers/toHaveURL.js +102 -0
  64. package/playwright-mcp-test/node_modules/playwright/lib/matchers/toMatchAriaSnapshot.js +159 -0
  65. package/playwright-mcp-test/node_modules/playwright/lib/matchers/toMatchSnapshot.js +341 -0
  66. package/playwright-mcp-test/node_modules/playwright/lib/matchers/toMatchText.js +99 -0
  67. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/actions.d.js +16 -0
  68. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/browserContextFactory.js +296 -0
  69. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/browserServerBackend.js +76 -0
  70. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/codegen.js +66 -0
  71. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/config.js +385 -0
  72. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/context.js +287 -0
  73. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/response.js +228 -0
  74. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/sessionLog.js +160 -0
  75. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tab.js +280 -0
  76. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/common.js +63 -0
  77. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/console.js +44 -0
  78. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/dialogs.js +60 -0
  79. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/evaluate.js +69 -0
  80. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/files.js +58 -0
  81. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/form.js +73 -0
  82. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/install.js +69 -0
  83. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/keyboard.js +84 -0
  84. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/mouse.js +107 -0
  85. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/navigate.js +62 -0
  86. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/network.js +54 -0
  87. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/pdf.js +59 -0
  88. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/screenshot.js +106 -0
  89. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/snapshot.js +181 -0
  90. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/tabs.js +67 -0
  91. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/tool.js +49 -0
  92. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/tracing.js +74 -0
  93. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/utils.js +89 -0
  94. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/verify.js +153 -0
  95. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools/wait.js +63 -0
  96. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/tools.js +80 -0
  97. package/playwright-mcp-test/node_modules/playwright/lib/mcp/browser/watchdog.js +44 -0
  98. package/playwright-mcp-test/node_modules/playwright/lib/mcp/config.d.js +16 -0
  99. package/playwright-mcp-test/node_modules/playwright/lib/mcp/extension/cdpRelay.js +351 -0
  100. package/playwright-mcp-test/node_modules/playwright/lib/mcp/extension/extensionContextFactory.js +75 -0
  101. package/playwright-mcp-test/node_modules/playwright/lib/mcp/extension/protocol.js +28 -0
  102. package/playwright-mcp-test/node_modules/playwright/lib/mcp/index.js +61 -0
  103. package/playwright-mcp-test/node_modules/playwright/lib/mcp/log.js +35 -0
  104. package/playwright-mcp-test/node_modules/playwright/lib/mcp/program.js +96 -0
  105. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/bundle.js +81 -0
  106. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/exports.js +32 -0
  107. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/http.js +187 -0
  108. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/inProcessTransport.js +71 -0
  109. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/mdb.js +206 -0
  110. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/proxyBackend.js +128 -0
  111. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/server.js +189 -0
  112. package/playwright-mcp-test/node_modules/playwright/lib/mcp/sdk/tool.js +51 -0
  113. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/browserBackend.js +98 -0
  114. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
  115. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/plannerTools.js +46 -0
  116. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/seed.js +82 -0
  117. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/streams.js +39 -0
  118. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/testBackend.js +97 -0
  119. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/testContext.js +176 -0
  120. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
  121. package/playwright-mcp-test/node_modules/playwright/lib/mcp/test/testTools.js +115 -0
  122. package/playwright-mcp-test/node_modules/playwright/lib/mcpBundleImpl.js +41 -0
  123. package/playwright-mcp-test/node_modules/playwright/lib/plugins/gitCommitInfoPlugin.js +198 -0
  124. package/playwright-mcp-test/node_modules/playwright/lib/plugins/index.js +28 -0
  125. package/playwright-mcp-test/node_modules/playwright/lib/plugins/webServerPlugin.js +209 -0
  126. package/playwright-mcp-test/node_modules/playwright/lib/program.js +411 -0
  127. package/playwright-mcp-test/node_modules/playwright/lib/reporters/base.js +609 -0
  128. package/playwright-mcp-test/node_modules/playwright/lib/reporters/blob.js +135 -0
  129. package/playwright-mcp-test/node_modules/playwright/lib/reporters/dot.js +82 -0
  130. package/playwright-mcp-test/node_modules/playwright/lib/reporters/empty.js +32 -0
  131. package/playwright-mcp-test/node_modules/playwright/lib/reporters/github.js +128 -0
  132. package/playwright-mcp-test/node_modules/playwright/lib/reporters/html.js +623 -0
  133. package/playwright-mcp-test/node_modules/playwright/lib/reporters/internalReporter.js +130 -0
  134. package/playwright-mcp-test/node_modules/playwright/lib/reporters/json.js +254 -0
  135. package/playwright-mcp-test/node_modules/playwright/lib/reporters/junit.js +232 -0
  136. package/playwright-mcp-test/node_modules/playwright/lib/reporters/line.js +113 -0
  137. package/playwright-mcp-test/node_modules/playwright/lib/reporters/list.js +235 -0
  138. package/playwright-mcp-test/node_modules/playwright/lib/reporters/listModeReporter.js +69 -0
  139. package/playwright-mcp-test/node_modules/playwright/lib/reporters/markdown.js +144 -0
  140. package/playwright-mcp-test/node_modules/playwright/lib/reporters/merge.js +541 -0
  141. package/playwright-mcp-test/node_modules/playwright/lib/reporters/multiplexer.js +104 -0
  142. package/playwright-mcp-test/node_modules/playwright/lib/reporters/reporterV2.js +102 -0
  143. package/playwright-mcp-test/node_modules/playwright/lib/reporters/teleEmitter.js +298 -0
  144. package/playwright-mcp-test/node_modules/playwright/lib/reporters/versions/blobV1.js +16 -0
  145. package/playwright-mcp-test/node_modules/playwright/lib/runner/dispatcher.js +491 -0
  146. package/playwright-mcp-test/node_modules/playwright/lib/runner/failureTracker.js +72 -0
  147. package/playwright-mcp-test/node_modules/playwright/lib/runner/lastRun.js +77 -0
  148. package/playwright-mcp-test/node_modules/playwright/lib/runner/loadUtils.js +334 -0
  149. package/playwright-mcp-test/node_modules/playwright/lib/runner/loaderHost.js +89 -0
  150. package/playwright-mcp-test/node_modules/playwright/lib/runner/processHost.js +161 -0
  151. package/playwright-mcp-test/node_modules/playwright/lib/runner/projectUtils.js +241 -0
  152. package/playwright-mcp-test/node_modules/playwright/lib/runner/rebase.js +189 -0
  153. package/playwright-mcp-test/node_modules/playwright/lib/runner/reporters.js +139 -0
  154. package/playwright-mcp-test/node_modules/playwright/lib/runner/sigIntWatcher.js +96 -0
  155. package/playwright-mcp-test/node_modules/playwright/lib/runner/taskRunner.js +127 -0
  156. package/playwright-mcp-test/node_modules/playwright/lib/runner/tasks.js +410 -0
  157. package/playwright-mcp-test/node_modules/playwright/lib/runner/testGroups.js +117 -0
  158. package/playwright-mcp-test/node_modules/playwright/lib/runner/testRunner.js +390 -0
  159. package/playwright-mcp-test/node_modules/playwright/lib/runner/testServer.js +264 -0
  160. package/playwright-mcp-test/node_modules/playwright/lib/runner/uiModeReporter.js +30 -0
  161. package/playwright-mcp-test/node_modules/playwright/lib/runner/vcs.js +72 -0
  162. package/playwright-mcp-test/node_modules/playwright/lib/runner/watchMode.js +395 -0
  163. package/playwright-mcp-test/node_modules/playwright/lib/runner/workerHost.js +95 -0
  164. package/playwright-mcp-test/node_modules/playwright/lib/third_party/pirates.js +62 -0
  165. package/playwright-mcp-test/node_modules/playwright/lib/third_party/tsconfig-loader.js +103 -0
  166. package/playwright-mcp-test/node_modules/playwright/lib/transform/babelBundle.js +43 -0
  167. package/playwright-mcp-test/node_modules/playwright/lib/transform/babelBundleImpl.js +461 -0
  168. package/playwright-mcp-test/node_modules/playwright/lib/transform/compilationCache.js +272 -0
  169. package/playwright-mcp-test/node_modules/playwright/lib/transform/esmLoader.js +104 -0
  170. package/playwright-mcp-test/node_modules/playwright/lib/transform/portTransport.js +67 -0
  171. package/playwright-mcp-test/node_modules/playwright/lib/transform/transform.js +293 -0
  172. package/playwright-mcp-test/node_modules/playwright/lib/util.js +403 -0
  173. package/playwright-mcp-test/node_modules/playwright/lib/utilsBundle.js +43 -0
  174. package/playwright-mcp-test/node_modules/playwright/lib/utilsBundleImpl.js +100 -0
  175. package/playwright-mcp-test/node_modules/playwright/lib/worker/fixtureRunner.js +258 -0
  176. package/playwright-mcp-test/node_modules/playwright/lib/worker/testInfo.js +514 -0
  177. package/playwright-mcp-test/node_modules/playwright/lib/worker/testTracing.js +344 -0
  178. package/playwright-mcp-test/node_modules/playwright/lib/worker/timeoutManager.js +174 -0
  179. package/playwright-mcp-test/node_modules/playwright/lib/worker/util.js +31 -0
  180. package/playwright-mcp-test/node_modules/playwright/lib/worker/workerMain.js +520 -0
  181. package/playwright-mcp-test/node_modules/playwright/package.json +72 -0
  182. package/playwright-mcp-test/node_modules/playwright/test.d.ts +18 -0
  183. package/playwright-mcp-test/node_modules/playwright/test.js +24 -0
  184. package/playwright-mcp-test/node_modules/playwright/test.mjs +33 -0
  185. package/playwright-mcp-test/node_modules/playwright/types/test.d.ts +10185 -0
  186. package/playwright-mcp-test/node_modules/playwright/types/testReporter.d.ts +821 -0
  187. package/playwright-mcp-test/node_modules/playwright-core/LICENSE +202 -0
  188. package/playwright-mcp-test/node_modules/playwright-core/NOTICE +5 -0
  189. package/playwright-mcp-test/node_modules/playwright-core/README.md +3 -0
  190. package/playwright-mcp-test/node_modules/playwright-core/ThirdPartyNotices.txt +1161 -0
  191. package/playwright-mcp-test/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  192. package/playwright-mcp-test/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +35 -0
  193. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  194. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  195. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  196. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  197. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  198. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  199. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  200. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  201. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  202. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  203. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  204. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  205. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  206. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  207. package/playwright-mcp-test/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  208. package/playwright-mcp-test/node_modules/playwright-core/browsers.json +80 -0
  209. package/playwright-mcp-test/node_modules/playwright-core/cli.js +18 -0
  210. package/playwright-mcp-test/node_modules/playwright-core/index.d.ts +17 -0
  211. package/playwright-mcp-test/node_modules/playwright-core/index.js +32 -0
  212. package/playwright-mcp-test/node_modules/playwright-core/index.mjs +28 -0
  213. package/playwright-mcp-test/node_modules/playwright-core/lib/androidServerImpl.js +65 -0
  214. package/playwright-mcp-test/node_modules/playwright-core/lib/browserServerImpl.js +120 -0
  215. package/playwright-mcp-test/node_modules/playwright-core/lib/cli/driver.js +97 -0
  216. package/playwright-mcp-test/node_modules/playwright-core/lib/cli/program.js +634 -0
  217. package/playwright-mcp-test/node_modules/playwright-core/lib/cli/programWithTestStub.js +74 -0
  218. package/playwright-mcp-test/node_modules/playwright-core/lib/client/accessibility.js +49 -0
  219. package/playwright-mcp-test/node_modules/playwright-core/lib/client/android.js +361 -0
  220. package/playwright-mcp-test/node_modules/playwright-core/lib/client/api.js +137 -0
  221. package/playwright-mcp-test/node_modules/playwright-core/lib/client/artifact.js +79 -0
  222. package/playwright-mcp-test/node_modules/playwright-core/lib/client/browser.js +163 -0
  223. package/playwright-mcp-test/node_modules/playwright-core/lib/client/browserContext.js +529 -0
  224. package/playwright-mcp-test/node_modules/playwright-core/lib/client/browserType.js +184 -0
  225. package/playwright-mcp-test/node_modules/playwright-core/lib/client/cdpSession.js +51 -0
  226. package/playwright-mcp-test/node_modules/playwright-core/lib/client/channelOwner.js +194 -0
  227. package/playwright-mcp-test/node_modules/playwright-core/lib/client/clientHelper.js +64 -0
  228. package/playwright-mcp-test/node_modules/playwright-core/lib/client/clientInstrumentation.js +55 -0
  229. package/playwright-mcp-test/node_modules/playwright-core/lib/client/clientStackTrace.js +69 -0
  230. package/playwright-mcp-test/node_modules/playwright-core/lib/client/clock.js +68 -0
  231. package/playwright-mcp-test/node_modules/playwright-core/lib/client/connection.js +314 -0
  232. package/playwright-mcp-test/node_modules/playwright-core/lib/client/consoleMessage.js +54 -0
  233. package/playwright-mcp-test/node_modules/playwright-core/lib/client/coverage.js +44 -0
  234. package/playwright-mcp-test/node_modules/playwright-core/lib/client/dialog.js +56 -0
  235. package/playwright-mcp-test/node_modules/playwright-core/lib/client/download.js +62 -0
  236. package/playwright-mcp-test/node_modules/playwright-core/lib/client/electron.js +138 -0
  237. package/playwright-mcp-test/node_modules/playwright-core/lib/client/elementHandle.js +281 -0
  238. package/playwright-mcp-test/node_modules/playwright-core/lib/client/errors.js +77 -0
  239. package/playwright-mcp-test/node_modules/playwright-core/lib/client/eventEmitter.js +314 -0
  240. package/playwright-mcp-test/node_modules/playwright-core/lib/client/events.js +99 -0
  241. package/playwright-mcp-test/node_modules/playwright-core/lib/client/fetch.js +369 -0
  242. package/playwright-mcp-test/node_modules/playwright-core/lib/client/fileChooser.js +46 -0
  243. package/playwright-mcp-test/node_modules/playwright-core/lib/client/fileUtils.js +34 -0
  244. package/playwright-mcp-test/node_modules/playwright-core/lib/client/frame.js +408 -0
  245. package/playwright-mcp-test/node_modules/playwright-core/lib/client/harRouter.js +87 -0
  246. package/playwright-mcp-test/node_modules/playwright-core/lib/client/input.js +84 -0
  247. package/playwright-mcp-test/node_modules/playwright-core/lib/client/jsHandle.js +109 -0
  248. package/playwright-mcp-test/node_modules/playwright-core/lib/client/jsonPipe.js +39 -0
  249. package/playwright-mcp-test/node_modules/playwright-core/lib/client/localUtils.js +60 -0
  250. package/playwright-mcp-test/node_modules/playwright-core/lib/client/locator.js +369 -0
  251. package/playwright-mcp-test/node_modules/playwright-core/lib/client/network.js +747 -0
  252. package/playwright-mcp-test/node_modules/playwright-core/lib/client/page.js +721 -0
  253. package/playwright-mcp-test/node_modules/playwright-core/lib/client/platform.js +74 -0
  254. package/playwright-mcp-test/node_modules/playwright-core/lib/client/playwright.js +71 -0
  255. package/playwright-mcp-test/node_modules/playwright-core/lib/client/selectors.js +55 -0
  256. package/playwright-mcp-test/node_modules/playwright-core/lib/client/stream.js +39 -0
  257. package/playwright-mcp-test/node_modules/playwright-core/lib/client/timeoutSettings.js +79 -0
  258. package/playwright-mcp-test/node_modules/playwright-core/lib/client/tracing.js +117 -0
  259. package/playwright-mcp-test/node_modules/playwright-core/lib/client/types.js +28 -0
  260. package/playwright-mcp-test/node_modules/playwright-core/lib/client/video.js +59 -0
  261. package/playwright-mcp-test/node_modules/playwright-core/lib/client/waiter.js +142 -0
  262. package/playwright-mcp-test/node_modules/playwright-core/lib/client/webError.js +39 -0
  263. package/playwright-mcp-test/node_modules/playwright-core/lib/client/webSocket.js +93 -0
  264. package/playwright-mcp-test/node_modules/playwright-core/lib/client/worker.js +63 -0
  265. package/playwright-mcp-test/node_modules/playwright-core/lib/client/writableStream.js +39 -0
  266. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/bindingsControllerSource.js +28 -0
  267. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/clockSource.js +28 -0
  268. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/injectedScriptSource.js +28 -0
  269. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/pollingRecorderSource.js +28 -0
  270. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/storageScriptSource.js +28 -0
  271. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/utilityScriptSource.js +28 -0
  272. package/playwright-mcp-test/node_modules/playwright-core/lib/generated/webSocketMockSource.js +336 -0
  273. package/playwright-mcp-test/node_modules/playwright-core/lib/inProcessFactory.js +60 -0
  274. package/playwright-mcp-test/node_modules/playwright-core/lib/inprocess.js +3 -0
  275. package/playwright-mcp-test/node_modules/playwright-core/lib/outofprocess.js +76 -0
  276. package/playwright-mcp-test/node_modules/playwright-core/lib/protocol/serializers.js +192 -0
  277. package/playwright-mcp-test/node_modules/playwright-core/lib/protocol/validator.js +2912 -0
  278. package/playwright-mcp-test/node_modules/playwright-core/lib/protocol/validatorPrimitives.js +193 -0
  279. package/playwright-mcp-test/node_modules/playwright-core/lib/remote/playwrightConnection.js +129 -0
  280. package/playwright-mcp-test/node_modules/playwright-core/lib/remote/playwrightServer.js +335 -0
  281. package/playwright-mcp-test/node_modules/playwright-core/lib/server/accessibility.js +69 -0
  282. package/playwright-mcp-test/node_modules/playwright-core/lib/server/android/android.js +465 -0
  283. package/playwright-mcp-test/node_modules/playwright-core/lib/server/android/backendAdb.js +177 -0
  284. package/playwright-mcp-test/node_modules/playwright-core/lib/server/artifact.js +127 -0
  285. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiBrowser.js +490 -0
  286. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiChromium.js +153 -0
  287. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiConnection.js +212 -0
  288. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js +221 -0
  289. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiFirefox.js +130 -0
  290. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiInput.js +146 -0
  291. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js +383 -0
  292. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiOverCdp.js +102 -0
  293. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiPage.js +554 -0
  294. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/bidiPdf.js +106 -0
  295. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  296. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
  297. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  298. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  299. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  300. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  301. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  302. package/playwright-mcp-test/node_modules/playwright-core/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  303. package/playwright-mcp-test/node_modules/playwright-core/lib/server/browser.js +149 -0
  304. package/playwright-mcp-test/node_modules/playwright-core/lib/server/browserContext.js +695 -0
  305. package/playwright-mcp-test/node_modules/playwright-core/lib/server/browserType.js +328 -0
  306. package/playwright-mcp-test/node_modules/playwright-core/lib/server/callLog.js +82 -0
  307. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  308. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/chromium.js +402 -0
  309. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js +95 -0
  310. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crAccessibility.js +263 -0
  311. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crBrowser.js +502 -0
  312. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crConnection.js +202 -0
  313. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crCoverage.js +235 -0
  314. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crDevTools.js +113 -0
  315. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crDragDrop.js +131 -0
  316. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crExecutionContext.js +146 -0
  317. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crInput.js +187 -0
  318. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crNetworkManager.js +666 -0
  319. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crPage.js +1069 -0
  320. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crPdf.js +121 -0
  321. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js +145 -0
  322. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/crServiceWorker.js +123 -0
  323. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js +162 -0
  324. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/protocol.d.js +16 -0
  325. package/playwright-mcp-test/node_modules/playwright-core/lib/server/chromium/videoRecorder.js +113 -0
  326. package/playwright-mcp-test/node_modules/playwright-core/lib/server/clock.js +149 -0
  327. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/csharp.js +327 -0
  328. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/java.js +274 -0
  329. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/javascript.js +270 -0
  330. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/jsonl.js +52 -0
  331. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/language.js +132 -0
  332. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/languages.js +68 -0
  333. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/python.js +279 -0
  334. package/playwright-mcp-test/node_modules/playwright-core/lib/server/codegen/types.js +16 -0
  335. package/playwright-mcp-test/node_modules/playwright-core/lib/server/console.js +53 -0
  336. package/playwright-mcp-test/node_modules/playwright-core/lib/server/cookieStore.js +206 -0
  337. package/playwright-mcp-test/node_modules/playwright-core/lib/server/debugController.js +191 -0
  338. package/playwright-mcp-test/node_modules/playwright-core/lib/server/debugger.js +119 -0
  339. package/playwright-mcp-test/node_modules/playwright-core/lib/server/deviceDescriptors.js +39 -0
  340. package/playwright-mcp-test/node_modules/playwright-core/lib/server/deviceDescriptorsSource.json +1779 -0
  341. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dialog.js +116 -0
  342. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js +325 -0
  343. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js +118 -0
  344. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js +364 -0
  345. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js +118 -0
  346. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  347. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  348. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  349. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js +47 -0
  350. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/dispatcher.js +371 -0
  351. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js +89 -0
  352. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  353. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js +227 -0
  354. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  355. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  356. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  357. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js +213 -0
  358. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js +401 -0
  359. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  360. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js +67 -0
  361. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js +68 -0
  362. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  363. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  364. package/playwright-mcp-test/node_modules/playwright-core/lib/server/dom.js +806 -0
  365. package/playwright-mcp-test/node_modules/playwright-core/lib/server/download.js +70 -0
  366. package/playwright-mcp-test/node_modules/playwright-core/lib/server/electron/electron.js +270 -0
  367. package/playwright-mcp-test/node_modules/playwright-core/lib/server/electron/loader.js +29 -0
  368. package/playwright-mcp-test/node_modules/playwright-core/lib/server/errors.js +69 -0
  369. package/playwright-mcp-test/node_modules/playwright-core/lib/server/fetch.js +621 -0
  370. package/playwright-mcp-test/node_modules/playwright-core/lib/server/fileChooser.js +43 -0
  371. package/playwright-mcp-test/node_modules/playwright-core/lib/server/fileUploadUtils.js +84 -0
  372. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffAccessibility.js +238 -0
  373. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffBrowser.js +428 -0
  374. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffConnection.js +147 -0
  375. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js +150 -0
  376. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffInput.js +159 -0
  377. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js +256 -0
  378. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/ffPage.js +503 -0
  379. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/firefox.js +116 -0
  380. package/playwright-mcp-test/node_modules/playwright-core/lib/server/firefox/protocol.d.js +16 -0
  381. package/playwright-mcp-test/node_modules/playwright-core/lib/server/formData.js +147 -0
  382. package/playwright-mcp-test/node_modules/playwright-core/lib/server/frameSelectors.js +154 -0
  383. package/playwright-mcp-test/node_modules/playwright-core/lib/server/frames.js +1455 -0
  384. package/playwright-mcp-test/node_modules/playwright-core/lib/server/har/harRecorder.js +147 -0
  385. package/playwright-mcp-test/node_modules/playwright-core/lib/server/har/harTracer.js +607 -0
  386. package/playwright-mcp-test/node_modules/playwright-core/lib/server/harBackend.js +157 -0
  387. package/playwright-mcp-test/node_modules/playwright-core/lib/server/helper.js +96 -0
  388. package/playwright-mcp-test/node_modules/playwright-core/lib/server/index.js +58 -0
  389. package/playwright-mcp-test/node_modules/playwright-core/lib/server/input.js +273 -0
  390. package/playwright-mcp-test/node_modules/playwright-core/lib/server/instrumentation.js +69 -0
  391. package/playwright-mcp-test/node_modules/playwright-core/lib/server/javascript.js +291 -0
  392. package/playwright-mcp-test/node_modules/playwright-core/lib/server/launchApp.js +128 -0
  393. package/playwright-mcp-test/node_modules/playwright-core/lib/server/localUtils.js +214 -0
  394. package/playwright-mcp-test/node_modules/playwright-core/lib/server/macEditingCommands.js +143 -0
  395. package/playwright-mcp-test/node_modules/playwright-core/lib/server/network.js +629 -0
  396. package/playwright-mcp-test/node_modules/playwright-core/lib/server/page.js +867 -0
  397. package/playwright-mcp-test/node_modules/playwright-core/lib/server/pipeTransport.js +89 -0
  398. package/playwright-mcp-test/node_modules/playwright-core/lib/server/playwright.js +69 -0
  399. package/playwright-mcp-test/node_modules/playwright-core/lib/server/progress.js +112 -0
  400. package/playwright-mcp-test/node_modules/playwright-core/lib/server/protocolError.js +52 -0
  401. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder/chat.js +161 -0
  402. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder/recorderApp.js +387 -0
  403. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +138 -0
  404. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder/recorderSignalProcessor.js +83 -0
  405. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder/recorderUtils.js +157 -0
  406. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder/throttledFile.js +57 -0
  407. package/playwright-mcp-test/node_modules/playwright-core/lib/server/recorder.js +499 -0
  408. package/playwright-mcp-test/node_modules/playwright-core/lib/server/registry/browserFetcher.js +175 -0
  409. package/playwright-mcp-test/node_modules/playwright-core/lib/server/registry/dependencies.js +371 -0
  410. package/playwright-mcp-test/node_modules/playwright-core/lib/server/registry/index.js +1361 -0
  411. package/playwright-mcp-test/node_modules/playwright-core/lib/server/registry/nativeDeps.js +1280 -0
  412. package/playwright-mcp-test/node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js +124 -0
  413. package/playwright-mcp-test/node_modules/playwright-core/lib/server/screenshotter.js +333 -0
  414. package/playwright-mcp-test/node_modules/playwright-core/lib/server/selectors.js +112 -0
  415. package/playwright-mcp-test/node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js +383 -0
  416. package/playwright-mcp-test/node_modules/playwright-core/lib/server/socksInterceptor.js +95 -0
  417. package/playwright-mcp-test/node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js +147 -0
  418. package/playwright-mcp-test/node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js +541 -0
  419. package/playwright-mcp-test/node_modules/playwright-core/lib/server/trace/recorder/tracing.js +602 -0
  420. package/playwright-mcp-test/node_modules/playwright-core/lib/server/trace/test/inMemorySnapshotter.js +87 -0
  421. package/playwright-mcp-test/node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js +230 -0
  422. package/playwright-mcp-test/node_modules/playwright-core/lib/server/transport.js +181 -0
  423. package/playwright-mcp-test/node_modules/playwright-core/lib/server/types.js +28 -0
  424. package/playwright-mcp-test/node_modules/playwright-core/lib/server/usKeyboardLayout.js +145 -0
  425. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/ascii.js +44 -0
  426. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/comparators.js +139 -0
  427. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/crypto.js +216 -0
  428. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/debug.js +42 -0
  429. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/debugLogger.js +122 -0
  430. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/env.js +73 -0
  431. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/eventsHelper.js +39 -0
  432. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/expectUtils.js +38 -0
  433. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/fileUtils.js +191 -0
  434. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/happyEyeballs.js +207 -0
  435. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/hostPlatform.js +123 -0
  436. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/httpServer.js +218 -0
  437. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/imageUtils.js +146 -0
  438. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/image_tools/colorUtils.js +89 -0
  439. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/image_tools/compare.js +109 -0
  440. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/image_tools/imageChannel.js +78 -0
  441. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/image_tools/stats.js +102 -0
  442. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/linuxUtils.js +71 -0
  443. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/network.js +233 -0
  444. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/nodePlatform.js +148 -0
  445. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/pipeTransport.js +84 -0
  446. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/processLauncher.js +241 -0
  447. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/profiler.js +65 -0
  448. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/socksProxy.js +511 -0
  449. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/spawnAsync.js +41 -0
  450. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/task.js +51 -0
  451. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/userAgent.js +98 -0
  452. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/wsServer.js +121 -0
  453. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/zipFile.js +74 -0
  454. package/playwright-mcp-test/node_modules/playwright-core/lib/server/utils/zones.js +57 -0
  455. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/protocol.d.js +16 -0
  456. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/webkit.js +119 -0
  457. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkAccessibility.js +237 -0
  458. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkBrowser.js +339 -0
  459. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkConnection.js +149 -0
  460. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js +154 -0
  461. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkInput.js +181 -0
  462. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js +169 -0
  463. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkPage.js +1134 -0
  464. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js +83 -0
  465. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wkWorkers.js +104 -0
  466. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
  467. package/playwright-mcp-test/node_modules/playwright-core/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
  468. package/playwright-mcp-test/node_modules/playwright-core/lib/third_party/pixelmatch.js +255 -0
  469. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  470. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/assert.js +31 -0
  471. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/colors.js +72 -0
  472. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/cssParser.js +245 -0
  473. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  474. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/headers.js +53 -0
  475. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js +689 -0
  476. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js +176 -0
  477. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js +81 -0
  478. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/manualPromise.js +114 -0
  479. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/mimeType.js +459 -0
  480. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/multimap.js +80 -0
  481. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/protocolFormatter.js +81 -0
  482. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  483. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/rtti.js +43 -0
  484. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js +386 -0
  485. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/semaphore.js +54 -0
  486. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/stackTrace.js +158 -0
  487. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js +155 -0
  488. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/time.js +49 -0
  489. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/timeoutRunner.js +66 -0
  490. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/traceUtils.js +58 -0
  491. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/types.js +16 -0
  492. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js +179 -0
  493. package/playwright-mcp-test/node_modules/playwright-core/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  494. package/playwright-mcp-test/node_modules/playwright-core/lib/utils.js +109 -0
  495. package/playwright-mcp-test/node_modules/playwright-core/lib/utilsBundle.js +112 -0
  496. package/playwright-mcp-test/node_modules/playwright-core/lib/utilsBundleImpl/index.js +218 -0
  497. package/playwright-mcp-test/node_modules/playwright-core/lib/utilsBundleImpl/xdg-open +1066 -0
  498. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/htmlReport/index.html +84 -0
  499. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
  500. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DX585GyR.js +25 -0
  501. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  502. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/assets/index-DjadjNw5.js +193 -0
  503. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
  504. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  505. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  506. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-Cw-6jrKz.js +25 -0
  507. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-BZIhX7gh.js +266 -0
  508. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  509. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
  510. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  511. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.BEjzWGz-.css +1 -0
  512. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/index.Dk_obRs3.js +2 -0
  513. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
  514. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/index.html +43 -0
  515. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  516. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  517. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +21 -0
  518. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -0
  519. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Bai-qGIw.js +5 -0
  520. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  521. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +17 -0
  522. package/playwright-mcp-test/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  523. package/playwright-mcp-test/node_modules/playwright-core/lib/zipBundle.js +34 -0
  524. package/playwright-mcp-test/node_modules/playwright-core/lib/zipBundleImpl.js +5 -0
  525. package/playwright-mcp-test/node_modules/playwright-core/package.json +42 -0
  526. package/playwright-mcp-test/node_modules/playwright-core/types/protocol.d.ts +23130 -0
  527. package/playwright-mcp-test/node_modules/playwright-core/types/structs.d.ts +45 -0
  528. package/playwright-mcp-test/node_modules/playwright-core/types/types.d.ts +22872 -0
  529. package/playwright-mcp-test/package-lock.json +76 -0
@@ -0,0 +1,1361 @@
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 registry_exports = {};
30
+ __export(registry_exports, {
31
+ Registry: () => Registry,
32
+ browserDirectoryToMarkerFilePath: () => browserDirectoryToMarkerFilePath,
33
+ buildPlaywrightCLICommand: () => buildPlaywrightCLICommand,
34
+ findChromiumChannelBestEffort: () => findChromiumChannelBestEffort,
35
+ installBrowsersForNpmInstall: () => installBrowsersForNpmInstall,
36
+ registry: () => registry,
37
+ registryDirectory: () => registryDirectory,
38
+ writeDockerVersion: () => import_dependencies3.writeDockerVersion
39
+ });
40
+ module.exports = __toCommonJS(registry_exports);
41
+ var import_fs = __toESM(require("fs"));
42
+ var import_os = __toESM(require("os"));
43
+ var import_path = __toESM(require("path"));
44
+ var util = __toESM(require("util"));
45
+ var import_browserFetcher = require("./browserFetcher");
46
+ var import_dependencies = require("./dependencies");
47
+ var import_dependencies2 = require("./dependencies");
48
+ var import_utils = require("../../utils");
49
+ var import_ascii = require("../utils/ascii");
50
+ var import_debugLogger = require("../utils/debugLogger");
51
+ var import_hostPlatform = require("../utils/hostPlatform");
52
+ var import_network = require("../utils/network");
53
+ var import_spawnAsync = require("../utils/spawnAsync");
54
+ var import_userAgent = require("../utils/userAgent");
55
+ var import_utilsBundle = require("../../utilsBundle");
56
+ var import_fileUtils = require("../utils/fileUtils");
57
+ var import_dependencies3 = require("./dependencies");
58
+ const PACKAGE_PATH = import_path.default.join(__dirname, "..", "..", "..");
59
+ const BIN_PATH = import_path.default.join(__dirname, "..", "..", "..", "bin");
60
+ const PLAYWRIGHT_CDN_MIRRORS = [
61
+ "https://cdn.playwright.dev/dbazure/download/playwright",
62
+ // ESRP CDN
63
+ "https://playwright.download.prss.microsoft.com/dbazure/download/playwright",
64
+ // Directly hit ESRP CDN
65
+ "https://cdn.playwright.dev"
66
+ // Hit the Storage Bucket directly
67
+ ];
68
+ if (process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
69
+ for (let i = 0; i < PLAYWRIGHT_CDN_MIRRORS.length; i++) {
70
+ const cdn = PLAYWRIGHT_CDN_MIRRORS[i];
71
+ if (cdn !== process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
72
+ const parsedCDN = new URL(cdn);
73
+ parsedCDN.hostname = parsedCDN.hostname + ".does-not-resolve.playwright.dev";
74
+ PLAYWRIGHT_CDN_MIRRORS[i] = parsedCDN.toString();
75
+ }
76
+ }
77
+ }
78
+ const EXECUTABLE_PATHS = {
79
+ "chromium": {
80
+ "<unknown>": void 0,
81
+ "linux-x64": ["chrome-linux", "chrome"],
82
+ "linux-arm64": ["chrome-linux", "chrome"],
83
+ "mac-x64": ["chrome-mac", "Chromium.app", "Contents", "MacOS", "Chromium"],
84
+ "mac-arm64": ["chrome-mac", "Chromium.app", "Contents", "MacOS", "Chromium"],
85
+ "win-x64": ["chrome-win", "chrome.exe"]
86
+ },
87
+ "chromium-headless-shell": {
88
+ "<unknown>": void 0,
89
+ "linux-x64": ["chrome-linux", "headless_shell"],
90
+ "linux-arm64": ["chrome-linux", "headless_shell"],
91
+ "mac-x64": ["chrome-mac", "headless_shell"],
92
+ "mac-arm64": ["chrome-mac", "headless_shell"],
93
+ "win-x64": ["chrome-win", "headless_shell.exe"]
94
+ },
95
+ "chromium-tip-of-tree": {
96
+ "<unknown>": void 0,
97
+ "linux-x64": ["chrome-linux64", "chrome"],
98
+ "linux-arm64": ["chrome-linux", "chrome"],
99
+ // non-cft build
100
+ "mac-x64": ["chrome-mac-x64", "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing"],
101
+ "mac-arm64": ["chrome-mac-arm64", "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing"],
102
+ "win-x64": ["chrome-win64", "chrome.exe"]
103
+ },
104
+ "chromium-tip-of-tree-headless-shell": {
105
+ "<unknown>": void 0,
106
+ "linux-x64": ["chrome-headless-shell-linux64", "chrome-headless-shell"],
107
+ "linux-arm64": ["chrome-linux", "chrome"],
108
+ // non-cft build
109
+ "mac-x64": ["chrome-headless-shell-mac-x64", "chrome-headless-shell"],
110
+ "mac-arm64": ["chrome-headless-shell-mac-arm64", "chrome-headless-shell"],
111
+ "win-x64": ["chrome-headless-shell-win64", "chrome-headless-shell.exe"]
112
+ },
113
+ "firefox": {
114
+ "<unknown>": void 0,
115
+ "linux-x64": ["firefox", "firefox"],
116
+ "linux-arm64": ["firefox", "firefox"],
117
+ "mac-x64": ["firefox", "Nightly.app", "Contents", "MacOS", "firefox"],
118
+ "mac-arm64": ["firefox", "Nightly.app", "Contents", "MacOS", "firefox"],
119
+ "win-x64": ["firefox", "firefox.exe"]
120
+ },
121
+ "webkit": {
122
+ "<unknown>": void 0,
123
+ "linux-x64": ["pw_run.sh"],
124
+ "linux-arm64": ["pw_run.sh"],
125
+ "mac-x64": ["pw_run.sh"],
126
+ "mac-arm64": ["pw_run.sh"],
127
+ "win-x64": ["Playwright.exe"]
128
+ },
129
+ "ffmpeg": {
130
+ "<unknown>": void 0,
131
+ "linux-x64": ["ffmpeg-linux"],
132
+ "linux-arm64": ["ffmpeg-linux"],
133
+ "mac-x64": ["ffmpeg-mac"],
134
+ "mac-arm64": ["ffmpeg-mac"],
135
+ "win-x64": ["ffmpeg-win64.exe"]
136
+ },
137
+ "winldd": {
138
+ "<unknown>": void 0,
139
+ "linux-x64": void 0,
140
+ "linux-arm64": void 0,
141
+ "mac-x64": void 0,
142
+ "mac-arm64": void 0,
143
+ "win-x64": ["PrintDeps.exe"]
144
+ }
145
+ };
146
+ const DOWNLOAD_PATHS = {
147
+ "chromium": {
148
+ "<unknown>": void 0,
149
+ "ubuntu18.04-x64": void 0,
150
+ "ubuntu20.04-x64": "builds/chromium/%s/chromium-linux.zip",
151
+ "ubuntu22.04-x64": "builds/chromium/%s/chromium-linux.zip",
152
+ "ubuntu24.04-x64": "builds/chromium/%s/chromium-linux.zip",
153
+ "ubuntu18.04-arm64": void 0,
154
+ "ubuntu20.04-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
155
+ "ubuntu22.04-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
156
+ "ubuntu24.04-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
157
+ "debian11-x64": "builds/chromium/%s/chromium-linux.zip",
158
+ "debian11-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
159
+ "debian12-x64": "builds/chromium/%s/chromium-linux.zip",
160
+ "debian12-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
161
+ "debian13-x64": "builds/chromium/%s/chromium-linux.zip",
162
+ "debian13-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
163
+ "mac10.13": "builds/chromium/%s/chromium-mac.zip",
164
+ "mac10.14": "builds/chromium/%s/chromium-mac.zip",
165
+ "mac10.15": "builds/chromium/%s/chromium-mac.zip",
166
+ "mac11": "builds/chromium/%s/chromium-mac.zip",
167
+ "mac11-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
168
+ "mac12": "builds/chromium/%s/chromium-mac.zip",
169
+ "mac12-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
170
+ "mac13": "builds/chromium/%s/chromium-mac.zip",
171
+ "mac13-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
172
+ "mac14": "builds/chromium/%s/chromium-mac.zip",
173
+ "mac14-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
174
+ "mac15": "builds/chromium/%s/chromium-mac.zip",
175
+ "mac15-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
176
+ "win64": "builds/chromium/%s/chromium-win64.zip"
177
+ },
178
+ "chromium-headless-shell": {
179
+ "<unknown>": void 0,
180
+ "ubuntu18.04-x64": void 0,
181
+ "ubuntu20.04-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
182
+ "ubuntu22.04-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
183
+ "ubuntu24.04-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
184
+ "ubuntu18.04-arm64": void 0,
185
+ "ubuntu20.04-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
186
+ "ubuntu22.04-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
187
+ "ubuntu24.04-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
188
+ "debian11-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
189
+ "debian11-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
190
+ "debian12-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
191
+ "debian12-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
192
+ "debian13-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
193
+ "debian13-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
194
+ "mac10.13": void 0,
195
+ "mac10.14": void 0,
196
+ "mac10.15": void 0,
197
+ "mac11": "builds/chromium/%s/chromium-headless-shell-mac.zip",
198
+ "mac11-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
199
+ "mac12": "builds/chromium/%s/chromium-headless-shell-mac.zip",
200
+ "mac12-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
201
+ "mac13": "builds/chromium/%s/chromium-headless-shell-mac.zip",
202
+ "mac13-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
203
+ "mac14": "builds/chromium/%s/chromium-headless-shell-mac.zip",
204
+ "mac14-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
205
+ "mac15": "builds/chromium/%s/chromium-headless-shell-mac.zip",
206
+ "mac15-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
207
+ "win64": "builds/chromium/%s/chromium-headless-shell-win64.zip"
208
+ },
209
+ "chromium-tip-of-tree": {
210
+ "<unknown>": void 0,
211
+ "ubuntu18.04-x64": void 0,
212
+ "ubuntu20.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
213
+ "ubuntu22.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
214
+ "ubuntu24.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
215
+ "ubuntu18.04-arm64": void 0,
216
+ "ubuntu20.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
217
+ "ubuntu22.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
218
+ "ubuntu24.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
219
+ "debian11-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
220
+ "debian11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
221
+ "debian12-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
222
+ "debian12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
223
+ "debian13-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
224
+ "debian13-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
225
+ "mac10.13": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
226
+ "mac10.14": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
227
+ "mac10.15": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
228
+ "mac11": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
229
+ "mac11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
230
+ "mac12": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
231
+ "mac12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
232
+ "mac13": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
233
+ "mac13-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
234
+ "mac14": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
235
+ "mac14-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
236
+ "mac15": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
237
+ "mac15-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
238
+ "win64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip"
239
+ },
240
+ "chromium-tip-of-tree-headless-shell": {
241
+ "<unknown>": void 0,
242
+ "ubuntu18.04-x64": void 0,
243
+ "ubuntu20.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
244
+ "ubuntu22.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
245
+ "ubuntu24.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
246
+ "ubuntu18.04-arm64": void 0,
247
+ "ubuntu20.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
248
+ "ubuntu22.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
249
+ "ubuntu24.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
250
+ "debian11-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
251
+ "debian11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
252
+ "debian12-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
253
+ "debian12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
254
+ "debian13-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
255
+ "debian13-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
256
+ "mac10.13": void 0,
257
+ "mac10.14": void 0,
258
+ "mac10.15": void 0,
259
+ "mac11": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
260
+ "mac11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
261
+ "mac12": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
262
+ "mac12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
263
+ "mac13": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
264
+ "mac13-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
265
+ "mac14": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
266
+ "mac14-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
267
+ "mac15": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
268
+ "mac15-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
269
+ "win64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-win64.zip"
270
+ },
271
+ "firefox": {
272
+ "<unknown>": void 0,
273
+ "ubuntu18.04-x64": void 0,
274
+ "ubuntu20.04-x64": "builds/firefox/%s/firefox-ubuntu-20.04.zip",
275
+ "ubuntu22.04-x64": "builds/firefox/%s/firefox-ubuntu-22.04.zip",
276
+ "ubuntu24.04-x64": "builds/firefox/%s/firefox-ubuntu-24.04.zip",
277
+ "ubuntu18.04-arm64": void 0,
278
+ "ubuntu20.04-arm64": "builds/firefox/%s/firefox-ubuntu-20.04-arm64.zip",
279
+ "ubuntu22.04-arm64": "builds/firefox/%s/firefox-ubuntu-22.04-arm64.zip",
280
+ "ubuntu24.04-arm64": "builds/firefox/%s/firefox-ubuntu-24.04-arm64.zip",
281
+ "debian11-x64": "builds/firefox/%s/firefox-debian-11.zip",
282
+ "debian11-arm64": "builds/firefox/%s/firefox-debian-11-arm64.zip",
283
+ "debian12-x64": "builds/firefox/%s/firefox-debian-12.zip",
284
+ "debian12-arm64": "builds/firefox/%s/firefox-debian-12-arm64.zip",
285
+ "debian13-x64": "builds/firefox/%s/firefox-debian-13.zip",
286
+ "debian13-arm64": "builds/firefox/%s/firefox-debian-13-arm64.zip",
287
+ "mac10.13": "builds/firefox/%s/firefox-mac.zip",
288
+ "mac10.14": "builds/firefox/%s/firefox-mac.zip",
289
+ "mac10.15": "builds/firefox/%s/firefox-mac.zip",
290
+ "mac11": "builds/firefox/%s/firefox-mac.zip",
291
+ "mac11-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
292
+ "mac12": "builds/firefox/%s/firefox-mac.zip",
293
+ "mac12-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
294
+ "mac13": "builds/firefox/%s/firefox-mac.zip",
295
+ "mac13-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
296
+ "mac14": "builds/firefox/%s/firefox-mac.zip",
297
+ "mac14-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
298
+ "mac15": "builds/firefox/%s/firefox-mac.zip",
299
+ "mac15-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
300
+ "win64": "builds/firefox/%s/firefox-win64.zip"
301
+ },
302
+ "firefox-beta": {
303
+ "<unknown>": void 0,
304
+ "ubuntu18.04-x64": void 0,
305
+ "ubuntu20.04-x64": "builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip",
306
+ "ubuntu22.04-x64": "builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip",
307
+ "ubuntu24.04-x64": "builds/firefox-beta/%s/firefox-beta-ubuntu-24.04.zip",
308
+ "ubuntu18.04-arm64": void 0,
309
+ "ubuntu20.04-arm64": void 0,
310
+ "ubuntu22.04-arm64": "builds/firefox-beta/%s/firefox-beta-ubuntu-22.04-arm64.zip",
311
+ "ubuntu24.04-arm64": "builds/firefox-beta/%s/firefox-beta-ubuntu-24.04-arm64.zip",
312
+ "debian11-x64": "builds/firefox-beta/%s/firefox-beta-debian-11.zip",
313
+ "debian11-arm64": "builds/firefox-beta/%s/firefox-beta-debian-11-arm64.zip",
314
+ "debian12-x64": "builds/firefox-beta/%s/firefox-beta-debian-12.zip",
315
+ "debian12-arm64": "builds/firefox-beta/%s/firefox-beta-debian-12-arm64.zip",
316
+ "debian13-x64": "builds/firefox-beta/%s/firefox-beta-debian-12.zip",
317
+ "debian13-arm64": "builds/firefox-beta/%s/firefox-beta-debian-12-arm64.zip",
318
+ "mac10.13": "builds/firefox-beta/%s/firefox-beta-mac.zip",
319
+ "mac10.14": "builds/firefox-beta/%s/firefox-beta-mac.zip",
320
+ "mac10.15": "builds/firefox-beta/%s/firefox-beta-mac.zip",
321
+ "mac11": "builds/firefox-beta/%s/firefox-beta-mac.zip",
322
+ "mac11-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
323
+ "mac12": "builds/firefox-beta/%s/firefox-beta-mac.zip",
324
+ "mac12-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
325
+ "mac13": "builds/firefox-beta/%s/firefox-beta-mac.zip",
326
+ "mac13-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
327
+ "mac14": "builds/firefox-beta/%s/firefox-beta-mac.zip",
328
+ "mac14-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
329
+ "mac15": "builds/firefox-beta/%s/firefox-beta-mac.zip",
330
+ "mac15-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
331
+ "win64": "builds/firefox-beta/%s/firefox-beta-win64.zip"
332
+ },
333
+ "webkit": {
334
+ "<unknown>": void 0,
335
+ "ubuntu18.04-x64": void 0,
336
+ "ubuntu20.04-x64": "builds/webkit/%s/webkit-ubuntu-20.04.zip",
337
+ "ubuntu22.04-x64": "builds/webkit/%s/webkit-ubuntu-22.04.zip",
338
+ "ubuntu24.04-x64": "builds/webkit/%s/webkit-ubuntu-24.04.zip",
339
+ "ubuntu18.04-arm64": void 0,
340
+ "ubuntu20.04-arm64": "builds/webkit/%s/webkit-ubuntu-20.04-arm64.zip",
341
+ "ubuntu22.04-arm64": "builds/webkit/%s/webkit-ubuntu-22.04-arm64.zip",
342
+ "ubuntu24.04-arm64": "builds/webkit/%s/webkit-ubuntu-24.04-arm64.zip",
343
+ "debian11-x64": "builds/webkit/%s/webkit-debian-11.zip",
344
+ "debian11-arm64": "builds/webkit/%s/webkit-debian-11-arm64.zip",
345
+ "debian12-x64": "builds/webkit/%s/webkit-debian-12.zip",
346
+ "debian12-arm64": "builds/webkit/%s/webkit-debian-12-arm64.zip",
347
+ "debian13-x64": "builds/webkit/%s/webkit-debian-13.zip",
348
+ "debian13-arm64": "builds/webkit/%s/webkit-debian-13-arm64.zip",
349
+ "mac10.13": void 0,
350
+ "mac10.14": "builds/deprecated-webkit-mac-10.14/%s/deprecated-webkit-mac-10.14.zip",
351
+ "mac10.15": "builds/deprecated-webkit-mac-10.15/%s/deprecated-webkit-mac-10.15.zip",
352
+ "mac11": "builds/webkit/%s/webkit-mac-11.zip",
353
+ "mac11-arm64": "builds/webkit/%s/webkit-mac-11-arm64.zip",
354
+ "mac12": "builds/webkit/%s/webkit-mac-12.zip",
355
+ "mac12-arm64": "builds/webkit/%s/webkit-mac-12-arm64.zip",
356
+ "mac13": "builds/webkit/%s/webkit-mac-13.zip",
357
+ "mac13-arm64": "builds/webkit/%s/webkit-mac-13-arm64.zip",
358
+ "mac14": "builds/webkit/%s/webkit-mac-14.zip",
359
+ "mac14-arm64": "builds/webkit/%s/webkit-mac-14-arm64.zip",
360
+ "mac15": "builds/webkit/%s/webkit-mac-15.zip",
361
+ "mac15-arm64": "builds/webkit/%s/webkit-mac-15-arm64.zip",
362
+ "win64": "builds/webkit/%s/webkit-win64.zip"
363
+ },
364
+ "ffmpeg": {
365
+ "<unknown>": void 0,
366
+ "ubuntu18.04-x64": void 0,
367
+ "ubuntu20.04-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
368
+ "ubuntu22.04-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
369
+ "ubuntu24.04-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
370
+ "ubuntu18.04-arm64": void 0,
371
+ "ubuntu20.04-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
372
+ "ubuntu22.04-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
373
+ "ubuntu24.04-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
374
+ "debian11-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
375
+ "debian11-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
376
+ "debian12-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
377
+ "debian12-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
378
+ "debian13-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
379
+ "debian13-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
380
+ "mac10.13": "builds/ffmpeg/%s/ffmpeg-mac.zip",
381
+ "mac10.14": "builds/ffmpeg/%s/ffmpeg-mac.zip",
382
+ "mac10.15": "builds/ffmpeg/%s/ffmpeg-mac.zip",
383
+ "mac11": "builds/ffmpeg/%s/ffmpeg-mac.zip",
384
+ "mac11-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
385
+ "mac12": "builds/ffmpeg/%s/ffmpeg-mac.zip",
386
+ "mac12-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
387
+ "mac13": "builds/ffmpeg/%s/ffmpeg-mac.zip",
388
+ "mac13-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
389
+ "mac14": "builds/ffmpeg/%s/ffmpeg-mac.zip",
390
+ "mac14-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
391
+ "mac15": "builds/ffmpeg/%s/ffmpeg-mac.zip",
392
+ "mac15-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
393
+ "win64": "builds/ffmpeg/%s/ffmpeg-win64.zip"
394
+ },
395
+ "winldd": {
396
+ "<unknown>": void 0,
397
+ "ubuntu18.04-x64": void 0,
398
+ "ubuntu20.04-x64": void 0,
399
+ "ubuntu22.04-x64": void 0,
400
+ "ubuntu24.04-x64": void 0,
401
+ "ubuntu18.04-arm64": void 0,
402
+ "ubuntu20.04-arm64": void 0,
403
+ "ubuntu22.04-arm64": void 0,
404
+ "ubuntu24.04-arm64": void 0,
405
+ "debian11-x64": void 0,
406
+ "debian11-arm64": void 0,
407
+ "debian12-x64": void 0,
408
+ "debian12-arm64": void 0,
409
+ "debian13-x64": void 0,
410
+ "debian13-arm64": void 0,
411
+ "mac10.13": void 0,
412
+ "mac10.14": void 0,
413
+ "mac10.15": void 0,
414
+ "mac11": void 0,
415
+ "mac11-arm64": void 0,
416
+ "mac12": void 0,
417
+ "mac12-arm64": void 0,
418
+ "mac13": void 0,
419
+ "mac13-arm64": void 0,
420
+ "mac14": void 0,
421
+ "mac14-arm64": void 0,
422
+ "mac15": void 0,
423
+ "mac15-arm64": void 0,
424
+ "win64": "builds/winldd/%s/winldd-win64.zip"
425
+ },
426
+ "android": {
427
+ "<unknown>": "builds/android/%s/android.zip",
428
+ "ubuntu18.04-x64": void 0,
429
+ "ubuntu20.04-x64": "builds/android/%s/android.zip",
430
+ "ubuntu22.04-x64": "builds/android/%s/android.zip",
431
+ "ubuntu24.04-x64": "builds/android/%s/android.zip",
432
+ "ubuntu18.04-arm64": void 0,
433
+ "ubuntu20.04-arm64": "builds/android/%s/android.zip",
434
+ "ubuntu22.04-arm64": "builds/android/%s/android.zip",
435
+ "ubuntu24.04-arm64": "builds/android/%s/android.zip",
436
+ "debian11-x64": "builds/android/%s/android.zip",
437
+ "debian11-arm64": "builds/android/%s/android.zip",
438
+ "debian12-x64": "builds/android/%s/android.zip",
439
+ "debian12-arm64": "builds/android/%s/android.zip",
440
+ "debian13-x64": "builds/android/%s/android.zip",
441
+ "debian13-arm64": "builds/android/%s/android.zip",
442
+ "mac10.13": "builds/android/%s/android.zip",
443
+ "mac10.14": "builds/android/%s/android.zip",
444
+ "mac10.15": "builds/android/%s/android.zip",
445
+ "mac11": "builds/android/%s/android.zip",
446
+ "mac11-arm64": "builds/android/%s/android.zip",
447
+ "mac12": "builds/android/%s/android.zip",
448
+ "mac12-arm64": "builds/android/%s/android.zip",
449
+ "mac13": "builds/android/%s/android.zip",
450
+ "mac13-arm64": "builds/android/%s/android.zip",
451
+ "mac14": "builds/android/%s/android.zip",
452
+ "mac14-arm64": "builds/android/%s/android.zip",
453
+ "mac15": "builds/android/%s/android.zip",
454
+ "mac15-arm64": "builds/android/%s/android.zip",
455
+ "win64": "builds/android/%s/android.zip"
456
+ }
457
+ };
458
+ const registryDirectory = (() => {
459
+ let result;
460
+ const envDefined = (0, import_utils.getFromENV)("PLAYWRIGHT_BROWSERS_PATH");
461
+ if (envDefined === "0") {
462
+ result = import_path.default.join(__dirname, "..", "..", "..", ".local-browsers");
463
+ } else if (envDefined) {
464
+ result = envDefined;
465
+ } else {
466
+ let cacheDirectory;
467
+ if (process.platform === "linux")
468
+ cacheDirectory = process.env.XDG_CACHE_HOME || import_path.default.join(import_os.default.homedir(), ".cache");
469
+ else if (process.platform === "darwin")
470
+ cacheDirectory = import_path.default.join(import_os.default.homedir(), "Library", "Caches");
471
+ else if (process.platform === "win32")
472
+ cacheDirectory = process.env.LOCALAPPDATA || import_path.default.join(import_os.default.homedir(), "AppData", "Local");
473
+ else
474
+ throw new Error("Unsupported platform: " + process.platform);
475
+ result = import_path.default.join(cacheDirectory, "ms-playwright");
476
+ }
477
+ if (!import_path.default.isAbsolute(result)) {
478
+ result = import_path.default.resolve((0, import_utils.getFromENV)("INIT_CWD") || process.cwd(), result);
479
+ }
480
+ return result;
481
+ })();
482
+ function isBrowserDirectory(browserDirectory) {
483
+ const baseName = import_path.default.basename(browserDirectory);
484
+ for (const browserName of allDownloadable) {
485
+ if (baseName.startsWith(browserName.replace(/-/g, "_") + "-"))
486
+ return true;
487
+ }
488
+ return false;
489
+ }
490
+ function readDescriptors(browsersJSON) {
491
+ return browsersJSON["browsers"].map((obj) => {
492
+ const name = obj.name;
493
+ const revisionOverride = (obj.revisionOverrides || {})[import_hostPlatform.hostPlatform];
494
+ const revision = revisionOverride || obj.revision;
495
+ const browserDirectoryPrefix = revisionOverride ? `${name}_${import_hostPlatform.hostPlatform}_special` : `${name}`;
496
+ const descriptor = {
497
+ name,
498
+ revision,
499
+ hasRevisionOverride: !!revisionOverride,
500
+ // We only put browser version for the supported operating systems.
501
+ browserVersion: revisionOverride ? void 0 : obj.browserVersion,
502
+ installByDefault: !!obj.installByDefault,
503
+ // Method `isBrowserDirectory` determines directory to be browser iff
504
+ // it starts with some browser name followed by '-'. Some browser names
505
+ // are prefixes of others, e.g. 'webkit' is a prefix of `webkit-technology-preview`.
506
+ // To avoid older registries erroneously removing 'webkit-technology-preview', we have to
507
+ // ensure that browser folders to never include dashes inside.
508
+ dir: import_path.default.join(registryDirectory, browserDirectoryPrefix.replace(/-/g, "_") + "-" + revision)
509
+ };
510
+ return descriptor;
511
+ });
512
+ }
513
+ const allDownloadable = ["android", "chromium", "firefox", "webkit", "ffmpeg", "firefox-beta", "chromium-tip-of-tree", "chromium-headless-shell", "chromium-tip-of-tree-headless-shell"];
514
+ class Registry {
515
+ constructor(browsersJSON) {
516
+ const descriptors = readDescriptors(browsersJSON);
517
+ const findExecutablePath = (dir, name) => {
518
+ const tokens = EXECUTABLE_PATHS[name][import_hostPlatform.shortPlatform];
519
+ return tokens ? import_path.default.join(dir, ...tokens) : void 0;
520
+ };
521
+ const executablePathOrDie = (name, e, installByDefault, sdkLanguage) => {
522
+ if (!e)
523
+ throw new Error(`${name} is not supported on ${import_hostPlatform.hostPlatform}`);
524
+ const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install${installByDefault ? "" : " " + name}`);
525
+ if (!(0, import_fileUtils.canAccessFile)(e)) {
526
+ const currentDockerVersion = (0, import_dependencies.readDockerVersionSync)();
527
+ const preferredDockerVersion = currentDockerVersion ? (0, import_dependencies.dockerVersion)(currentDockerVersion.dockerImageNameTemplate) : null;
528
+ const isOutdatedDockerImage = currentDockerVersion && preferredDockerVersion && currentDockerVersion.dockerImageName !== preferredDockerVersion.dockerImageName;
529
+ const prettyMessage = isOutdatedDockerImage ? [
530
+ `Looks like ${sdkLanguage === "javascript" ? "Playwright Test or " : ""}Playwright was just updated to ${preferredDockerVersion.driverVersion}.`,
531
+ `Please update docker image as well.`,
532
+ `- current: ${currentDockerVersion.dockerImageName}`,
533
+ `- required: ${preferredDockerVersion.dockerImageName}`,
534
+ ``,
535
+ `<3 Playwright Team`
536
+ ].join("\n") : [
537
+ `Looks like ${sdkLanguage === "javascript" ? "Playwright Test or " : ""}Playwright was just installed or updated.`,
538
+ `Please run the following command to download new browser${installByDefault ? "s" : ""}:`,
539
+ ``,
540
+ ` ${installCommand}`,
541
+ ``,
542
+ `<3 Playwright Team`
543
+ ].join("\n");
544
+ throw new Error(`Executable doesn't exist at ${e}
545
+ ${(0, import_ascii.wrapInASCIIBox)(prettyMessage, 1)}`);
546
+ }
547
+ return e;
548
+ };
549
+ this._executables = [];
550
+ const chromium = descriptors.find((d) => d.name === "chromium");
551
+ const chromiumExecutable = findExecutablePath(chromium.dir, "chromium");
552
+ this._executables.push({
553
+ type: "browser",
554
+ name: "chromium",
555
+ browserName: "chromium",
556
+ directory: chromium.dir,
557
+ executablePath: () => chromiumExecutable,
558
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumExecutable, chromium.installByDefault, sdkLanguage),
559
+ installType: chromium.installByDefault ? "download-by-default" : "download-on-demand",
560
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromium.dir, ["chrome-linux"], [], ["chrome-win"]),
561
+ downloadURLs: this._downloadURLs(chromium),
562
+ browserVersion: chromium.browserVersion,
563
+ _install: () => this._downloadExecutable(chromium, chromiumExecutable),
564
+ _dependencyGroup: "chromium",
565
+ _isHermeticInstallation: true
566
+ });
567
+ const chromiumHeadlessShell = descriptors.find((d) => d.name === "chromium-headless-shell");
568
+ const chromiumHeadlessShellExecutable = findExecutablePath(chromiumHeadlessShell.dir, "chromium-headless-shell");
569
+ this._executables.push({
570
+ type: "channel",
571
+ name: "chromium-headless-shell",
572
+ browserName: "chromium",
573
+ directory: chromiumHeadlessShell.dir,
574
+ executablePath: () => chromiumHeadlessShellExecutable,
575
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumHeadlessShellExecutable, chromiumHeadlessShell.installByDefault, sdkLanguage),
576
+ installType: chromiumHeadlessShell.installByDefault ? "download-by-default" : "download-on-demand",
577
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromiumHeadlessShell.dir, ["chrome-linux"], [], ["chrome-win"]),
578
+ downloadURLs: this._downloadURLs(chromiumHeadlessShell),
579
+ browserVersion: chromium.browserVersion,
580
+ _install: () => this._downloadExecutable(chromiumHeadlessShell, chromiumHeadlessShellExecutable),
581
+ _dependencyGroup: "chromium",
582
+ _isHermeticInstallation: true
583
+ });
584
+ const chromiumTipOfTreeHeadlessShell = descriptors.find((d) => d.name === "chromium-tip-of-tree-headless-shell");
585
+ const chromiumTipOfTreeHeadlessShellExecutable = findExecutablePath(chromiumTipOfTreeHeadlessShell.dir, "chromium-tip-of-tree-headless-shell");
586
+ this._executables.push({
587
+ type: "channel",
588
+ name: "chromium-tip-of-tree-headless-shell",
589
+ browserName: "chromium",
590
+ directory: chromiumTipOfTreeHeadlessShell.dir,
591
+ executablePath: () => chromiumTipOfTreeHeadlessShellExecutable,
592
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumTipOfTreeHeadlessShellExecutable, chromiumTipOfTreeHeadlessShell.installByDefault, sdkLanguage),
593
+ installType: chromiumTipOfTreeHeadlessShell.installByDefault ? "download-by-default" : "download-on-demand",
594
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromiumTipOfTreeHeadlessShell.dir, ["chrome-linux"], [], ["chrome-win"]),
595
+ downloadURLs: this._downloadURLs(chromiumTipOfTreeHeadlessShell),
596
+ browserVersion: chromium.browserVersion,
597
+ _install: () => this._downloadExecutable(chromiumTipOfTreeHeadlessShell, chromiumTipOfTreeHeadlessShellExecutable),
598
+ _dependencyGroup: "chromium",
599
+ _isHermeticInstallation: true
600
+ });
601
+ const chromiumTipOfTree = descriptors.find((d) => d.name === "chromium-tip-of-tree");
602
+ const chromiumTipOfTreeExecutable = findExecutablePath(chromiumTipOfTree.dir, "chromium-tip-of-tree");
603
+ this._executables.push({
604
+ type: "tool",
605
+ name: "chromium-tip-of-tree",
606
+ browserName: "chromium",
607
+ directory: chromiumTipOfTree.dir,
608
+ executablePath: () => chromiumTipOfTreeExecutable,
609
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium-tip-of-tree", chromiumTipOfTreeExecutable, chromiumTipOfTree.installByDefault, sdkLanguage),
610
+ installType: chromiumTipOfTree.installByDefault ? "download-by-default" : "download-on-demand",
611
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromiumTipOfTree.dir, ["chrome-linux"], [], ["chrome-win"]),
612
+ downloadURLs: this._downloadURLs(chromiumTipOfTree),
613
+ browserVersion: chromiumTipOfTree.browserVersion,
614
+ _install: () => this._downloadExecutable(chromiumTipOfTree, chromiumTipOfTreeExecutable),
615
+ _dependencyGroup: "chromium",
616
+ _isHermeticInstallation: true
617
+ });
618
+ this._executables.push(this._createChromiumChannel("chrome", {
619
+ "linux": "/opt/google/chrome/chrome",
620
+ "darwin": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
621
+ "win32": `\\Google\\Chrome\\Application\\chrome.exe`
622
+ }, () => this._installChromiumChannel("chrome", {
623
+ "linux": "reinstall_chrome_stable_linux.sh",
624
+ "darwin": "reinstall_chrome_stable_mac.sh",
625
+ "win32": "reinstall_chrome_stable_win.ps1"
626
+ })));
627
+ this._executables.push(this._createChromiumChannel("chrome-beta", {
628
+ "linux": "/opt/google/chrome-beta/chrome",
629
+ "darwin": "/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta",
630
+ "win32": `\\Google\\Chrome Beta\\Application\\chrome.exe`
631
+ }, () => this._installChromiumChannel("chrome-beta", {
632
+ "linux": "reinstall_chrome_beta_linux.sh",
633
+ "darwin": "reinstall_chrome_beta_mac.sh",
634
+ "win32": "reinstall_chrome_beta_win.ps1"
635
+ })));
636
+ this._executables.push(this._createChromiumChannel("chrome-dev", {
637
+ "linux": "/opt/google/chrome-unstable/chrome",
638
+ "darwin": "/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev",
639
+ "win32": `\\Google\\Chrome Dev\\Application\\chrome.exe`
640
+ }));
641
+ this._executables.push(this._createChromiumChannel("chrome-canary", {
642
+ "linux": "/opt/google/chrome-canary/chrome",
643
+ "darwin": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
644
+ "win32": `\\Google\\Chrome SxS\\Application\\chrome.exe`
645
+ }));
646
+ this._executables.push(this._createChromiumChannel("msedge", {
647
+ "linux": "/opt/microsoft/msedge/msedge",
648
+ "darwin": "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge",
649
+ "win32": `\\Microsoft\\Edge\\Application\\msedge.exe`
650
+ }, () => this._installMSEdgeChannel("msedge", {
651
+ "linux": "reinstall_msedge_stable_linux.sh",
652
+ "darwin": "reinstall_msedge_stable_mac.sh",
653
+ "win32": "reinstall_msedge_stable_win.ps1"
654
+ })));
655
+ this._executables.push(this._createChromiumChannel("msedge-beta", {
656
+ "linux": "/opt/microsoft/msedge-beta/msedge",
657
+ "darwin": "/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta",
658
+ "win32": `\\Microsoft\\Edge Beta\\Application\\msedge.exe`
659
+ }, () => this._installMSEdgeChannel("msedge-beta", {
660
+ "darwin": "reinstall_msedge_beta_mac.sh",
661
+ "linux": "reinstall_msedge_beta_linux.sh",
662
+ "win32": "reinstall_msedge_beta_win.ps1"
663
+ })));
664
+ this._executables.push(this._createChromiumChannel("msedge-dev", {
665
+ "linux": "/opt/microsoft/msedge-dev/msedge",
666
+ "darwin": "/Applications/Microsoft Edge Dev.app/Contents/MacOS/Microsoft Edge Dev",
667
+ "win32": `\\Microsoft\\Edge Dev\\Application\\msedge.exe`
668
+ }, () => this._installMSEdgeChannel("msedge-dev", {
669
+ "darwin": "reinstall_msedge_dev_mac.sh",
670
+ "linux": "reinstall_msedge_dev_linux.sh",
671
+ "win32": "reinstall_msedge_dev_win.ps1"
672
+ })));
673
+ this._executables.push(this._createChromiumChannel("msedge-canary", {
674
+ "linux": "",
675
+ "darwin": "/Applications/Microsoft Edge Canary.app/Contents/MacOS/Microsoft Edge Canary",
676
+ "win32": `\\Microsoft\\Edge SxS\\Application\\msedge.exe`
677
+ }));
678
+ this._executables.push(this._createBidiFirefoxChannel("moz-firefox", {
679
+ "linux": "/snap/bin/firefox",
680
+ "darwin": "/Applications/Firefox.app/Contents/MacOS/firefox",
681
+ "win32": "\\Mozilla Firefox\\firefox.exe"
682
+ }));
683
+ this._executables.push(this._createBidiFirefoxChannel("moz-firefox-beta", {
684
+ "linux": "/opt/firefox-beta/firefox",
685
+ "darwin": "/Applications/Firefox.app/Contents/MacOS/firefox",
686
+ "win32": "\\Mozilla Firefox\\firefox.exe"
687
+ }));
688
+ this._executables.push(this._createBidiFirefoxChannel("moz-firefox-nightly", {
689
+ "linux": "/opt/firefox-nightly/firefox",
690
+ "darwin": "/Applications/Firefox Nightly.app/Contents/MacOS/firefox",
691
+ "win32": "\\Mozilla Firefox\\firefox.exe"
692
+ }));
693
+ this._executables.push(this._createBidiChromiumChannel("bidi-chrome-stable", {
694
+ "linux": "/opt/google/chrome/chrome",
695
+ "darwin": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
696
+ "win32": `\\Google\\Chrome\\Application\\chrome.exe`
697
+ }));
698
+ this._executables.push(this._createBidiChromiumChannel("bidi-chrome-canary", {
699
+ "linux": "/opt/google/chrome-canary/chrome",
700
+ "darwin": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
701
+ "win32": `\\Google\\Chrome SxS\\Application\\chrome.exe`
702
+ }));
703
+ this._executables.push({
704
+ type: "channel",
705
+ name: "bidi-chromium",
706
+ browserName: "chromium",
707
+ directory: chromium.dir,
708
+ executablePath: () => chromiumExecutable,
709
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumExecutable, chromium.installByDefault, sdkLanguage),
710
+ installType: "download-on-demand",
711
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromium.dir, ["chrome-linux"], [], ["chrome-win"]),
712
+ downloadURLs: this._downloadURLs(chromium),
713
+ browserVersion: chromium.browserVersion,
714
+ _install: () => this._downloadExecutable(chromium, chromiumExecutable),
715
+ _dependencyGroup: "chromium",
716
+ _isHermeticInstallation: true
717
+ });
718
+ const firefox = descriptors.find((d) => d.name === "firefox");
719
+ const firefoxExecutable = findExecutablePath(firefox.dir, "firefox");
720
+ this._executables.push({
721
+ type: "browser",
722
+ name: "firefox",
723
+ browserName: "firefox",
724
+ directory: firefox.dir,
725
+ executablePath: () => firefoxExecutable,
726
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("firefox", firefoxExecutable, firefox.installByDefault, sdkLanguage),
727
+ installType: firefox.installByDefault ? "download-by-default" : "download-on-demand",
728
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, firefox.dir, ["firefox"], [], ["firefox"]),
729
+ downloadURLs: this._downloadURLs(firefox),
730
+ browserVersion: firefox.browserVersion,
731
+ _install: () => this._downloadExecutable(firefox, firefoxExecutable),
732
+ _dependencyGroup: "firefox",
733
+ _isHermeticInstallation: true
734
+ });
735
+ const firefoxBeta = descriptors.find((d) => d.name === "firefox-beta");
736
+ const firefoxBetaExecutable = findExecutablePath(firefoxBeta.dir, "firefox");
737
+ this._executables.push({
738
+ type: "tool",
739
+ name: "firefox-beta",
740
+ browserName: "firefox",
741
+ directory: firefoxBeta.dir,
742
+ executablePath: () => firefoxBetaExecutable,
743
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("firefox-beta", firefoxBetaExecutable, firefoxBeta.installByDefault, sdkLanguage),
744
+ installType: firefoxBeta.installByDefault ? "download-by-default" : "download-on-demand",
745
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, firefoxBeta.dir, ["firefox"], [], ["firefox"]),
746
+ downloadURLs: this._downloadURLs(firefoxBeta),
747
+ browserVersion: firefoxBeta.browserVersion,
748
+ _install: () => this._downloadExecutable(firefoxBeta, firefoxBetaExecutable),
749
+ _dependencyGroup: "firefox",
750
+ _isHermeticInstallation: true
751
+ });
752
+ const webkit = descriptors.find((d) => d.name === "webkit");
753
+ const webkitExecutable = findExecutablePath(webkit.dir, "webkit");
754
+ const webkitLinuxLddDirectories = [
755
+ import_path.default.join("minibrowser-gtk"),
756
+ import_path.default.join("minibrowser-gtk", "bin"),
757
+ import_path.default.join("minibrowser-gtk", "lib"),
758
+ import_path.default.join("minibrowser-gtk", "sys", "lib"),
759
+ import_path.default.join("minibrowser-wpe"),
760
+ import_path.default.join("minibrowser-wpe", "bin"),
761
+ import_path.default.join("minibrowser-wpe", "lib"),
762
+ import_path.default.join("minibrowser-wpe", "sys", "lib")
763
+ ];
764
+ this._executables.push({
765
+ type: "browser",
766
+ name: "webkit",
767
+ browserName: "webkit",
768
+ directory: webkit.dir,
769
+ executablePath: () => webkitExecutable,
770
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("webkit", webkitExecutable, webkit.installByDefault, sdkLanguage),
771
+ installType: webkit.installByDefault ? "download-by-default" : "download-on-demand",
772
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, webkit.dir, webkitLinuxLddDirectories, ["libGLESv2.so.2", "libx264.so"], [""]),
773
+ downloadURLs: this._downloadURLs(webkit),
774
+ browserVersion: webkit.browserVersion,
775
+ _install: () => this._downloadExecutable(webkit, webkitExecutable),
776
+ _dependencyGroup: "webkit",
777
+ _isHermeticInstallation: true
778
+ });
779
+ this._executables.push({
780
+ type: "channel",
781
+ name: "webkit-wsl",
782
+ browserName: "webkit",
783
+ directory: webkit.dir,
784
+ executablePath: () => process.execPath,
785
+ executablePathOrDie: () => process.execPath,
786
+ wslExecutablePath: `/home/pwuser/.cache/ms-playwright/webkit-${webkit.revision}/pw_run.sh`,
787
+ installType: "download-on-demand",
788
+ _validateHostRequirements: (sdkLanguage) => Promise.resolve(),
789
+ _isHermeticInstallation: true,
790
+ _install: async () => {
791
+ if (process.platform !== "win32")
792
+ throw new Error(`WebKit via WSL is only supported on Windows`);
793
+ const script = import_path.default.join(BIN_PATH, "install_webkit_wsl.ps1");
794
+ const { code } = await (0, import_spawnAsync.spawnAsync)("powershell.exe", [
795
+ "-ExecutionPolicy",
796
+ "Bypass",
797
+ "-File",
798
+ script
799
+ ], {
800
+ stdio: "inherit"
801
+ });
802
+ if (code !== 0)
803
+ throw new Error(`Failed to install WebKit via WSL`);
804
+ }
805
+ });
806
+ const ffmpeg = descriptors.find((d) => d.name === "ffmpeg");
807
+ const ffmpegExecutable = findExecutablePath(ffmpeg.dir, "ffmpeg");
808
+ this._executables.push({
809
+ type: "tool",
810
+ name: "ffmpeg",
811
+ browserName: void 0,
812
+ directory: ffmpeg.dir,
813
+ executablePath: () => ffmpegExecutable,
814
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("ffmpeg", ffmpegExecutable, ffmpeg.installByDefault, sdkLanguage),
815
+ installType: ffmpeg.installByDefault ? "download-by-default" : "download-on-demand",
816
+ _validateHostRequirements: () => Promise.resolve(),
817
+ downloadURLs: this._downloadURLs(ffmpeg),
818
+ _install: () => this._downloadExecutable(ffmpeg, ffmpegExecutable),
819
+ _dependencyGroup: "tools",
820
+ _isHermeticInstallation: true
821
+ });
822
+ const winldd = descriptors.find((d) => d.name === "winldd");
823
+ const winlddExecutable = findExecutablePath(winldd.dir, "winldd");
824
+ this._executables.push({
825
+ type: "tool",
826
+ name: "winldd",
827
+ browserName: void 0,
828
+ directory: winldd.dir,
829
+ executablePath: () => winlddExecutable,
830
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("winldd", winlddExecutable, winldd.installByDefault, sdkLanguage),
831
+ installType: process.platform === "win32" ? "download-by-default" : "none",
832
+ _validateHostRequirements: () => Promise.resolve(),
833
+ downloadURLs: this._downloadURLs(winldd),
834
+ _install: () => this._downloadExecutable(winldd, winlddExecutable),
835
+ _dependencyGroup: "tools",
836
+ _isHermeticInstallation: true
837
+ });
838
+ const android = descriptors.find((d) => d.name === "android");
839
+ this._executables.push({
840
+ type: "tool",
841
+ name: "android",
842
+ browserName: void 0,
843
+ directory: android.dir,
844
+ executablePath: () => void 0,
845
+ executablePathOrDie: () => "",
846
+ installType: "download-on-demand",
847
+ _validateHostRequirements: () => Promise.resolve(),
848
+ downloadURLs: this._downloadURLs(android),
849
+ _install: () => this._downloadExecutable(android),
850
+ _dependencyGroup: "tools",
851
+ _isHermeticInstallation: true
852
+ });
853
+ }
854
+ _createChromiumChannel(name, lookAt, install) {
855
+ const executablePath = (sdkLanguage, shouldThrow) => {
856
+ const suffix = lookAt[process.platform];
857
+ if (!suffix) {
858
+ if (shouldThrow)
859
+ throw new Error(`Chromium distribution '${name}' is not supported on ${process.platform}`);
860
+ return void 0;
861
+ }
862
+ const prefixes = process.platform === "win32" ? [
863
+ process.env.LOCALAPPDATA,
864
+ process.env.PROGRAMFILES,
865
+ process.env["PROGRAMFILES(X86)"],
866
+ // In some cases there is no PROGRAMFILES/(86) env var set but HOMEDRIVE is set.
867
+ process.env.HOMEDRIVE + "\\Program Files",
868
+ process.env.HOMEDRIVE + "\\Program Files (x86)"
869
+ ].filter(Boolean) : [""];
870
+ for (const prefix of prefixes) {
871
+ const executablePath2 = import_path.default.join(prefix, suffix);
872
+ if ((0, import_fileUtils.canAccessFile)(executablePath2))
873
+ return executablePath2;
874
+ }
875
+ if (!shouldThrow)
876
+ return void 0;
877
+ const location = prefixes.length ? ` at ${import_path.default.join(prefixes[0], suffix)}` : ``;
878
+ const installation = install ? `
879
+ Run "${buildPlaywrightCLICommand(sdkLanguage, "install " + name)}"` : "";
880
+ throw new Error(`Chromium distribution '${name}' is not found${location}${installation}`);
881
+ };
882
+ return {
883
+ type: "channel",
884
+ name,
885
+ browserName: "chromium",
886
+ directory: void 0,
887
+ executablePath: (sdkLanguage) => executablePath(sdkLanguage, false),
888
+ executablePathOrDie: (sdkLanguage) => executablePath(sdkLanguage, true),
889
+ installType: install ? "install-script" : "none",
890
+ _validateHostRequirements: () => Promise.resolve(),
891
+ _isHermeticInstallation: false,
892
+ _install: install
893
+ };
894
+ }
895
+ _createBidiFirefoxChannel(name, lookAt, install) {
896
+ const executablePath = (sdkLanguage, shouldThrow) => {
897
+ const suffix = lookAt[process.platform];
898
+ if (!suffix) {
899
+ if (shouldThrow)
900
+ throw new Error(`Firefox distribution '${name}' is not supported on ${process.platform}`);
901
+ return void 0;
902
+ }
903
+ const prefixes = process.platform === "win32" ? [
904
+ process.env.LOCALAPPDATA,
905
+ process.env.PROGRAMFILES,
906
+ process.env["PROGRAMFILES(X86)"],
907
+ // In some cases there is no PROGRAMFILES/(86) env var set but HOMEDRIVE is set.
908
+ process.env.HOMEDRIVE + "\\Program Files",
909
+ process.env.HOMEDRIVE + "\\Program Files (x86)"
910
+ ].filter(Boolean) : [""];
911
+ for (const prefix of prefixes) {
912
+ const executablePath2 = import_path.default.join(prefix, suffix);
913
+ if ((0, import_fileUtils.canAccessFile)(executablePath2))
914
+ return executablePath2;
915
+ }
916
+ if (shouldThrow)
917
+ throw new Error(`Cannot find Firefox installation for channel '${name}' at the standard system paths. ${`Tried paths:
918
+ ${prefixes.map((p) => import_path.default.join(p, suffix)).join("\n ")}`}`);
919
+ return void 0;
920
+ };
921
+ return {
922
+ type: "channel",
923
+ name,
924
+ browserName: "firefox",
925
+ directory: void 0,
926
+ executablePath: (sdkLanguage) => executablePath(sdkLanguage, false),
927
+ executablePathOrDie: (sdkLanguage) => executablePath(sdkLanguage, true),
928
+ installType: "none",
929
+ _validateHostRequirements: () => Promise.resolve(),
930
+ _isHermeticInstallation: true,
931
+ _install: install
932
+ };
933
+ }
934
+ _createBidiChromiumChannel(name, lookAt, install) {
935
+ const executablePath = (sdkLanguage, shouldThrow) => {
936
+ const suffix = lookAt[process.platform];
937
+ if (!suffix) {
938
+ if (shouldThrow)
939
+ throw new Error(`Chromium distribution '${name}' is not supported on ${process.platform}`);
940
+ return void 0;
941
+ }
942
+ const prefixes = process.platform === "win32" ? [
943
+ process.env.LOCALAPPDATA,
944
+ process.env.PROGRAMFILES,
945
+ process.env["PROGRAMFILES(X86)"],
946
+ // In some cases there is no PROGRAMFILES/(86) env var set but HOMEDRIVE is set.
947
+ process.env.HOMEDRIVE + "\\Program Files",
948
+ process.env.HOMEDRIVE + "\\Program Files (x86)"
949
+ ].filter(Boolean) : [""];
950
+ for (const prefix of prefixes) {
951
+ const executablePath2 = import_path.default.join(prefix, suffix);
952
+ if ((0, import_fileUtils.canAccessFile)(executablePath2))
953
+ return executablePath2;
954
+ }
955
+ if (!shouldThrow)
956
+ return void 0;
957
+ const location = prefixes.length ? ` at ${import_path.default.join(prefixes[0], suffix)}` : ``;
958
+ const installation = install ? `
959
+ Run "${buildPlaywrightCLICommand(sdkLanguage, "install " + name)}"` : "";
960
+ throw new Error(`Chromium distribution '${name}' is not found${location}${installation}`);
961
+ };
962
+ return {
963
+ type: "channel",
964
+ name,
965
+ browserName: "chromium",
966
+ directory: void 0,
967
+ executablePath: (sdkLanguage) => executablePath(sdkLanguage, false),
968
+ executablePathOrDie: (sdkLanguage) => executablePath(sdkLanguage, true),
969
+ installType: install ? "install-script" : "none",
970
+ _validateHostRequirements: () => Promise.resolve(),
971
+ _isHermeticInstallation: false,
972
+ _install: install
973
+ };
974
+ }
975
+ executables() {
976
+ return this._executables;
977
+ }
978
+ findExecutable(name) {
979
+ return this._executables.find((b) => b.name === name);
980
+ }
981
+ defaultExecutables() {
982
+ return this._executables.filter((e) => e.installType === "download-by-default");
983
+ }
984
+ _dedupe(executables) {
985
+ return Array.from(new Set(executables));
986
+ }
987
+ async _validateHostRequirements(sdkLanguage, browserDirectory, linuxLddDirectories, dlOpenLibraries, windowsExeAndDllDirectories) {
988
+ if (import_os.default.platform() === "linux")
989
+ return await (0, import_dependencies2.validateDependenciesLinux)(sdkLanguage, linuxLddDirectories.map((d) => import_path.default.join(browserDirectory, d)), dlOpenLibraries);
990
+ if (import_os.default.platform() === "win32" && import_os.default.arch() === "x64")
991
+ return await (0, import_dependencies2.validateDependenciesWindows)(sdkLanguage, windowsExeAndDllDirectories.map((d) => import_path.default.join(browserDirectory, d)));
992
+ }
993
+ async installDeps(executablesToInstallDeps, dryRun) {
994
+ const executables = this._dedupe(executablesToInstallDeps);
995
+ const targets = /* @__PURE__ */ new Set();
996
+ for (const executable of executables) {
997
+ if (executable._dependencyGroup)
998
+ targets.add(executable._dependencyGroup);
999
+ }
1000
+ targets.add("tools");
1001
+ if (import_os.default.platform() === "win32")
1002
+ return await (0, import_dependencies2.installDependenciesWindows)(targets, dryRun);
1003
+ if (import_os.default.platform() === "linux")
1004
+ return await (0, import_dependencies2.installDependenciesLinux)(targets, dryRun);
1005
+ }
1006
+ async install(executablesToInstall, forceReinstall) {
1007
+ const executables = this._dedupe(executablesToInstall);
1008
+ await import_fs.default.promises.mkdir(registryDirectory, { recursive: true });
1009
+ const lockfilePath = import_path.default.join(registryDirectory, "__dirlock");
1010
+ const linksDir = import_path.default.join(registryDirectory, ".links");
1011
+ let releaseLock;
1012
+ try {
1013
+ releaseLock = await import_utilsBundle.lockfile.lock(registryDirectory, {
1014
+ retries: {
1015
+ // Retry 20 times during 10 minutes with
1016
+ // exponential back-off.
1017
+ // See documentation at: https://www.npmjs.com/package/retry#retrytimeoutsoptions
1018
+ retries: 20,
1019
+ factor: 1.27579
1020
+ },
1021
+ onCompromised: (err) => {
1022
+ throw new Error(`${err.message} Path: ${lockfilePath}`);
1023
+ },
1024
+ lockfilePath
1025
+ });
1026
+ await import_fs.default.promises.mkdir(linksDir, { recursive: true });
1027
+ await import_fs.default.promises.writeFile(import_path.default.join(linksDir, (0, import_utils.calculateSha1)(PACKAGE_PATH)), PACKAGE_PATH);
1028
+ if (!(0, import_utils.getAsBooleanFromENV)("PLAYWRIGHT_SKIP_BROWSER_GC"))
1029
+ await this._validateInstallationCache(linksDir);
1030
+ for (const executable of executables) {
1031
+ if (!executable._install)
1032
+ throw new Error(`ERROR: Playwright does not support installing ${executable.name}`);
1033
+ const { embedderName } = (0, import_userAgent.getEmbedderName)();
1034
+ if (!(0, import_utils.getAsBooleanFromENV)("CI") && !executable._isHermeticInstallation && !forceReinstall && executable.executablePath(embedderName)) {
1035
+ const command = buildPlaywrightCLICommand(embedderName, "install --force " + executable.name);
1036
+ process.stderr.write("\n" + (0, import_ascii.wrapInASCIIBox)([
1037
+ `ATTENTION: "${executable.name}" is already installed on the system!`,
1038
+ ``,
1039
+ `"${executable.name}" installation is not hermetic; installing newer version`,
1040
+ `requires *removal* of a current installation first.`,
1041
+ ``,
1042
+ `To *uninstall* current version and re-install latest "${executable.name}":`,
1043
+ ``,
1044
+ `- Close all running instances of "${executable.name}", if any`,
1045
+ `- Use "--force" to install browser:`,
1046
+ ``,
1047
+ ` ${command}`,
1048
+ ``,
1049
+ `<3 Playwright Team`
1050
+ ].join("\n"), 1) + "\n\n");
1051
+ return;
1052
+ }
1053
+ await executable._install();
1054
+ }
1055
+ } catch (e) {
1056
+ if (e.code === "ELOCKED") {
1057
+ const rmCommand = process.platform === "win32" ? "rm -R" : "rm -rf";
1058
+ throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)([
1059
+ `An active lockfile is found at:`,
1060
+ ``,
1061
+ ` ${lockfilePath}`,
1062
+ ``,
1063
+ `Either:`,
1064
+ `- wait a few minutes if other Playwright is installing browsers in parallel`,
1065
+ `- remove lock manually with:`,
1066
+ ``,
1067
+ ` ${rmCommand} ${lockfilePath}`,
1068
+ ``,
1069
+ `<3 Playwright Team`
1070
+ ].join("\n"), 1));
1071
+ } else {
1072
+ throw e;
1073
+ }
1074
+ } finally {
1075
+ if (releaseLock)
1076
+ await releaseLock();
1077
+ }
1078
+ }
1079
+ async uninstall(all) {
1080
+ const linksDir = import_path.default.join(registryDirectory, ".links");
1081
+ if (all) {
1082
+ const links = await import_fs.default.promises.readdir(linksDir).catch(() => []);
1083
+ for (const link of links)
1084
+ await import_fs.default.promises.unlink(import_path.default.join(linksDir, link));
1085
+ } else {
1086
+ await import_fs.default.promises.unlink(import_path.default.join(linksDir, (0, import_utils.calculateSha1)(PACKAGE_PATH))).catch(() => {
1087
+ });
1088
+ }
1089
+ await this._validateInstallationCache(linksDir);
1090
+ return {
1091
+ numberOfBrowsersLeft: (await import_fs.default.promises.readdir(registryDirectory).catch(() => [])).filter((browserDirectory) => isBrowserDirectory(browserDirectory)).length
1092
+ };
1093
+ }
1094
+ async validateHostRequirementsForExecutablesIfNeeded(executables, sdkLanguage) {
1095
+ if ((0, import_utils.getAsBooleanFromENV)("PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS")) {
1096
+ process.stderr.write("Skipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set.\n");
1097
+ return;
1098
+ }
1099
+ for (const executable of executables)
1100
+ await this._validateHostRequirementsForExecutableIfNeeded(executable, sdkLanguage);
1101
+ }
1102
+ async _validateHostRequirementsForExecutableIfNeeded(executable, sdkLanguage) {
1103
+ const kMaximumReValidationPeriod = 30 * 24 * 60 * 60 * 1e3;
1104
+ if (!executable.directory)
1105
+ return;
1106
+ const markerFile = import_path.default.join(executable.directory, "DEPENDENCIES_VALIDATED");
1107
+ if (await import_fs.default.promises.stat(markerFile).then((stat) => Date.now() - stat.mtime.getTime() < kMaximumReValidationPeriod).catch(() => false))
1108
+ return;
1109
+ import_debugLogger.debugLogger.log("install", `validating host requirements for "${executable.name}"`);
1110
+ try {
1111
+ await executable._validateHostRequirements(sdkLanguage);
1112
+ import_debugLogger.debugLogger.log("install", `validation passed for ${executable.name}`);
1113
+ } catch (error) {
1114
+ import_debugLogger.debugLogger.log("install", `validation failed for ${executable.name}`);
1115
+ throw error;
1116
+ }
1117
+ await import_fs.default.promises.writeFile(markerFile, "").catch(() => {
1118
+ });
1119
+ }
1120
+ _downloadURLs(descriptor) {
1121
+ const paths = DOWNLOAD_PATHS[descriptor.name];
1122
+ const downloadPathTemplate = paths[import_hostPlatform.hostPlatform] || paths["<unknown>"];
1123
+ if (!downloadPathTemplate)
1124
+ return [];
1125
+ const downloadPath = util.format(downloadPathTemplate, descriptor.revision);
1126
+ let downloadURLs = PLAYWRIGHT_CDN_MIRRORS.map((mirror) => `${mirror}/${downloadPath}`);
1127
+ let downloadHostEnv;
1128
+ if (descriptor.name.startsWith("chromium"))
1129
+ downloadHostEnv = "PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST";
1130
+ else if (descriptor.name.startsWith("firefox"))
1131
+ downloadHostEnv = "PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST";
1132
+ else if (descriptor.name.startsWith("webkit"))
1133
+ downloadHostEnv = "PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST";
1134
+ const customHostOverride = downloadHostEnv && (0, import_utils.getFromENV)(downloadHostEnv) || (0, import_utils.getFromENV)("PLAYWRIGHT_DOWNLOAD_HOST");
1135
+ if (customHostOverride)
1136
+ downloadURLs = [`${customHostOverride}/${downloadPath}`];
1137
+ return downloadURLs;
1138
+ }
1139
+ async _downloadExecutable(descriptor, executablePath) {
1140
+ const downloadURLs = this._downloadURLs(descriptor);
1141
+ if (!downloadURLs.length)
1142
+ throw new Error(`ERROR: Playwright does not support ${descriptor.name} on ${import_hostPlatform.hostPlatform}`);
1143
+ if (!import_hostPlatform.isOfficiallySupportedPlatform)
1144
+ (0, import_browserFetcher.logPolitely)(`BEWARE: your OS is not officially supported by Playwright; downloading fallback build for ${import_hostPlatform.hostPlatform}.`);
1145
+ if (descriptor.hasRevisionOverride) {
1146
+ const message = `You are using a frozen ${descriptor.name} browser which does not receive updates anymore on ${import_hostPlatform.hostPlatform}. Please update to the latest version of your operating system to test up-to-date browsers.`;
1147
+ if (process.env.GITHUB_ACTIONS)
1148
+ console.log(`::warning title=Playwright::${message}`);
1149
+ else
1150
+ (0, import_browserFetcher.logPolitely)(message);
1151
+ }
1152
+ const displayName = descriptor.name.split("-").map((word) => {
1153
+ return word === "ffmpeg" ? "FFMPEG" : word.charAt(0).toUpperCase() + word.slice(1);
1154
+ }).join(" ");
1155
+ const title = descriptor.browserVersion ? `${displayName} ${descriptor.browserVersion} (playwright build v${descriptor.revision})` : `${displayName} playwright build v${descriptor.revision}`;
1156
+ const downloadFileName = `playwright-download-${descriptor.name}-${import_hostPlatform.hostPlatform}-${descriptor.revision}.zip`;
1157
+ const downloadSocketTimeoutEnv = (0, import_utils.getFromENV)("PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT");
1158
+ const downloadSocketTimeout = +(downloadSocketTimeoutEnv || "0") || import_network.NET_DEFAULT_TIMEOUT;
1159
+ await (0, import_browserFetcher.downloadBrowserWithProgressBar)(title, descriptor.dir, executablePath, downloadURLs, downloadFileName, downloadSocketTimeout).catch((e) => {
1160
+ throw new Error(`Failed to download ${title}, caused by
1161
+ ${e.stack}`);
1162
+ });
1163
+ }
1164
+ async _installMSEdgeChannel(channel, scripts) {
1165
+ const scriptArgs = [];
1166
+ if (process.platform !== "linux") {
1167
+ const products = lowercaseAllKeys(JSON.parse(await (0, import_network.fetchData)(void 0, { url: "https://edgeupdates.microsoft.com/api/products" })));
1168
+ const productName = {
1169
+ "msedge": "Stable",
1170
+ "msedge-beta": "Beta",
1171
+ "msedge-dev": "Dev"
1172
+ }[channel];
1173
+ const product = products.find((product2) => product2.product === productName);
1174
+ const searchConfig = {
1175
+ darwin: { platform: "MacOS", arch: "universal", artifact: "pkg" },
1176
+ win32: { platform: "Windows", arch: "x64", artifact: "msi" }
1177
+ }[process.platform];
1178
+ const release = searchConfig ? product.releases.find((release2) => release2.platform === searchConfig.platform && release2.architecture === searchConfig.arch && release2.artifacts.length > 0) : null;
1179
+ const artifact = release ? release.artifacts.find((artifact2) => artifact2.artifactname === searchConfig.artifact) : null;
1180
+ if (artifact)
1181
+ scriptArgs.push(
1182
+ artifact.location
1183
+ /* url */
1184
+ );
1185
+ else
1186
+ throw new Error(`Cannot install ${channel} on ${process.platform}`);
1187
+ }
1188
+ await this._installChromiumChannel(channel, scripts, scriptArgs);
1189
+ }
1190
+ async _installChromiumChannel(channel, scripts, scriptArgs = []) {
1191
+ const scriptName = scripts[process.platform];
1192
+ if (!scriptName)
1193
+ throw new Error(`Cannot install ${channel} on ${process.platform}`);
1194
+ const cwd = BIN_PATH;
1195
+ const isPowerShell = scriptName.endsWith(".ps1");
1196
+ if (isPowerShell) {
1197
+ const args = [
1198
+ "-ExecutionPolicy",
1199
+ "Bypass",
1200
+ "-File",
1201
+ import_path.default.join(BIN_PATH, scriptName),
1202
+ ...scriptArgs
1203
+ ];
1204
+ const { code } = await (0, import_spawnAsync.spawnAsync)("powershell.exe", args, { cwd, stdio: "inherit" });
1205
+ if (code !== 0)
1206
+ throw new Error(`Failed to install ${channel}`);
1207
+ } else {
1208
+ const { command, args, elevatedPermissions } = await (0, import_dependencies.transformCommandsForRoot)([`bash "${import_path.default.join(BIN_PATH, scriptName)}" ${scriptArgs.join("")}`]);
1209
+ if (elevatedPermissions)
1210
+ console.log("Switching to root user to install dependencies...");
1211
+ const { code } = await (0, import_spawnAsync.spawnAsync)(command, args, { cwd, stdio: "inherit" });
1212
+ if (code !== 0)
1213
+ throw new Error(`Failed to install ${channel}`);
1214
+ }
1215
+ }
1216
+ async listInstalledBrowsers() {
1217
+ const linksDir = import_path.default.join(registryDirectory, ".links");
1218
+ const { browsers } = await this._traverseBrowserInstallations(linksDir);
1219
+ return browsers.filter((browser) => import_fs.default.existsSync(browser.browserPath));
1220
+ }
1221
+ async _validateInstallationCache(linksDir) {
1222
+ const { browsers, brokenLinks } = await this._traverseBrowserInstallations(linksDir);
1223
+ await this._deleteStaleBrowsers(browsers);
1224
+ await this._deleteBrokenInstallations(brokenLinks);
1225
+ }
1226
+ async _traverseBrowserInstallations(linksDir) {
1227
+ const browserList = [];
1228
+ const brokenLinks = [];
1229
+ for (const fileName of await import_fs.default.promises.readdir(linksDir)) {
1230
+ const linkPath = import_path.default.join(linksDir, fileName);
1231
+ let linkTarget = "";
1232
+ try {
1233
+ linkTarget = (await import_fs.default.promises.readFile(linkPath)).toString();
1234
+ const browsersJSON = require(import_path.default.join(linkTarget, "browsers.json"));
1235
+ const descriptors = readDescriptors(browsersJSON);
1236
+ for (const browserName of allDownloadable) {
1237
+ const descriptor = descriptors.find((d) => d.name === browserName);
1238
+ if (!descriptor)
1239
+ continue;
1240
+ const browserPath = descriptor.dir;
1241
+ const browserVersion = parseInt(descriptor.revision, 10);
1242
+ browserList.push({
1243
+ browserName,
1244
+ browserVersion,
1245
+ browserPath,
1246
+ referenceDir: linkTarget
1247
+ });
1248
+ }
1249
+ } catch (e) {
1250
+ brokenLinks.push(linkPath);
1251
+ }
1252
+ }
1253
+ return { browsers: browserList, brokenLinks };
1254
+ }
1255
+ async _deleteStaleBrowsers(browserList) {
1256
+ const usedBrowserPaths = /* @__PURE__ */ new Set();
1257
+ for (const browser of browserList) {
1258
+ const { browserName, browserVersion, browserPath } = browser;
1259
+ const shouldHaveMarkerFile = browserName === "chromium" && (browserVersion >= 786218 || browserVersion < 3e5) || browserName === "firefox" && browserVersion >= 1128 || browserName === "webkit" && browserVersion >= 1307 || // All new applications have a marker file right away.
1260
+ browserName !== "firefox" && browserName !== "chromium" && browserName !== "webkit";
1261
+ if (!shouldHaveMarkerFile || await (0, import_fileUtils.existsAsync)(browserDirectoryToMarkerFilePath(browserPath)))
1262
+ usedBrowserPaths.add(browserPath);
1263
+ }
1264
+ let downloadedBrowsers = (await import_fs.default.promises.readdir(registryDirectory)).map((file) => import_path.default.join(registryDirectory, file));
1265
+ downloadedBrowsers = downloadedBrowsers.filter((file) => isBrowserDirectory(file));
1266
+ const directories = new Set(downloadedBrowsers);
1267
+ for (const browserDirectory of usedBrowserPaths)
1268
+ directories.delete(browserDirectory);
1269
+ for (const directory of directories)
1270
+ (0, import_browserFetcher.logPolitely)("Removing unused browser at " + directory);
1271
+ await (0, import_fileUtils.removeFolders)([...directories]);
1272
+ }
1273
+ async _deleteBrokenInstallations(brokenLinks) {
1274
+ for (const linkPath of brokenLinks)
1275
+ await import_fs.default.promises.unlink(linkPath).catch((e) => {
1276
+ });
1277
+ }
1278
+ }
1279
+ function browserDirectoryToMarkerFilePath(browserDirectory) {
1280
+ return import_path.default.join(browserDirectory, "INSTALLATION_COMPLETE");
1281
+ }
1282
+ function buildPlaywrightCLICommand(sdkLanguage, parameters) {
1283
+ switch (sdkLanguage) {
1284
+ case "python":
1285
+ return `playwright ${parameters}`;
1286
+ case "java":
1287
+ return `mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="${parameters}"`;
1288
+ case "csharp":
1289
+ return `pwsh bin/Debug/netX/playwright.ps1 ${parameters}`;
1290
+ default: {
1291
+ const packageManagerCommand = (0, import_utils.getPackageManagerExecCommand)();
1292
+ return `${packageManagerCommand} playwright ${parameters}`;
1293
+ }
1294
+ }
1295
+ }
1296
+ async function installBrowsersForNpmInstall(browsers) {
1297
+ if ((0, import_utils.getAsBooleanFromENV)("PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD")) {
1298
+ (0, import_browserFetcher.logPolitely)("Skipping browsers download because `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` env variable is set");
1299
+ return false;
1300
+ }
1301
+ const executables = [];
1302
+ if (process.platform === "win32")
1303
+ executables.push(registry.findExecutable("winldd"));
1304
+ for (const browserName of browsers) {
1305
+ const executable = registry.findExecutable(browserName);
1306
+ if (!executable || executable.installType === "none")
1307
+ throw new Error(`Cannot install ${browserName}`);
1308
+ executables.push(executable);
1309
+ }
1310
+ await registry.install(
1311
+ executables,
1312
+ false
1313
+ /* forceReinstall */
1314
+ );
1315
+ }
1316
+ function findChromiumChannelBestEffort(sdkLanguage) {
1317
+ let channel = null;
1318
+ for (const name of ["chromium", "chrome", "msedge"]) {
1319
+ try {
1320
+ registry.findExecutable(name).executablePathOrDie(sdkLanguage);
1321
+ channel = name === "chromium" ? void 0 : name;
1322
+ break;
1323
+ } catch (e) {
1324
+ }
1325
+ }
1326
+ if (channel === null) {
1327
+ const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install chromium`);
1328
+ const prettyMessage = [
1329
+ `No chromium-based browser found on the system.`,
1330
+ `Please run the following command to download one:`,
1331
+ ``,
1332
+ ` ${installCommand}`,
1333
+ ``,
1334
+ `<3 Playwright Team`
1335
+ ].join("\n");
1336
+ throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)(prettyMessage, 1));
1337
+ }
1338
+ return channel;
1339
+ }
1340
+ function lowercaseAllKeys(json) {
1341
+ if (typeof json !== "object" || !json)
1342
+ return json;
1343
+ if (Array.isArray(json))
1344
+ return json.map(lowercaseAllKeys);
1345
+ const result = {};
1346
+ for (const [key, value] of Object.entries(json))
1347
+ result[key.toLowerCase()] = lowercaseAllKeys(value);
1348
+ return result;
1349
+ }
1350
+ const registry = new Registry(require("../../../browsers.json"));
1351
+ // Annotate the CommonJS export names for ESM import in node:
1352
+ 0 && (module.exports = {
1353
+ Registry,
1354
+ browserDirectoryToMarkerFilePath,
1355
+ buildPlaywrightCLICommand,
1356
+ findChromiumChannelBestEffort,
1357
+ installBrowsersForNpmInstall,
1358
+ registry,
1359
+ registryDirectory,
1360
+ writeDockerVersion
1361
+ });