@limrun/playwright-core 1.56.1-lim.1

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 (338) hide show
  1. package/README.md +3 -0
  2. package/ThirdPartyNotices.txt +1502 -0
  3. package/bin/install_media_pack.ps1 +5 -0
  4. package/bin/install_webkit_wsl.ps1 +35 -0
  5. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  6. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  7. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  8. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  9. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  10. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  11. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  12. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  13. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  14. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  15. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  16. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  17. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  18. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  19. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  20. package/browsers.json +80 -0
  21. package/cli.js +18 -0
  22. package/index.d.ts +17 -0
  23. package/index.js +32 -0
  24. package/index.mjs +28 -0
  25. package/lib/androidServerImpl.js +65 -0
  26. package/lib/browserServerImpl.js +120 -0
  27. package/lib/cli/driver.js +97 -0
  28. package/lib/cli/program.js +633 -0
  29. package/lib/cli/programWithTestStub.js +74 -0
  30. package/lib/client/accessibility.js +49 -0
  31. package/lib/client/android.js +361 -0
  32. package/lib/client/api.js +137 -0
  33. package/lib/client/artifact.js +79 -0
  34. package/lib/client/browser.js +163 -0
  35. package/lib/client/browserContext.js +529 -0
  36. package/lib/client/browserType.js +184 -0
  37. package/lib/client/cdpSession.js +51 -0
  38. package/lib/client/channelOwner.js +194 -0
  39. package/lib/client/clientHelper.js +64 -0
  40. package/lib/client/clientInstrumentation.js +55 -0
  41. package/lib/client/clientStackTrace.js +69 -0
  42. package/lib/client/clock.js +68 -0
  43. package/lib/client/connection.js +314 -0
  44. package/lib/client/consoleMessage.js +54 -0
  45. package/lib/client/coverage.js +44 -0
  46. package/lib/client/dialog.js +56 -0
  47. package/lib/client/download.js +62 -0
  48. package/lib/client/electron.js +138 -0
  49. package/lib/client/elementHandle.js +281 -0
  50. package/lib/client/errors.js +77 -0
  51. package/lib/client/eventEmitter.js +314 -0
  52. package/lib/client/events.js +99 -0
  53. package/lib/client/fetch.js +369 -0
  54. package/lib/client/fileChooser.js +46 -0
  55. package/lib/client/fileUtils.js +34 -0
  56. package/lib/client/frame.js +408 -0
  57. package/lib/client/harRouter.js +87 -0
  58. package/lib/client/input.js +84 -0
  59. package/lib/client/jsHandle.js +109 -0
  60. package/lib/client/jsonPipe.js +39 -0
  61. package/lib/client/localUtils.js +60 -0
  62. package/lib/client/locator.js +366 -0
  63. package/lib/client/network.js +747 -0
  64. package/lib/client/page.js +721 -0
  65. package/lib/client/platform.js +74 -0
  66. package/lib/client/playwright.js +75 -0
  67. package/lib/client/selectors.js +55 -0
  68. package/lib/client/stream.js +39 -0
  69. package/lib/client/timeoutSettings.js +79 -0
  70. package/lib/client/tracing.js +117 -0
  71. package/lib/client/types.js +28 -0
  72. package/lib/client/video.js +59 -0
  73. package/lib/client/waiter.js +142 -0
  74. package/lib/client/webError.js +39 -0
  75. package/lib/client/webSocket.js +93 -0
  76. package/lib/client/worker.js +63 -0
  77. package/lib/client/writableStream.js +39 -0
  78. package/lib/generated/bindingsControllerSource.js +28 -0
  79. package/lib/generated/clockSource.js +28 -0
  80. package/lib/generated/injectedScriptSource.js +28 -0
  81. package/lib/generated/pollingRecorderSource.js +28 -0
  82. package/lib/generated/storageScriptSource.js +28 -0
  83. package/lib/generated/utilityScriptSource.js +28 -0
  84. package/lib/generated/webSocketMockSource.js +336 -0
  85. package/lib/inProcessFactory.js +62 -0
  86. package/lib/inprocess.js +3 -0
  87. package/lib/outofprocess.js +76 -0
  88. package/lib/protocol/serializers.js +192 -0
  89. package/lib/protocol/validator.js +2912 -0
  90. package/lib/protocol/validatorPrimitives.js +193 -0
  91. package/lib/remote/playwrightConnection.js +129 -0
  92. package/lib/remote/playwrightServer.js +335 -0
  93. package/lib/server/accessibility.js +69 -0
  94. package/lib/server/android/android.js +465 -0
  95. package/lib/server/android/backendAdb.js +177 -0
  96. package/lib/server/artifact.js +127 -0
  97. package/lib/server/bidi/bidiBrowser.js +490 -0
  98. package/lib/server/bidi/bidiChromium.js +153 -0
  99. package/lib/server/bidi/bidiConnection.js +212 -0
  100. package/lib/server/bidi/bidiExecutionContext.js +221 -0
  101. package/lib/server/bidi/bidiFirefox.js +130 -0
  102. package/lib/server/bidi/bidiInput.js +146 -0
  103. package/lib/server/bidi/bidiNetworkManager.js +383 -0
  104. package/lib/server/bidi/bidiOverCdp.js +102 -0
  105. package/lib/server/bidi/bidiPage.js +552 -0
  106. package/lib/server/bidi/bidiPdf.js +106 -0
  107. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  108. package/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
  109. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  110. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  111. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  112. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  113. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  114. package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  115. package/lib/server/browser.js +149 -0
  116. package/lib/server/browserContext.js +696 -0
  117. package/lib/server/browserType.js +328 -0
  118. package/lib/server/callLog.js +82 -0
  119. package/lib/server/chromium/appIcon.png +0 -0
  120. package/lib/server/chromium/chromium.js +391 -0
  121. package/lib/server/chromium/chromiumSwitches.js +95 -0
  122. package/lib/server/chromium/crAccessibility.js +263 -0
  123. package/lib/server/chromium/crBrowser.js +502 -0
  124. package/lib/server/chromium/crConnection.js +202 -0
  125. package/lib/server/chromium/crCoverage.js +235 -0
  126. package/lib/server/chromium/crDevTools.js +113 -0
  127. package/lib/server/chromium/crDragDrop.js +131 -0
  128. package/lib/server/chromium/crExecutionContext.js +146 -0
  129. package/lib/server/chromium/crInput.js +187 -0
  130. package/lib/server/chromium/crNetworkManager.js +666 -0
  131. package/lib/server/chromium/crPage.js +1069 -0
  132. package/lib/server/chromium/crPdf.js +121 -0
  133. package/lib/server/chromium/crProtocolHelper.js +145 -0
  134. package/lib/server/chromium/crServiceWorker.js +123 -0
  135. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  136. package/lib/server/chromium/protocol.d.js +16 -0
  137. package/lib/server/chromium/videoRecorder.js +113 -0
  138. package/lib/server/clock.js +149 -0
  139. package/lib/server/codegen/csharp.js +327 -0
  140. package/lib/server/codegen/java.js +274 -0
  141. package/lib/server/codegen/javascript.js +270 -0
  142. package/lib/server/codegen/jsonl.js +52 -0
  143. package/lib/server/codegen/language.js +132 -0
  144. package/lib/server/codegen/languages.js +68 -0
  145. package/lib/server/codegen/python.js +279 -0
  146. package/lib/server/codegen/types.js +16 -0
  147. package/lib/server/console.js +53 -0
  148. package/lib/server/cookieStore.js +206 -0
  149. package/lib/server/debugController.js +191 -0
  150. package/lib/server/debugger.js +119 -0
  151. package/lib/server/deviceDescriptors.js +39 -0
  152. package/lib/server/deviceDescriptorsSource.json +1779 -0
  153. package/lib/server/dialog.js +116 -0
  154. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  155. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  156. package/lib/server/dispatchers/browserContextDispatcher.js +364 -0
  157. package/lib/server/dispatchers/browserDispatcher.js +118 -0
  158. package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  159. package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  160. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  161. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  162. package/lib/server/dispatchers/dispatcher.js +371 -0
  163. package/lib/server/dispatchers/electronDispatcher.js +89 -0
  164. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  165. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  166. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  167. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  168. package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  169. package/lib/server/dispatchers/networkDispatchers.js +213 -0
  170. package/lib/server/dispatchers/pageDispatcher.js +401 -0
  171. package/lib/server/dispatchers/playwrightDispatcher.js +112 -0
  172. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  173. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  174. package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  175. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  176. package/lib/server/dom.js +806 -0
  177. package/lib/server/download.js +70 -0
  178. package/lib/server/electron/electron.js +270 -0
  179. package/lib/server/electron/loader.js +29 -0
  180. package/lib/server/errors.js +69 -0
  181. package/lib/server/fetch.js +621 -0
  182. package/lib/server/fileChooser.js +43 -0
  183. package/lib/server/fileUploadUtils.js +84 -0
  184. package/lib/server/firefox/ffAccessibility.js +238 -0
  185. package/lib/server/firefox/ffBrowser.js +428 -0
  186. package/lib/server/firefox/ffConnection.js +147 -0
  187. package/lib/server/firefox/ffExecutionContext.js +150 -0
  188. package/lib/server/firefox/ffInput.js +159 -0
  189. package/lib/server/firefox/ffNetworkManager.js +256 -0
  190. package/lib/server/firefox/ffPage.js +503 -0
  191. package/lib/server/firefox/firefox.js +105 -0
  192. package/lib/server/firefox/protocol.d.js +16 -0
  193. package/lib/server/formData.js +147 -0
  194. package/lib/server/frameSelectors.js +156 -0
  195. package/lib/server/frames.js +1448 -0
  196. package/lib/server/har/harRecorder.js +147 -0
  197. package/lib/server/har/harTracer.js +607 -0
  198. package/lib/server/harBackend.js +157 -0
  199. package/lib/server/helper.js +96 -0
  200. package/lib/server/index.js +58 -0
  201. package/lib/server/input.js +273 -0
  202. package/lib/server/instrumentation.js +69 -0
  203. package/lib/server/javascript.js +291 -0
  204. package/lib/server/launchApp.js +128 -0
  205. package/lib/server/localUtils.js +218 -0
  206. package/lib/server/macEditingCommands.js +143 -0
  207. package/lib/server/network.js +629 -0
  208. package/lib/server/page.js +870 -0
  209. package/lib/server/pipeTransport.js +89 -0
  210. package/lib/server/playwright.js +71 -0
  211. package/lib/server/progress.js +112 -0
  212. package/lib/server/protocolError.js +52 -0
  213. package/lib/server/recorder/chat.js +161 -0
  214. package/lib/server/recorder/recorderApp.js +387 -0
  215. package/lib/server/recorder/recorderRunner.js +138 -0
  216. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  217. package/lib/server/recorder/recorderUtils.js +157 -0
  218. package/lib/server/recorder/throttledFile.js +57 -0
  219. package/lib/server/recorder.js +498 -0
  220. package/lib/server/registry/browserFetcher.js +175 -0
  221. package/lib/server/registry/dependencies.js +371 -0
  222. package/lib/server/registry/index.js +1333 -0
  223. package/lib/server/registry/nativeDeps.js +1280 -0
  224. package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
  225. package/lib/server/screenshotter.js +333 -0
  226. package/lib/server/selectors.js +112 -0
  227. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  228. package/lib/server/socksInterceptor.js +95 -0
  229. package/lib/server/trace/recorder/snapshotter.js +147 -0
  230. package/lib/server/trace/recorder/snapshotterInjected.js +541 -0
  231. package/lib/server/trace/recorder/tracing.js +602 -0
  232. package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
  233. package/lib/server/trace/viewer/traceViewer.js +240 -0
  234. package/lib/server/transport.js +181 -0
  235. package/lib/server/types.js +28 -0
  236. package/lib/server/usKeyboardLayout.js +145 -0
  237. package/lib/server/utils/ascii.js +44 -0
  238. package/lib/server/utils/comparators.js +161 -0
  239. package/lib/server/utils/crypto.js +216 -0
  240. package/lib/server/utils/debug.js +42 -0
  241. package/lib/server/utils/debugLogger.js +122 -0
  242. package/lib/server/utils/env.js +73 -0
  243. package/lib/server/utils/eventsHelper.js +39 -0
  244. package/lib/server/utils/expectUtils.js +38 -0
  245. package/lib/server/utils/fileUtils.js +191 -0
  246. package/lib/server/utils/happyEyeballs.js +207 -0
  247. package/lib/server/utils/hostPlatform.js +111 -0
  248. package/lib/server/utils/httpServer.js +218 -0
  249. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  250. package/lib/server/utils/image_tools/compare.js +109 -0
  251. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  252. package/lib/server/utils/image_tools/stats.js +102 -0
  253. package/lib/server/utils/linuxUtils.js +71 -0
  254. package/lib/server/utils/network.js +227 -0
  255. package/lib/server/utils/nodePlatform.js +148 -0
  256. package/lib/server/utils/pipeTransport.js +84 -0
  257. package/lib/server/utils/processLauncher.js +241 -0
  258. package/lib/server/utils/profiler.js +65 -0
  259. package/lib/server/utils/socksProxy.js +511 -0
  260. package/lib/server/utils/spawnAsync.js +41 -0
  261. package/lib/server/utils/task.js +51 -0
  262. package/lib/server/utils/userAgent.js +98 -0
  263. package/lib/server/utils/wsServer.js +121 -0
  264. package/lib/server/utils/zipFile.js +74 -0
  265. package/lib/server/utils/zones.js +57 -0
  266. package/lib/server/webkit/protocol.d.js +16 -0
  267. package/lib/server/webkit/webkit.js +119 -0
  268. package/lib/server/webkit/wkAccessibility.js +237 -0
  269. package/lib/server/webkit/wkBrowser.js +339 -0
  270. package/lib/server/webkit/wkConnection.js +149 -0
  271. package/lib/server/webkit/wkExecutionContext.js +154 -0
  272. package/lib/server/webkit/wkInput.js +181 -0
  273. package/lib/server/webkit/wkInterceptableRequest.js +169 -0
  274. package/lib/server/webkit/wkPage.js +1134 -0
  275. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  276. package/lib/server/webkit/wkWorkers.js +104 -0
  277. package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
  278. package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
  279. package/lib/third_party/pixelmatch.js +255 -0
  280. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  281. package/lib/utils/isomorphic/assert.js +31 -0
  282. package/lib/utils/isomorphic/colors.js +72 -0
  283. package/lib/utils/isomorphic/cssParser.js +245 -0
  284. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  285. package/lib/utils/isomorphic/headers.js +53 -0
  286. package/lib/utils/isomorphic/locatorGenerators.js +673 -0
  287. package/lib/utils/isomorphic/locatorParser.js +176 -0
  288. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  289. package/lib/utils/isomorphic/manualPromise.js +114 -0
  290. package/lib/utils/isomorphic/mimeType.js +459 -0
  291. package/lib/utils/isomorphic/multimap.js +80 -0
  292. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  293. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  294. package/lib/utils/isomorphic/rtti.js +43 -0
  295. package/lib/utils/isomorphic/selectorParser.js +386 -0
  296. package/lib/utils/isomorphic/semaphore.js +54 -0
  297. package/lib/utils/isomorphic/stackTrace.js +158 -0
  298. package/lib/utils/isomorphic/stringUtils.js +155 -0
  299. package/lib/utils/isomorphic/time.js +49 -0
  300. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  301. package/lib/utils/isomorphic/traceUtils.js +58 -0
  302. package/lib/utils/isomorphic/types.js +16 -0
  303. package/lib/utils/isomorphic/urlMatch.js +176 -0
  304. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  305. package/lib/utils.js +107 -0
  306. package/lib/utilsBundle.js +109 -0
  307. package/lib/utilsBundleImpl/index.js +218 -0
  308. package/lib/utilsBundleImpl/xdg-open +1066 -0
  309. package/lib/vite/htmlReport/index.html +84 -0
  310. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
  311. package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +24 -0
  312. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  313. package/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
  314. package/lib/vite/recorder/assets/index-Y-X2TGJv.js +193 -0
  315. package/lib/vite/recorder/index.html +29 -0
  316. package/lib/vite/recorder/playwright-logo.svg +9 -0
  317. package/lib/vite/traceViewer/assets/codeMirrorModule-eyVcHN77.js +24 -0
  318. package/lib/vite/traceViewer/assets/defaultSettingsView-w0zYjHsW.js +265 -0
  319. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  320. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
  321. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  322. package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +1 -0
  323. package/lib/vite/traceViewer/index.Bx16ehp1.js +2 -0
  324. package/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
  325. package/lib/vite/traceViewer/index.html +43 -0
  326. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  327. package/lib/vite/traceViewer/snapshot.html +21 -0
  328. package/lib/vite/traceViewer/sw.bundle.js +3 -0
  329. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  330. package/lib/vite/traceViewer/uiMode.DRQ310U5.js +5 -0
  331. package/lib/vite/traceViewer/uiMode.html +17 -0
  332. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  333. package/lib/zipBundle.js +34 -0
  334. package/lib/zipBundleImpl.js +5 -0
  335. package/package.json +42 -0
  336. package/types/protocol.d.ts +23130 -0
  337. package/types/structs.d.ts +45 -0
  338. package/types/types.d.ts +22853 -0
