@stablyai/internal-playwright-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +3 -0
  4. package/ThirdPartyNotices.txt +1134 -0
  5. package/bin/install_media_pack.ps1 +5 -0
  6. package/bin/install_webkit_wsl.ps1 +35 -0
  7. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  8. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  9. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  10. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  11. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  12. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  13. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  14. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  15. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  16. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  17. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  18. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  19. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  20. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  21. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  22. package/browsers.json +80 -0
  23. package/cli.js +18 -0
  24. package/index.d.ts +17 -0
  25. package/index.js +32 -0
  26. package/index.mjs +28 -0
  27. package/lib/androidServerImpl.js +65 -0
  28. package/lib/browserServerImpl.js +120 -0
  29. package/lib/cli/cli.js +58 -0
  30. package/lib/cli/driver.js +97 -0
  31. package/lib/cli/program.js +634 -0
  32. package/lib/cli/programWithTestStub.js +74 -0
  33. package/lib/client/accessibility.js +49 -0
  34. package/lib/client/android.js +361 -0
  35. package/lib/client/api.js +137 -0
  36. package/lib/client/artifact.js +79 -0
  37. package/lib/client/browser.js +163 -0
  38. package/lib/client/browserContext.js +529 -0
  39. package/lib/client/browserType.js +184 -0
  40. package/lib/client/cdpSession.js +51 -0
  41. package/lib/client/channelOwner.js +194 -0
  42. package/lib/client/clientHelper.js +64 -0
  43. package/lib/client/clientInstrumentation.js +55 -0
  44. package/lib/client/clientStackTrace.js +69 -0
  45. package/lib/client/clock.js +68 -0
  46. package/lib/client/connection.js +314 -0
  47. package/lib/client/consoleMessage.js +54 -0
  48. package/lib/client/coverage.js +44 -0
  49. package/lib/client/dialog.js +56 -0
  50. package/lib/client/download.js +62 -0
  51. package/lib/client/electron.js +138 -0
  52. package/lib/client/elementHandle.js +281 -0
  53. package/lib/client/errors.js +77 -0
  54. package/lib/client/eventEmitter.js +314 -0
  55. package/lib/client/events.js +99 -0
  56. package/lib/client/fetch.js +369 -0
  57. package/lib/client/fileChooser.js +46 -0
  58. package/lib/client/fileUtils.js +34 -0
  59. package/lib/client/frame.js +408 -0
  60. package/lib/client/harRouter.js +87 -0
  61. package/lib/client/input.js +84 -0
  62. package/lib/client/jsHandle.js +109 -0
  63. package/lib/client/jsonPipe.js +39 -0
  64. package/lib/client/localUtils.js +60 -0
  65. package/lib/client/locator.js +368 -0
  66. package/lib/client/network.js +747 -0
  67. package/lib/client/page.js +721 -0
  68. package/lib/client/platform.js +74 -0
  69. package/lib/client/playwright.js +71 -0
  70. package/lib/client/selectors.js +55 -0
  71. package/lib/client/stream.js +39 -0
  72. package/lib/client/timeoutSettings.js +79 -0
  73. package/lib/client/tracing.js +117 -0
  74. package/lib/client/types.js +28 -0
  75. package/lib/client/video.js +59 -0
  76. package/lib/client/waiter.js +142 -0
  77. package/lib/client/webError.js +39 -0
  78. package/lib/client/webSocket.js +93 -0
  79. package/lib/client/worker.js +63 -0
  80. package/lib/client/writableStream.js +39 -0
  81. package/lib/common/debugLogger.js +90 -0
  82. package/lib/common/socksProxy.js +569 -0
  83. package/lib/common/timeoutSettings.js +73 -0
  84. package/lib/common/types.js +5 -0
  85. package/lib/generated/bindingsControllerSource.js +28 -0
  86. package/lib/generated/clockSource.js +28 -0
  87. package/lib/generated/consoleApiSource.js +28 -0
  88. package/lib/generated/injectedScriptSource.js +28 -0
  89. package/lib/generated/pollingRecorderSource.js +28 -0
  90. package/lib/generated/recorderSource.js +28 -0
  91. package/lib/generated/storageScriptSource.js +28 -0
  92. package/lib/generated/utilityScriptSource.js +28 -0
  93. package/lib/generated/webSocketMockSource.js +336 -0
  94. package/lib/image_tools/colorUtils.js +98 -0
  95. package/lib/image_tools/compare.js +108 -0
  96. package/lib/image_tools/imageChannel.js +70 -0
  97. package/lib/image_tools/stats.js +102 -0
  98. package/lib/inProcessFactory.js +60 -0
  99. package/lib/index.js +19 -0
  100. package/lib/inprocess.js +3 -0
  101. package/lib/outofprocess.js +76 -0
  102. package/lib/protocol/debug.js +27 -0
  103. package/lib/protocol/serializers.js +192 -0
  104. package/lib/protocol/transport.js +82 -0
  105. package/lib/protocol/validator.js +2919 -0
  106. package/lib/protocol/validatorPrimitives.js +193 -0
  107. package/lib/remote/playwrightConnection.js +129 -0
  108. package/lib/remote/playwrightServer.js +335 -0
  109. package/lib/server/accessibility.js +69 -0
  110. package/lib/server/android/android.js +465 -0
  111. package/lib/server/android/backendAdb.js +177 -0
  112. package/lib/server/artifact.js +127 -0
  113. package/lib/server/bidi/bidiBrowser.js +490 -0
  114. package/lib/server/bidi/bidiChromium.js +153 -0
  115. package/lib/server/bidi/bidiConnection.js +212 -0
  116. package/lib/server/bidi/bidiExecutionContext.js +221 -0
  117. package/lib/server/bidi/bidiFirefox.js +130 -0
  118. package/lib/server/bidi/bidiInput.js +146 -0
  119. package/lib/server/bidi/bidiNetworkManager.js +383 -0
  120. package/lib/server/bidi/bidiOverCdp.js +102 -0
  121. package/lib/server/bidi/bidiPage.js +552 -0
  122. package/lib/server/bidi/bidiPdf.js +106 -0
  123. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  124. package/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
  125. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  126. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  127. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  128. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  129. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  130. package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  131. package/lib/server/browser.js +149 -0
  132. package/lib/server/browserContext.js +695 -0
  133. package/lib/server/browserType.js +328 -0
  134. package/lib/server/callLog.js +82 -0
  135. package/lib/server/chromium/appIcon.png +0 -0
  136. package/lib/server/chromium/chromium.js +402 -0
  137. package/lib/server/chromium/chromiumSwitches.js +95 -0
  138. package/lib/server/chromium/crAccessibility.js +263 -0
  139. package/lib/server/chromium/crBrowser.js +501 -0
  140. package/lib/server/chromium/crConnection.js +202 -0
  141. package/lib/server/chromium/crCoverage.js +235 -0
  142. package/lib/server/chromium/crDevTools.js +113 -0
  143. package/lib/server/chromium/crDragDrop.js +131 -0
  144. package/lib/server/chromium/crExecutionContext.js +146 -0
  145. package/lib/server/chromium/crInput.js +187 -0
  146. package/lib/server/chromium/crNetworkManager.js +666 -0
  147. package/lib/server/chromium/crPage.js +1069 -0
  148. package/lib/server/chromium/crPdf.js +121 -0
  149. package/lib/server/chromium/crProtocolHelper.js +145 -0
  150. package/lib/server/chromium/crServiceWorker.js +123 -0
  151. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  152. package/lib/server/chromium/protocol.d.js +16 -0
  153. package/lib/server/chromium/videoRecorder.js +113 -0
  154. package/lib/server/clock.js +149 -0
  155. package/lib/server/codegen/csharp.js +327 -0
  156. package/lib/server/codegen/java.js +274 -0
  157. package/lib/server/codegen/javascript.js +270 -0
  158. package/lib/server/codegen/jsonl.js +52 -0
  159. package/lib/server/codegen/language.js +132 -0
  160. package/lib/server/codegen/languages.js +68 -0
  161. package/lib/server/codegen/python.js +279 -0
  162. package/lib/server/codegen/types.js +16 -0
  163. package/lib/server/console.js +53 -0
  164. package/lib/server/cookieStore.js +206 -0
  165. package/lib/server/debugController.js +191 -0
  166. package/lib/server/debugger.js +119 -0
  167. package/lib/server/deviceDescriptors.js +39 -0
  168. package/lib/server/deviceDescriptorsSource.json +1779 -0
  169. package/lib/server/dialog.js +116 -0
  170. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  171. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  172. package/lib/server/dispatchers/browserContextDispatcher.js +364 -0
  173. package/lib/server/dispatchers/browserDispatcher.js +118 -0
  174. package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  175. package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  176. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  177. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  178. package/lib/server/dispatchers/dispatcher.js +371 -0
  179. package/lib/server/dispatchers/electronDispatcher.js +89 -0
  180. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  181. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  182. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  183. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  184. package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  185. package/lib/server/dispatchers/networkDispatchers.js +213 -0
  186. package/lib/server/dispatchers/pageDispatcher.js +401 -0
  187. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  188. package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  189. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  190. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  191. package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  192. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  193. package/lib/server/dom.js +806 -0
  194. package/lib/server/download.js +70 -0
  195. package/lib/server/electron/electron.js +270 -0
  196. package/lib/server/electron/loader.js +29 -0
  197. package/lib/server/errors.js +69 -0
  198. package/lib/server/fetch.js +621 -0
  199. package/lib/server/fileChooser.js +43 -0
  200. package/lib/server/fileUploadUtils.js +84 -0
  201. package/lib/server/firefox/ffAccessibility.js +238 -0
  202. package/lib/server/firefox/ffBrowser.js +428 -0
  203. package/lib/server/firefox/ffConnection.js +147 -0
  204. package/lib/server/firefox/ffExecutionContext.js +150 -0
  205. package/lib/server/firefox/ffInput.js +159 -0
  206. package/lib/server/firefox/ffNetworkManager.js +256 -0
  207. package/lib/server/firefox/ffPage.js +503 -0
  208. package/lib/server/firefox/firefox.js +116 -0
  209. package/lib/server/firefox/protocol.d.js +16 -0
  210. package/lib/server/formData.js +147 -0
  211. package/lib/server/frameSelectors.js +156 -0
  212. package/lib/server/frames.js +1502 -0
  213. package/lib/server/har/harRecorder.js +147 -0
  214. package/lib/server/har/harTracer.js +607 -0
  215. package/lib/server/harBackend.js +157 -0
  216. package/lib/server/helper.js +96 -0
  217. package/lib/server/index.js +58 -0
  218. package/lib/server/input.js +273 -0
  219. package/lib/server/instrumentation.js +69 -0
  220. package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
  221. package/lib/server/javascript.js +291 -0
  222. package/lib/server/launchApp.js +128 -0
  223. package/lib/server/localUtils.js +218 -0
  224. package/lib/server/macEditingCommands.js +143 -0
  225. package/lib/server/network.js +629 -0
  226. package/lib/server/page.js +871 -0
  227. package/lib/server/pipeTransport.js +89 -0
  228. package/lib/server/playwright.js +69 -0
  229. package/lib/server/progress.js +112 -0
  230. package/lib/server/protocolError.js +52 -0
  231. package/lib/server/recorder/chat.js +161 -0
  232. package/lib/server/recorder/codeGenerator.js +153 -0
  233. package/lib/server/recorder/csharp.js +310 -0
  234. package/lib/server/recorder/java.js +248 -0
  235. package/lib/server/recorder/javascript.js +229 -0
  236. package/lib/server/recorder/jsonl.js +47 -0
  237. package/lib/server/recorder/language.js +44 -0
  238. package/lib/server/recorder/python.js +276 -0
  239. package/lib/server/recorder/recorderActions.js +5 -0
  240. package/lib/server/recorder/recorderApp.js +387 -0
  241. package/lib/server/recorder/recorderRunner.js +138 -0
  242. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  243. package/lib/server/recorder/recorderUtils.js +157 -0
  244. package/lib/server/recorder/throttledFile.js +57 -0
  245. package/lib/server/recorder/utils.js +45 -0
  246. package/lib/server/recorder.js +499 -0
  247. package/lib/server/registry/browserFetcher.js +175 -0
  248. package/lib/server/registry/dependencies.js +371 -0
  249. package/lib/server/registry/index.js +1331 -0
  250. package/lib/server/registry/nativeDeps.js +1280 -0
  251. package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
  252. package/lib/server/screenshotter.js +333 -0
  253. package/lib/server/selectors.js +112 -0
  254. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  255. package/lib/server/socksInterceptor.js +95 -0
  256. package/lib/server/stably/ai-tools/http-request.js +70 -0
  257. package/lib/server/stably/ai-tools/stablyApiCaller.js +137 -0
  258. package/lib/server/stably/autohealing/elementHandleFromCoordinates.js +64 -0
  259. package/lib/server/stably/autohealing/healingService.js +228 -0
  260. package/lib/server/stably/autohealing/screenshotFrame.js +41 -0
  261. package/lib/server/stably/constants.js +31 -0
  262. package/lib/server/trace/recorder/snapshotter.js +147 -0
  263. package/lib/server/trace/recorder/snapshotterInjected.js +541 -0
  264. package/lib/server/trace/recorder/tracing.js +602 -0
  265. package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
  266. package/lib/server/trace/viewer/traceViewer.js +240 -0
  267. package/lib/server/transport.js +181 -0
  268. package/lib/server/types.js +28 -0
  269. package/lib/server/usKeyboardLayout.js +145 -0
  270. package/lib/server/utils/ascii.js +44 -0
  271. package/lib/server/utils/comparators.js +161 -0
  272. package/lib/server/utils/crypto.js +216 -0
  273. package/lib/server/utils/debug.js +42 -0
  274. package/lib/server/utils/debugLogger.js +122 -0
  275. package/lib/server/utils/env.js +73 -0
  276. package/lib/server/utils/eventsHelper.js +39 -0
  277. package/lib/server/utils/expectUtils.js +38 -0
  278. package/lib/server/utils/fileUtils.js +191 -0
  279. package/lib/server/utils/happyEyeballs.js +207 -0
  280. package/lib/server/utils/hostPlatform.js +111 -0
  281. package/lib/server/utils/httpServer.js +218 -0
  282. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  283. package/lib/server/utils/image_tools/compare.js +109 -0
  284. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  285. package/lib/server/utils/image_tools/stats.js +102 -0
  286. package/lib/server/utils/linuxUtils.js +71 -0
  287. package/lib/server/utils/network.js +233 -0
  288. package/lib/server/utils/nodePlatform.js +148 -0
  289. package/lib/server/utils/pipeTransport.js +84 -0
  290. package/lib/server/utils/processLauncher.js +241 -0
  291. package/lib/server/utils/profiler.js +65 -0
  292. package/lib/server/utils/socksProxy.js +511 -0
  293. package/lib/server/utils/spawnAsync.js +41 -0
  294. package/lib/server/utils/task.js +51 -0
  295. package/lib/server/utils/userAgent.js +98 -0
  296. package/lib/server/utils/wsServer.js +121 -0
  297. package/lib/server/utils/zipFile.js +74 -0
  298. package/lib/server/utils/zones.js +57 -0
  299. package/lib/server/webkit/protocol.d.js +16 -0
  300. package/lib/server/webkit/webkit.js +119 -0
  301. package/lib/server/webkit/wkAccessibility.js +237 -0
  302. package/lib/server/webkit/wkBrowser.js +339 -0
  303. package/lib/server/webkit/wkConnection.js +149 -0
  304. package/lib/server/webkit/wkExecutionContext.js +154 -0
  305. package/lib/server/webkit/wkInput.js +181 -0
  306. package/lib/server/webkit/wkInterceptableRequest.js +169 -0
  307. package/lib/server/webkit/wkPage.js +1134 -0
  308. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  309. package/lib/server/webkit/wkWorkers.js +104 -0
  310. package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
  311. package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
  312. package/lib/third_party/diff_match_patch.js +2222 -0
  313. package/lib/third_party/pixelmatch.js +255 -0
  314. package/lib/utils/ascii.js +31 -0
  315. package/lib/utils/comparators.js +171 -0
  316. package/lib/utils/crypto.js +33 -0
  317. package/lib/utils/debug.js +46 -0
  318. package/lib/utils/debugLogger.js +89 -0
  319. package/lib/utils/env.js +49 -0
  320. package/lib/utils/eventsHelper.js +38 -0
  321. package/lib/utils/fileUtils.js +205 -0
  322. package/lib/utils/glob.js +83 -0
  323. package/lib/utils/happy-eyeballs.js +160 -0
  324. package/lib/utils/headers.js +52 -0
  325. package/lib/utils/hostPlatform.js +128 -0
  326. package/lib/utils/httpServer.js +236 -0
  327. package/lib/utils/index.js +346 -0
  328. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  329. package/lib/utils/isomorphic/assert.js +31 -0
  330. package/lib/utils/isomorphic/colors.js +72 -0
  331. package/lib/utils/isomorphic/cssParser.js +245 -0
  332. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  333. package/lib/utils/isomorphic/headers.js +53 -0
  334. package/lib/utils/isomorphic/locatorGenerators.js +673 -0
  335. package/lib/utils/isomorphic/locatorParser.js +176 -0
  336. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  337. package/lib/utils/isomorphic/manualPromise.js +114 -0
  338. package/lib/utils/isomorphic/mimeType.js +459 -0
  339. package/lib/utils/isomorphic/multimap.js +80 -0
  340. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  341. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  342. package/lib/utils/isomorphic/rtti.js +43 -0
  343. package/lib/utils/isomorphic/selectorParser.js +386 -0
  344. package/lib/utils/isomorphic/semaphore.js +54 -0
  345. package/lib/utils/isomorphic/stackTrace.js +158 -0
  346. package/lib/utils/isomorphic/stringUtils.js +155 -0
  347. package/lib/utils/isomorphic/time.js +49 -0
  348. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  349. package/lib/utils/isomorphic/traceUtils.js +58 -0
  350. package/lib/utils/isomorphic/types.js +16 -0
  351. package/lib/utils/isomorphic/urlMatch.js +176 -0
  352. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  353. package/lib/utils/linuxUtils.js +78 -0
  354. package/lib/utils/manualPromise.js +109 -0
  355. package/lib/utils/mimeType.js +29 -0
  356. package/lib/utils/multimap.js +75 -0
  357. package/lib/utils/network.js +188 -0
  358. package/lib/utils/processLauncher.js +248 -0
  359. package/lib/utils/profiler.js +53 -0
  360. package/lib/utils/rtti.js +44 -0
  361. package/lib/utils/semaphore.js +51 -0
  362. package/lib/utils/spawnAsync.js +45 -0
  363. package/lib/utils/stackTrace.js +121 -0
  364. package/lib/utils/task.js +58 -0
  365. package/lib/utils/time.js +37 -0
  366. package/lib/utils/timeoutRunner.js +66 -0
  367. package/lib/utils/traceUtils.js +44 -0
  368. package/lib/utils/userAgent.js +105 -0
  369. package/lib/utils/wsServer.js +127 -0
  370. package/lib/utils/zipFile.js +75 -0
  371. package/lib/utils/zones.js +62 -0
  372. package/lib/utils.js +107 -0
  373. package/lib/utilsBundle.js +109 -0
  374. package/lib/utilsBundleImpl/index.js +218 -0
  375. package/lib/utilsBundleImpl/xdg-open +1066 -0
  376. package/lib/vite/htmlReport/index.html +84 -0
  377. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
  378. package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +24 -0
  379. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  380. package/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
  381. package/lib/vite/recorder/assets/index-Y-X2TGJv.js +193 -0
  382. package/lib/vite/recorder/index.html +29 -0
  383. package/lib/vite/recorder/playwright-logo.svg +9 -0
  384. package/lib/vite/traceViewer/assets/codeMirrorModule-Bhnc5o2x.js +24 -0
  385. package/lib/vite/traceViewer/assets/defaultSettingsView-ClwvkA2N.js +265 -0
  386. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  387. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
  388. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  389. package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +1 -0
  390. package/lib/vite/traceViewer/index.DFO9NNF5.js +2 -0
  391. package/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
  392. package/lib/vite/traceViewer/index.html +43 -0
  393. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  394. package/lib/vite/traceViewer/snapshot.html +21 -0
  395. package/lib/vite/traceViewer/sw.bundle.js +3 -0
  396. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  397. package/lib/vite/traceViewer/uiMode.Shu3QS-1.js +5 -0
  398. package/lib/vite/traceViewer/uiMode.html +17 -0
  399. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  400. package/lib/zipBundle.js +34 -0
  401. package/lib/zipBundleImpl.js +5 -0
  402. package/package.json +43 -0
  403. package/types/protocol.d.ts +23130 -0
  404. package/types/structs.d.ts +45 -0
  405. package/types/types.d.ts +22857 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var elementHandleFromCoordinates_exports = {};