@@ -0,0 +1,237 @@
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 wkAccessibility_exports = {};
20
+ __export(wkAccessibility_exports, {
21
+ getAccessibilityTree: () => getAccessibilityTree
22
+ });
23
+ module.exports = __toCommonJS(wkAccessibility_exports);
24
+ async function getAccessibilityTree(session, needle) {
25
+ const objectId = needle ? needle._objectId : void 0;
26
+ const { axNode } = await session.send("Page.accessibilitySnapshot", { objectId });
27
+ const tree = new WKAXNode(axNode);
28
+ return {
29
+ tree,
30
+ needle: needle ? tree._findNeedle() : null
31
+ };
32
+ }
33
+ const WKRoleToARIARole = new Map(Object.entries({
34
+ "TextField": "textbox"
35
+ }));
36
+ const WKUnhelpfulRoleDescriptions = new Map(Object.entries({
37
+ "WebArea": "HTML content",
38
+ "Summary": "summary",
39
+ "DescriptionList": "description list",
40
+ "ImageMap": "image map",
41
+ "ListMarker": "list marker",
42
+ "Video": "video playback",
43
+ "Mark": "highlighted",
44
+ "contentinfo": "content information",
45
+ "Details": "details",
46
+ "DescriptionListDetail": "description",
47
+ "DescriptionListTerm": "term",
48
+ "alertdialog": "web alert dialog",
49
+ "dialog": "web dialog",
50
+ "status": "application status",
51
+ "tabpanel": "tab panel",
52
+ "application": "web application"
53
+ }));
54
+ class WKAXNode {
55
+ constructor(payload) {
56
+ this._payload = payload;
57
+ this._children = [];
58
+ for (const payload2 of this._payload.children || [])
59
+ this._children.push(new WKAXNode(payload2));
60
+ }
61
+ children() {
62
+ return this._children;
63
+ }
64
+ _findNeedle() {
65
+ if (this._payload.found)
66
+ return this;
67
+ for (const child of this._children) {
68
+ const found = child._findNeedle();
69
+ if (found)
70
+ return found;
71
+ }
72
+ return null;
73
+ }
74
+ isControl() {
75
+ switch (this._payload.role) {
76
+ case "button":
77
+ case "checkbox":
78
+ case "ColorWell":
79
+ case "combobox":
80
+ case "DisclosureTriangle":
81
+ case "listbox":
82
+ case "menu":
83
+ case "menubar":
84
+ case "menuitem":
85
+ case "menuitemcheckbox":
86
+ case "menuitemradio":
87
+ case "radio":
88
+ case "scrollbar":
89
+ case "searchbox":
90
+ case "slider":
91
+ case "spinbutton":
92
+ case "switch":
93
+ case "tab":
94
+ case "textbox":
95
+ case "TextField":
96
+ case "tree":
97
+ return true;
98
+ default:
99
+ return false;
100
+ }
101
+ }
102
+ _isTextControl() {
103
+ switch (this._payload.role) {
104
+ case "combobox":
105
+ case "searchfield":
106
+ case "textbox":
107
+ case "TextField":
108
+ return true;
109
+ }
110
+ return false;
111
+ }
112
+ _name() {
113
+ if (this._payload.role === "text")
114
+ return this._payload.value || "";
115
+ return this._payload.name || "";
116
+ }
117
+ isInteresting(insideControl) {
118
+ const { role, focusable } = this._payload;
119
+ const name = this._name();
120
+ if (role === "ScrollArea")
121
+ return false;
122
+ if (role === "WebArea")
123
+ return true;
124
+ if (focusable || role === "MenuListOption")
125
+ return true;
126
+ if (this.isControl())
127
+ return true;
128
+ if (insideControl)
129
+ return false;
130
+ return this.isLeafNode() && !!name;
131
+ }
132
+ _hasRedundantTextChild() {
133
+ if (this._children.length !== 1)
134
+ return false;
135
+ const child = this._children[0];
136
+ return child._payload.role === "text" && this._payload.name === child._payload.value;
137
+ }
138
+ isLeafNode() {
139
+ if (!this._children.length)
140
+ return true;
141
+ if (this._isTextControl())
142
+ return true;
143
+ if (this._hasRedundantTextChild())
144
+ return true;
145
+ return false;
146
+ }
147
+ serialize() {
148
+ const node = {
149
+ role: WKRoleToARIARole.get(this._payload.role) || this._payload.role,
150
+ name: this._name()
151
+ };
152
+ if ("description" in this._payload && this._payload.description !== node.name)
153
+ node.description = this._payload.description;
154
+ if ("roledescription" in this._payload) {
155
+ const roledescription = this._payload.roledescription;
156
+ if (roledescription !== this._payload.role && WKUnhelpfulRoleDescriptions.get(this._payload.role) !== roledescription)
157
+ node.roledescription = roledescription;
158
+ }
159
+ if ("value" in this._payload && this._payload.role !== "text") {
160
+ if (typeof this._payload.value === "string")
161
+ node.valueString = this._payload.value;
162
+ else if (typeof this._payload.value === "number")
163
+ node.valueNumber = this._payload.value;
164
+ }
165
+ if ("checked" in this._payload)
166
+ node.checked = this._payload.checked === "true" ? "checked" : this._payload.checked === "false" ? "unchecked" : "mixed";
167
+ if ("pressed" in this._payload)
168
+ node.pressed = this._payload.pressed === "true" ? "pressed" : this._payload.pressed === "false" ? "released" : "mixed";
169
+ const userStringProperties = [
170
+ "keyshortcuts",
171
+ "valuetext"
172
+ ];
173
+ for (const userStringProperty of userStringProperties) {
174
+ if (!(userStringProperty in this._payload))
175
+ continue;
176
+ node[userStringProperty] = this._payload[userStringProperty];
177
+ }
178
+ const booleanProperties = [
179
+ "disabled",
180
+ "expanded",
181
+ "focused",
182
+ "modal",
183
+ "multiselectable",
184
+ "readonly",
185
+ "required",
186
+ "selected"
187
+ ];
188
+ for (const booleanProperty of booleanProperties) {
189
+ if (booleanProperty === "focused" && (this._payload.role === "WebArea" || this._payload.role === "ScrollArea"))
190
+ continue;
191
+ const value = this._payload[booleanProperty];
192
+ if (!value)
193
+ continue;
194
+ node[booleanProperty] = value;
195
+ }
196
+ const numericalProperties = [
197
+ "level",
198
+ "valuemax",
199
+ "valuemin"
200
+ ];
201
+ for (const numericalProperty of numericalProperties) {
202
+ if (!(numericalProperty in this._payload))
203
+ continue;
204
+ node[numericalProperty] = this._payload[numericalProperty];
205
+ }
206
+ const tokenProperties = [
207
+ "autocomplete",
208
+ "haspopup",
209
+ "invalid"
210
+ ];
211
+ for (const tokenProperty of tokenProperties) {
212
+ const value = this._payload[tokenProperty];
213
+ if (!value || value === "false")
214
+ continue;
215
+ node[tokenProperty] = value;
216
+ }
217
+ const orientationIsApplicable = /* @__PURE__ */ new Set([
218
+ "ScrollArea",
219
+ "scrollbar",
220
+ "listbox",
221
+ "combobox",
222
+ "menu",
223
+ "tree",
224
+ "separator",
225
+ "slider",
226
+ "tablist",
227
+ "toolbar"
228
+ ]);
229
+ if (this._payload.orientation && orientationIsApplicable.has(this._payload.role))
230
+ node.orientation = this._payload.orientation;
231
+ return node;
232
+ }
233
+ }
234
+ // Annotate the CommonJS export names for ESM import in node:
235
+ 0 && (module.exports = {
236
+ getAccessibilityTree
237
+ });
@@ -0,0 +1,339 @@
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 wkBrowser_exports = {};
30
+ __export(wkBrowser_exports, {
31
+ WKBrowser: () => WKBrowser,
32
+ WKBrowserContext: () => WKBrowserContext
33
+ });
34
+ module.exports = __toCommonJS(wkBrowser_exports);
35
+ var import_utils = require("../../utils");
36
+ var import_browser = require("../browser");
37
+ var import_browserContext = require("../browserContext");
38
+ var network = __toESM(require("../network"));
39
+ var import_wkConnection = require("./wkConnection");
40
+ var import_wkPage = require("./wkPage");
41
+ var import_errors = require("../errors");
42
+ var import_webkit = require("./webkit");
43
+ const BROWSER_VERSION = "26.0";
44
+ const DEFAULT_USER_AGENT = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/${BROWSER_VERSION} Safari/605.1.15`;
45
+ class WKBrowser extends import_browser.Browser {
46
+ constructor(parent, transport, options) {
47
+ super(parent, options);
48
+ this._contexts = /* @__PURE__ */ new Map();
49
+ this._wkPages = /* @__PURE__ */ new Map();
50
+ this._connection = new import_wkConnection.WKConnection(transport, this._onDisconnect.bind(this), options.protocolLogger, options.browserLogsCollector);
51
+ this._browserSession = this._connection.browserSession;
52
+ this._browserSession.on("Playwright.pageProxyCreated", this._onPageProxyCreated.bind(this));
53
+ this._browserSession.on("Playwright.pageProxyDestroyed", this._onPageProxyDestroyed.bind(this));
54
+ this._browserSession.on("Playwright.provisionalLoadFailed", (event) => this._onProvisionalLoadFailed(event));
55
+ this._browserSession.on("Playwright.windowOpen", (event) => this._onWindowOpen(event));
56
+ this._browserSession.on("Playwright.downloadCreated", this._onDownloadCreated.bind(this));
57
+ this._browserSession.on("Playwright.downloadFilenameSuggested", this._onDownloadFilenameSuggested.bind(this));
58
+ this._browserSession.on("Playwright.downloadFinished", this._onDownloadFinished.bind(this));
59
+ this._browserSession.on("Playwright.screencastFinished", this._onScreencastFinished.bind(this));
60
+ this._browserSession.on(import_wkConnection.kPageProxyMessageReceived, this._onPageProxyMessageReceived.bind(this));
61
+ }
62
+ static async connect(parent, transport, options) {
63
+ const browser = new WKBrowser(parent, transport, options);
64
+ if (options.__testHookOnConnectToBrowser)
65
+ await options.__testHookOnConnectToBrowser();
66
+ const promises = [
67
+ browser._browserSession.send("Playwright.enable")
68
+ ];
69
+ if (options.persistent) {
70
+ options.persistent.userAgent ||= DEFAULT_USER_AGENT;
71
+ browser._defaultContext = new WKBrowserContext(browser, void 0, options.persistent);
72
+ promises.push(browser._defaultContext._initialize());
73
+ }
74
+ await Promise.all(promises);
75
+ return browser;
76
+ }
77
+ _onDisconnect() {
78
+ for (const wkPage of this._wkPages.values())
79
+ wkPage.didClose();
80
+ this._wkPages.clear();
81
+ for (const video of this._idToVideo.values())
82
+ video.artifact.reportFinished(new import_errors.TargetClosedError());
83
+ this._idToVideo.clear();
84
+ this._didClose();
85
+ }
86
+ async doCreateNewContext(options) {
87
+ const proxy = options.proxyOverride || options.proxy;
88
+ const createOptions = proxy ? {
89
+ // Enable socks5 hostname resolution on Windows.
90
+ // See https://github.com/microsoft/playwright/issues/20451
91
+ proxyServer: process.platform === "win32" && this.attribution.browser?.options.channel !== "webkit-wsl" ? proxy.server.replace(/^socks5:\/\//, "socks5h://") : proxy.server,
92
+ proxyBypassList: proxy.bypass
93
+ } : void 0;
94
+ const { browserContextId } = await this._browserSession.send("Playwright.createContext", createOptions);
95
+ options.userAgent = options.userAgent || DEFAULT_USER_AGENT;
96
+ const context = new WKBrowserContext(this, browserContextId, options);
97
+ await context._initialize();
98
+ this._contexts.set(browserContextId, context);
99
+ return context;
100
+ }
101
+ contexts() {
102
+ return Array.from(this._contexts.values());
103
+ }
104
+ version() {
105
+ return BROWSER_VERSION;
106
+ }
107
+ userAgent() {
108
+ return DEFAULT_USER_AGENT;
109
+ }
110
+ _onDownloadCreated(payload) {
111
+ const page = this._wkPages.get(payload.pageProxyId);
112
+ if (!page)
113
+ return;
114
+ let frameId = payload.frameId;
115
+ if (!page._page.frameManager.frame(frameId))
116
+ frameId = page._page.mainFrame()._id;
117
+ page._page.frameManager.frameAbortedNavigation(frameId, "Download is starting");
118
+ let originPage = page._page.initializedOrUndefined();
119
+ if (!originPage) {
120
+ page._firstNonInitialNavigationCommittedReject(new Error("Starting new page download"));
121
+ if (page._opener)
122
+ originPage = page._opener._page.initializedOrUndefined();
123
+ }
124
+ if (!originPage)
125
+ return;
126
+ this._downloadCreated(originPage, payload.uuid, payload.url);
127
+ }
128
+ _onDownloadFilenameSuggested(payload) {
129
+ this._downloadFilenameSuggested(payload.uuid, payload.suggestedFilename);
130
+ }
131
+ _onDownloadFinished(payload) {
132
+ this._downloadFinished(payload.uuid, payload.error);
133
+ }
134
+ _onScreencastFinished(payload) {
135
+ this._takeVideo(payload.screencastId)?.reportFinished();
136
+ }
137
+ _onPageProxyCreated(event) {
138
+ const pageProxyId = event.pageProxyId;
139
+ let context = null;
140
+ if (event.browserContextId) {
141
+ context = this._contexts.get(event.browserContextId) || null;
142
+ }
143
+ if (!context)
144
+ context = this._defaultContext;
145
+ if (!context)
146
+ return;
147
+ const pageProxySession = new import_wkConnection.WKSession(this._connection, pageProxyId, (message) => {
148
+ this._connection.rawSend({ ...message, pageProxyId });
149
+ });
150
+ const opener = event.openerId ? this._wkPages.get(event.openerId) : void 0;
151
+ const wkPage = new import_wkPage.WKPage(context, pageProxySession, opener || null);
152
+ this._wkPages.set(pageProxyId, wkPage);
153
+ }
154
+ _onPageProxyDestroyed(event) {
155
+ const pageProxyId = event.pageProxyId;
156
+ const wkPage = this._wkPages.get(pageProxyId);
157
+ if (!wkPage)
158
+ return;
159
+ this._wkPages.delete(pageProxyId);
160
+ wkPage.didClose();
161
+ }
162
+ _onPageProxyMessageReceived(event) {
163
+ const wkPage = this._wkPages.get(event.pageProxyId);
164
+ if (!wkPage)
165
+ return;
166
+ wkPage.dispatchMessageToSession(event.message);
167
+ }
168
+ _onProvisionalLoadFailed(event) {
169
+ const wkPage = this._wkPages.get(event.pageProxyId);
170
+ if (!wkPage)
171
+ return;
172
+ wkPage.handleProvisionalLoadFailed(event);
173
+ }
174
+ _onWindowOpen(event) {
175
+ const wkPage = this._wkPages.get(event.pageProxyId);
176
+ if (!wkPage)
177
+ return;
178
+ wkPage.handleWindowOpen(event);
179
+ }
180
+ isConnected() {
181
+ return !this._connection.isClosed();
182
+ }
183
+ }
184
+ class WKBrowserContext extends import_browserContext.BrowserContext {
185
+ constructor(browser, browserContextId, options) {
186
+ super(browser, options, browserContextId);
187
+ this._validateEmulatedViewport(options.viewport);
188
+ this._authenticateProxyViaHeader();
189
+ }
190
+ async _initialize() {
191
+ (0, import_utils.assert)(!this._wkPages().length);
192
+ const browserContextId = this._browserContextId;
193
+ const promises = [super._initialize()];
194
+ promises.push(this._browser._browserSession.send("Playwright.setDownloadBehavior", {
195
+ behavior: this._options.acceptDownloads === "accept" ? "allow" : "deny",
196
+ downloadPath: this._browser.options.channel === "webkit-wsl" ? await (0, import_webkit.translatePathToWSL)(this._browser.options.downloadsPath) : this._browser.options.downloadsPath,
197
+ browserContextId
198
+ }));
199
+ if (this._options.ignoreHTTPSErrors || this._options.internalIgnoreHTTPSErrors)
200
+ promises.push(this._browser._browserSession.send("Playwright.setIgnoreCertificateErrors", { browserContextId, ignore: true }));
201
+ if (this._options.locale)
202
+ promises.push(this._browser._browserSession.send("Playwright.setLanguages", { browserContextId, languages: [this._options.locale] }));
203
+ if (this._options.geolocation)
204
+ promises.push(this.setGeolocation(this._options.geolocation));
205
+ if (this._options.offline)
206
+ promises.push(this.doUpdateOffline());
207
+ if (this._options.httpCredentials)
208
+ promises.push(this.setHTTPCredentials(this._options.httpCredentials));
209
+ await Promise.all(promises);
210
+ }
211
+ _wkPages() {
212
+ return Array.from(this._browser._wkPages.values()).filter((wkPage) => wkPage._browserContext === this);
213
+ }
214
+ possiblyUninitializedPages() {
215
+ return this._wkPages().map((wkPage) => wkPage._page);
216
+ }
217
+ async doCreateNewPage() {
218
+ const { pageProxyId } = await this._browser._browserSession.send("Playwright.createPage", { browserContextId: this._browserContextId });
219
+ return this._browser._wkPages.get(pageProxyId)._page;
220
+ }
221
+ async doGetCookies(urls) {
222
+ const { cookies } = await this._browser._browserSession.send("Playwright.getAllCookies", { browserContextId: this._browserContextId });
223
+ return network.filterCookies(cookies.map((c) => {
224
+ const { name, value, domain, path, expires, httpOnly, secure, sameSite } = c;
225
+ const copy = {
226
+ name,
227
+ value,
228
+ domain,
229
+ path,
230
+ expires: expires === -1 ? -1 : expires / 1e3,
231
+ httpOnly,
232
+ secure,
233
+ sameSite
234
+ };
235
+ return copy;
236
+ }), urls);
237
+ }
238
+ async addCookies(cookies) {
239
+ const cc = network.rewriteCookies(cookies).map((c) => {
240
+ const { name, value, domain, path, expires, httpOnly, secure, sameSite } = c;
241
+ const copy = {
242
+ name,
243
+ value,
244
+ domain,
245
+ path,
246
+ expires: expires && expires !== -1 ? expires * 1e3 : expires,
247
+ httpOnly,
248
+ secure,
249
+ sameSite,
250
+ session: expires === -1 || expires === void 0
251
+ };
252
+ return copy;
253
+ });
254
+ await this._browser._browserSession.send("Playwright.setCookies", { cookies: cc, browserContextId: this._browserContextId });
255
+ }
256
+ async doClearCookies() {
257
+ await this._browser._browserSession.send("Playwright.deleteAllCookies", { browserContextId: this._browserContextId });
258
+ }
259
+ async doGrantPermissions(origin, permissions) {
260
+ await Promise.all(this.pages().map((page) => page.delegate._grantPermissions(origin, permissions)));
261
+ }
262
+ async doClearPermissions() {
263
+ await Promise.all(this.pages().map((page) => page.delegate._clearPermissions()));
264
+ }
265
+ async setGeolocation(geolocation) {
266
+ (0, import_browserContext.verifyGeolocation)(geolocation);
267
+ this._options.geolocation = geolocation;
268
+ const payload = geolocation ? { ...geolocation, timestamp: Date.now() } : void 0;
269
+ await this._browser._browserSession.send("Playwright.setGeolocationOverride", { browserContextId: this._browserContextId, geolocation: payload });
270
+ }
271
+ async doUpdateExtraHTTPHeaders() {
272
+ for (const page of this.pages())
273
+ await page.delegate.updateExtraHTTPHeaders();
274
+ }
275
+ async setUserAgent(userAgent) {
276
+ this._options.userAgent = userAgent;
277
+ for (const page of this.pages())
278
+ await page.delegate.updateUserAgent();
279
+ }
280
+ async doUpdateOffline() {
281
+ for (const page of this.pages())
282
+ await page.delegate.updateOffline();
283
+ }
284
+ async doSetHTTPCredentials(httpCredentials) {
285
+ this._options.httpCredentials = httpCredentials;
286
+ for (const page of this.pages())
287
+ await page.delegate.updateHttpCredentials();
288
+ }
289
+ async doAddInitScript(initScript) {
290
+ for (const page of this.pages())
291
+ await page.delegate._updateBootstrapScript();
292
+ }
293
+ async doRemoveInitScripts(initScripts) {
294
+ for (const page of this.pages())
295
+ await page.delegate._updateBootstrapScript();
296
+ }
297
+ async doUpdateRequestInterception() {
298
+ for (const page of this.pages())
299
+ await page.delegate.updateRequestInterception();
300
+ }
301
+ async doUpdateDefaultViewport() {
302
+ }
303
+ async doUpdateDefaultEmulatedMedia() {
304
+ }
305
+ async doExposePlaywrightBinding() {
306
+ for (const page of this.pages())
307
+ await page.delegate.exposePlaywrightBinding();
308
+ }
309
+ onClosePersistent() {
310
+ }
311
+ async clearCache() {
312
+ await this._browser._browserSession.send("Playwright.clearMemoryCache", {
313
+ browserContextId: this._browserContextId
314
+ });
315
+ }
316
+ async doClose(reason) {
317
+ if (!this._browserContextId) {
318
+ await Promise.all(this._wkPages().map((wkPage) => wkPage._stopVideo()));
319
+ await this._browser.close({ reason });
320
+ } else {
321
+ await this._browser._browserSession.send("Playwright.deleteContext", { browserContextId: this._browserContextId });
322
+ this._browser._contexts.delete(this._browserContextId);
323
+ }
324
+ }
325
+ async cancelDownload(uuid) {
326
+ await this._browser._browserSession.send("Playwright.cancelDownload", { uuid });
327
+ }
328
+ _validateEmulatedViewport(viewportSize) {
329
+ if (!viewportSize)
330
+ return;
331
+ if (process.platform === "win32" && this._browser.options.headful && (viewportSize.width < 250 || viewportSize.height < 240))
332
+ throw new Error(`WebKit on Windows has a minimal viewport of 250x240.`);
333
+ }
334
+ }
335
+ // Annotate the CommonJS export names for ESM import in node:
336
+ 0 && (module.exports = {
337
+ WKBrowser,
338
+ WKBrowserContext
339
+ });