20
+ __export(elementHandleFromCoordinates_exports, {
21
+ getElementHandleFromCoordinates: () => getElementHandleFromCoordinates
22
+ });
23
+ module.exports = __toCommonJS(elementHandleFromCoordinates_exports);
24
+ async function getElementHandleFromCoordinates(frame, coordinates) {
25
+ try {
26
+ const viewportSize = frame._page.emulatedSize()?.viewport;
27
+ if (coordinates[0] < 0 || coordinates[1] < 0 || coordinates[0] > (viewportSize?.width || 0) || coordinates[1] > (viewportSize?.height || 0))
28
+ throw new Error(`Coordinates [${coordinates[0]}, ${coordinates[1]}] are outside viewport bounds ${viewportSize?.width}x${viewportSize?.height}`);
29
+ const handle = await frame.evaluateExpressionHandle(`document.elementFromPoint(${coordinates[0]}, ${coordinates[1]})`);
30
+ const isIframe = await handle.isIframeElement();
31
+ if (isIframe && isIframe !== "error:notconnected") {
32
+ const contentFrame = await handle.contentFrame();
33
+ if (contentFrame) {
34
+ const box = await handle.boundingBox();
35
+ if (box) {
36
+ const style = await handle.evaluateInUtility(([injected, iframe]) => injected.describeIFrameStyle(iframe), {}).catch(() => null);
37
+ if (style && style !== "error:notconnected" && style !== "transformed") {
38
+ const frameCoordinates = [
39
+ coordinates[0] - box.x - style.left,
40
+ coordinates[1] - box.y - style.top
41
+ ];
42
+ await handle.dispose();
43
+ return await getElementHandleFromCoordinates(contentFrame, frameCoordinates);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ const { boundingBox, shadowRoot } = await handle.evaluate((element) => ({
49
+ boundingBox: element.getBoundingClientRect(),
50
+ shadowRoot: element.shadowRoot
51
+ }));
52
+ if (!boundingBox || shadowRoot) {
53
+ await handle.dispose();
54
+ throw new Error(shadowRoot ? "Element is a shadow root" : "Element has no bounding box");
55
+ }
56
+ return { handle, frame };
57
+ } catch (e) {
58
+ throw e;
59
+ }
60
+ }
61
+ // Annotate the CommonJS export names for ESM import in node:
62
+ 0 && (module.exports = {
63
+ getElementHandleFromCoordinates
64
+ });
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var healingService_exports = {};
20
+ __export(healingService_exports, {
21
+ attemptAutohealLocator: () => attemptAutohealLocator,
22
+ attemptToHaveScreenshotHealing: () => attemptToHaveScreenshotHealing,
23
+ getHealingConfig: () => getHealingConfig,
24
+ healLocator: () => healLocator,
25
+ isHealingEnabled: () => isHealingEnabled,
26
+ setHealingConfig: () => setHealingConfig
27
+ });
28
+ module.exports = __toCommonJS(healingService_exports);
29
+ var import_stepContext = require("playwright/lib/worker/stepContext");
30
+ var import_globals = require("playwright/lib/common/globals");
31
+ var import_stablyApiCaller = require("../ai-tools/stablyApiCaller");
32
+ var import_elementHandleFromCoordinates = require("./elementHandleFromCoordinates");
33
+ var import_screenshotFrame = require("./screenshotFrame");
34
+ var import_locatorGenerators = require("../../../utils/isomorphic/locatorGenerators");
35
+ var import_stablyApiCaller2 = require("../ai-tools/stablyApiCaller");
36
+ const defaultConfig = {
37
+ enabled: false,
38
+ timeout: 3e4
39
+ };
40
+ let globalHealingConfig = { ...defaultConfig };
41
+ function setHealingConfig(config) {
42
+ globalHealingConfig = { ...defaultConfig, ...config };
43
+ }
44
+ function getHealingConfig() {
45
+ return { ...globalHealingConfig };
46
+ }
47
+ function isHealingEnabled() {
48
+ return globalHealingConfig.enabled;
49
+ }
50
+ async function healLocator({
51
+ frame,
52
+ selector,
53
+ description,
54
+ actionName
55
+ }) {
56
+ if (!description) {
57
+ return {
58
+ success: false,
59
+ message: "No description provided for healing. Use .describe() to enable auto-healing."
60
+ };
61
+ }
62
+ const config = getHealingConfig();
63
+ try {
64
+ const screenshot = await (0, import_screenshotFrame.captureScreenshot)(frame);
65
+ const aiResponse = await (0, import_stablyApiCaller.callAiToAutohealLocator)({
66
+ description,
67
+ screenshot,
68
+ originalSelector: selector,
69
+ actionName,
70
+ model: config.model
71
+ });
72
+ const { coordinate, reasoning } = aiResponse;
73
+ if (!coordinate) {
74
+ return {
75
+ success: false,
76
+ message: "AI could not find a suitable element.",
77
+ description,
78
+ reasoning
79
+ };
80
+ }
81
+ const { handle, frame: elementFrame } = await (0, import_elementHandleFromCoordinates.getElementHandleFromCoordinates)(frame, [coordinate[0], coordinate[1]]);
82
+ const context = await elementFrame._mainContext();
83
+ const injectedScript = await context.injectedScript();
84
+ const elementSelector = await injectedScript.evaluate((injected, element) => {
85
+ const result = injected.generateSelector(element, {
86
+ testIdAttributeName: ""
87
+ });
88
+ return result.selector;
89
+ }, handle);
90
+ let newSelector = elementSelector;
91
+ let locatorString = (0, import_locatorGenerators.asLocator)("javascript", elementSelector);
92
+ if (elementFrame !== frame) {
93
+ try {
94
+ const frameElement = await elementFrame.frameElement();
95
+ if (frameElement) {
96
+ const parentContext = await frame._mainContext();
97
+ const parentInjectedScript = await parentContext.injectedScript();
98
+ const frameSelector = await parentInjectedScript.evaluate((injected, element) => {
99
+ const result = injected.generateSelector(element, {
100
+ testIdAttributeName: "",
101
+ omitInternalEngines: true
102
+ // omit internal engines for frame selector
103
+ });
104
+ return result.selector;
105
+ }, frameElement);
106
+ newSelector = `${frameSelector} >> internal:control=enter-frame >> ${elementSelector}`;
107
+ locatorString = `locator('${frameSelector}').contentFrame().locator('${elementSelector}')`;
108
+ await frameElement.dispose();
109
+ }
110
+ } catch {
111
+ throw new Error("Failed to get iframe selector");
112
+ }
113
+ }
114
+ await handle.dispose();
115
+ return {
116
+ success: true,
117
+ message: "AI found a suitable element for autohealing.",
118
+ newSelector,
119
+ newLocator: locatorString,
120
+ description,
121
+ reasoning
122
+ };
123
+ } catch (error) {
124
+ return {
125
+ success: false,
126
+ message: error instanceof Error ? error.message : String(error)
127
+ };
128
+ }
129
+ }
130
+ async function attemptAutohealLocator({
131
+ frame,
132
+ selector,
133
+ actionName,
134
+ error
135
+ }) {
136
+ const description = (0, import_locatorGenerators.asLocatorDescription)("javascript", selector);
137
+ if (!description)
138
+ return void 0;
139
+ const result = await healLocator({
140
+ frame,
141
+ selector,
142
+ description,
143
+ actionName
144
+ });
145
+ await saveLocatorAutohealResult({
146
+ result,
147
+ selector,
148
+ description,
149
+ actionName,
150
+ error
151
+ });
152
+ if (result.success && result.newSelector)
153
+ return result.newSelector;
154
+ return void 0;
155
+ }
156
+ async function saveLocatorAutohealResult({
157
+ result,
158
+ selector,
159
+ description,
160
+ actionName,
161
+ error
162
+ }) {
163
+ const healingDataBody = JSON.stringify({
164
+ timestampIso8601: (/* @__PURE__ */ new Date()).toISOString(),
165
+ originalSelector: selector,
166
+ description,
167
+ actionName,
168
+ originalError: error.message,
169
+ result
170
+ }, null, 2);
171
+ const stepInfoOrTestInfo = (0, import_stepContext.getCurrentStepInfo)() ?? (0, import_globals.currentTestInfo)();
172
+ stepInfoOrTestInfo?.attach("locator-autoheal-results", {
173
+ body: healingDataBody,
174
+ contentType: "application/json"
175
+ });
176
+ }
177
+ async function healToHaveScreenshot({
178
+ actualScreenshot,
179
+ expectedScreenshot
180
+ }) {
181
+ const config = getHealingConfig();
182
+ try {
183
+ return await (0, import_stablyApiCaller2.callAiToAutohealScreenshot)({
184
+ actualScreenshot,
185
+ expectedScreenshot,
186
+ model: config.model
187
+ });
188
+ } catch (error) {
189
+ return {
190
+ result: false,
191
+ errorMessage: error instanceof Error ? error.message : String(error)
192
+ };
193
+ }
194
+ }
195
+ async function attemptToHaveScreenshotHealing({
196
+ actualScreenshot,
197
+ expectedScreenshot
198
+ }) {
199
+ const { result, reason } = await healToHaveScreenshot({
200
+ actualScreenshot,
201
+ expectedScreenshot
202
+ });
203
+ await saveToHaveScreenshotAutohealResult({ result, reason });
204
+ return result;
205
+ }
206
+ async function saveToHaveScreenshotAutohealResult({
207
+ result,
208
+ reason
209
+ }) {
210
+ const healingDataBody = JSON.stringify({
211
+ reason,
212
+ result
213
+ }, null, 2);
214
+ const stepInfoOrTestInfo = (0, import_stepContext.getCurrentStepInfo)() ?? (0, import_globals.currentTestInfo)();
215
+ stepInfoOrTestInfo?.attach("toHaveScreenshot-autoheal-results", {
216
+ body: healingDataBody,
217
+ contentType: "application/json"
218
+ });
219
+ }
220
+ // Annotate the CommonJS export names for ESM import in node:
221
+ 0 && (module.exports = {
222
+ attemptAutohealLocator,
223
+ attemptToHaveScreenshotHealing,
224
+ getHealingConfig,
225
+ healLocator,
226
+ isHealingEnabled,
227
+ setHealingConfig
228
+ });
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var screenshotFrame_exports = {};
20
+ __export(screenshotFrame_exports, {
21
+ captureScreenshot: () => captureScreenshot
22
+ });
23
+ module.exports = __toCommonJS(screenshotFrame_exports);
24
+ var import_progress = require("../../progress");
25
+ async function captureScreenshot(frame) {
26
+ try {
27
+ const controller = new import_progress.ProgressController();
28
+ const screenshot = await controller.run(async (progress) => {
29
+ return await frame._page.screenshotter.screenshotPage(progress, {
30
+ type: "png"
31
+ });
32
+ }, 1e4);
33
+ return screenshot;
34
+ } catch (error) {
35
+ throw new Error(`Failed to capture screenshot: ${error instanceof Error ? error.message : String(error)}`);
36
+ }
37
+ }
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ captureScreenshot
41
+ });
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var constants_exports = {};
20
+ __export(constants_exports, {
21
+ STABLY_API_HOSTNAME: () => STABLY_API_HOSTNAME,
22
+ STABLY_API_PORT: () => STABLY_API_PORT
23
+ });
24
+ module.exports = __toCommonJS(constants_exports);
25
+ const STABLY_API_HOSTNAME = process.env.STABLY_API_HOSTNAME || "api.stably.ai";
26
+ const STABLY_API_PORT = process.env.STABLY_API_PORT || 8080;
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ STABLY_API_HOSTNAME,
30
+ STABLY_API_PORT
31
+ });
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var snapshotter_exports = {};
20
+ __export(snapshotter_exports, {
21
+ Snapshotter: () => Snapshotter
22
+ });
23
+ module.exports = __toCommonJS(snapshotter_exports);
24
+ var import_snapshotterInjected = require("./snapshotterInjected");
25
+ var import_time = require("../../../utils/isomorphic/time");
26
+ var import_crypto = require("../../utils/crypto");
27
+ var import_debugLogger = require("../../utils/debugLogger");
28
+ var import_eventsHelper = require("../../utils/eventsHelper");
29
+ var import_utilsBundle = require("../../../utilsBundle");
30
+ var import_browserContext = require("../../browserContext");
31
+ var import_page = require("../../page");
32
+ class Snapshotter {
33
+ constructor(context, delegate) {
34
+ this._eventListeners = [];
35
+ this._started = false;
36
+ this._context = context;
37
+ this._delegate = delegate;
38
+ const guid = (0, import_crypto.createGuid)();
39
+ this._snapshotStreamer = "__playwright_snapshot_streamer_" + guid;
40
+ }
41
+ started() {
42
+ return this._started;
43
+ }
44
+ async start() {
45
+ this._started = true;
46
+ if (!this._initScript)
47
+ await this._initialize();
48
+ await this.reset();
49
+ }
50
+ async reset() {
51
+ if (this._started)
52
+ await this._context.safeNonStallingEvaluateInAllFrames(`window["${this._snapshotStreamer}"].reset()`, "main");
53
+ }
54
+ stop() {
55
+ this._started = false;
56
+ }
57
+ async resetForReuse() {
58
+ if (this._initScript) {
59
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
60
+ await this._context.removeInitScripts([this._initScript]);
61
+ this._initScript = void 0;
62
+ }
63
+ }
64
+ async _initialize() {
65
+ for (const page of this._context.pages())
66
+ this._onPage(page);
67
+ this._eventListeners = [
68
+ import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.Page, this._onPage.bind(this))
69
+ ];
70
+ const { javaScriptEnabled } = this._context._options;
71
+ const initScriptSource = `(${import_snapshotterInjected.frameSnapshotStreamer})("${this._snapshotStreamer}", ${javaScriptEnabled || javaScriptEnabled === void 0})`;
72
+ this._initScript = await this._context.addInitScript(void 0, initScriptSource);
73
+ await this._context.safeNonStallingEvaluateInAllFrames(initScriptSource, "main");
74
+ }
75
+ dispose() {
76
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
77
+ }
78
+ async _captureFrameSnapshot(frame) {
79
+ const needsReset = !!frame[kNeedsResetSymbol];
80
+ frame[kNeedsResetSymbol] = false;
81
+ const expression = `window["${this._snapshotStreamer}"].captureSnapshot(${needsReset ? "true" : "false"})`;
82
+ try {
83
+ return await frame.nonStallingRawEvaluateInExistingMainContext(expression);
84
+ } catch (e) {
85
+ frame[kNeedsResetSymbol] = true;
86
+ import_debugLogger.debugLogger.log("error", e);
87
+ }
88
+ }
89
+ async captureSnapshot(page, callId, snapshotName) {
90
+ const snapshots = page.frames().map(async (frame) => {
91
+ const data = await this._captureFrameSnapshot(frame);
92
+ if (!data || !this._started)
93
+ return;
94
+ const snapshot = {
95
+ callId,
96
+ snapshotName,
97
+ pageId: page.guid,
98
+ frameId: frame.guid,
99
+ frameUrl: data.url,
100
+ doctype: data.doctype,
101
+ html: data.html,
102
+ viewport: data.viewport,
103
+ timestamp: (0, import_time.monotonicTime)(),
104
+ wallTime: data.wallTime,
105
+ collectionTime: data.collectionTime,
106
+ resourceOverrides: [],
107
+ isMainFrame: page.mainFrame() === frame
108
+ };
109
+ for (const { url, content, contentType } of data.resourceOverrides) {
110
+ if (typeof content === "string") {
111
+ const buffer = Buffer.from(content);
112
+ const sha1 = (0, import_crypto.calculateSha1)(buffer) + "." + (import_utilsBundle.mime.getExtension(contentType) || "dat");
113
+ this._delegate.onSnapshotterBlob({ sha1, buffer });
114
+ snapshot.resourceOverrides.push({ url, sha1 });
115
+ } else {
116
+ snapshot.resourceOverrides.push({ url, ref: content });
117
+ }
118
+ }
119
+ this._delegate.onFrameSnapshot(snapshot);
120
+ });
121
+ await Promise.all(snapshots);
122
+ }
123
+ _onPage(page) {
124
+ for (const frame of page.frames())
125
+ this._annotateFrameHierarchy(frame);
126
+ this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(page, import_page.Page.Events.FrameAttached, (frame) => this._annotateFrameHierarchy(frame)));
127
+ }
128
+ async _annotateFrameHierarchy(frame) {
129
+ try {
130
+ const frameElement = await frame.frameElement();
131
+ const parent = frame.parentFrame();
132
+ if (!parent)
133
+ return;
134
+ const context = await parent._mainContext();
135
+ await context?.evaluate(({ snapshotStreamer, frameElement: frameElement2, frameId }) => {
136
+ window[snapshotStreamer].markIframe(frameElement2, frameId);
137
+ }, { snapshotStreamer: this._snapshotStreamer, frameElement, frameId: frame.guid });
138
+ frameElement.dispose();
139
+ } catch (e) {
140
+ }
141
+ }
142
+ }
143
+ const kNeedsResetSymbol = Symbol("kNeedsReset");
144
+ // Annotate the CommonJS export names for ESM import in node:
145
+ 0 && (module.exports = {
146
+ Snapshotter
147
+ });