rebrowser-playwright-core 1.49.0 → 1.52.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 (373) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/bin/reinstall_msedge_beta_linux.sh +6 -0
  3. package/bin/reinstall_msedge_dev_linux.sh +6 -0
  4. package/bin/reinstall_msedge_stable_linux.sh +6 -0
  5. package/browsers.json +28 -13
  6. package/index.js +0 -1
  7. package/lib/androidServerImpl.js +42 -48
  8. package/lib/browserServerImpl.js +60 -64
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +314 -354
  11. package/lib/cli/programWithTestStub.js +51 -44
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +146 -254
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -39
  16. package/lib/client/browser.js +59 -68
  17. package/lib/client/browserContext.js +302 -322
  18. package/lib/client/browserType.js +95 -143
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +109 -139
  21. package/lib/client/clientHelper.js +49 -42
  22. package/lib/client/clientInstrumentation.js +40 -35
  23. package/lib/client/clientStackTrace.js +69 -0
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +203 -218
  26. package/lib/client/consoleMessage.js +33 -33
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +74 -76
  31. package/lib/client/elementHandle.js +126 -163
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +127 -127
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +154 -178
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +34 -0
  38. package/lib/client/frame.js +189 -307
  39. package/lib/client/harRouter.js +44 -56
  40. package/lib/client/input.js +40 -69
  41. package/lib/client/jsHandle.js +55 -71
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +53 -28
  44. package/lib/client/locator.js +144 -230
  45. package/lib/client/network.js +285 -301
  46. package/lib/client/page.js +273 -312
  47. package/lib/client/platform.js +74 -0
  48. package/lib/client/playwright.js +62 -57
  49. package/lib/client/selectors.js +51 -43
  50. package/lib/client/stream.js +30 -45
  51. package/lib/client/timeoutSettings.js +75 -0
  52. package/lib/client/tracing.js +49 -82
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +71 -91
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +111 -0
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +28 -43
  60. package/lib/generated/clockSource.js +26 -5
  61. package/lib/generated/consoleApiSource.js +26 -5
  62. package/lib/generated/injectedScriptSource.js +26 -5
  63. package/lib/generated/pollingRecorderSource.js +26 -5
  64. package/lib/generated/utilityScriptSource.js +26 -5
  65. package/lib/generated/webSocketMockSource.js +375 -4
  66. package/lib/inProcessFactory.js +53 -48
  67. package/lib/inprocess.js +2 -19
  68. package/lib/outofprocess.js +53 -42
  69. package/lib/protocol/debug.js +209 -25
  70. package/lib/protocol/serializers.js +153 -134
  71. package/lib/protocol/validator.js +2712 -2667
  72. package/lib/protocol/validatorPrimitives.js +115 -75
  73. package/lib/remote/playwrightConnection.js +144 -152
  74. package/lib/remote/playwrightServer.js +106 -77
  75. package/lib/server/accessibility.js +44 -37
  76. package/lib/server/android/android.js +216 -206
  77. package/lib/server/android/backendAdb.js +89 -82
  78. package/lib/server/artifact.js +78 -55
  79. package/lib/server/bidi/bidiBrowser.js +227 -158
  80. package/lib/server/bidi/bidiChromium.js +106 -78
  81. package/lib/server/bidi/bidiConnection.js +66 -83
  82. package/lib/server/bidi/bidiExecutionContext.js +161 -97
  83. package/lib/server/bidi/bidiFirefox.js +76 -68
  84. package/lib/server/bidi/bidiInput.js +90 -102
  85. package/lib/server/bidi/bidiNetworkManager.js +141 -159
  86. package/lib/server/bidi/bidiOverCdp.js +57 -58
  87. package/lib/server/bidi/bidiPage.js +262 -261
  88. package/lib/server/bidi/bidiPdf.js +52 -86
  89. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  90. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  91. package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
  92. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  93. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  94. package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
  95. package/lib/server/browser.js +76 -84
  96. package/lib/server/browserContext.js +343 -360
  97. package/lib/server/browserType.js +169 -181
  98. package/lib/server/callLog.js +82 -0
  99. package/lib/server/chromium/chromium.js +212 -190
  100. package/lib/server/chromium/chromiumSwitches.js +99 -44
  101. package/lib/server/chromium/crAccessibility.js +157 -131
  102. package/lib/server/chromium/crBrowser.js +262 -280
  103. package/lib/server/chromium/crConnection.js +121 -178
  104. package/lib/server/chromium/crCoverage.js +113 -127
  105. package/lib/server/chromium/crDevTools.js +64 -55
  106. package/lib/server/chromium/crDragDrop.js +62 -79
  107. package/lib/server/chromium/crExecutionContext.js +100 -91
  108. package/lib/server/chromium/crInput.js +101 -88
  109. package/lib/server/chromium/crNetworkManager.js +269 -370
  110. package/lib/server/chromium/crPage.js +509 -595
  111. package/lib/server/chromium/crPdf.js +54 -86
  112. package/lib/server/chromium/crProtocolHelper.js +92 -80
  113. package/lib/server/chromium/crServiceWorker.js +85 -69
  114. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  115. package/lib/server/chromium/protocol.d.js +16 -0
  116. package/lib/server/chromium/videoRecorder.js +65 -99
  117. package/lib/server/clock.js +58 -46
  118. package/lib/server/codegen/csharp.js +191 -156
  119. package/lib/server/codegen/java.js +163 -125
  120. package/lib/server/codegen/javascript.js +166 -143
  121. package/lib/server/codegen/jsonl.js +33 -29
  122. package/lib/server/codegen/language.js +75 -52
  123. package/lib/server/codegen/languages.js +65 -27
  124. package/lib/server/codegen/python.js +141 -125
  125. package/lib/server/codegen/types.js +15 -4
  126. package/lib/server/console.js +28 -32
  127. package/lib/server/cookieStore.js +105 -86
  128. package/lib/server/debugController.js +102 -154
  129. package/lib/server/debugger.js +82 -78
  130. package/lib/server/deviceDescriptors.js +37 -24
  131. package/lib/server/deviceDescriptorsSource.json +131 -131
  132. package/lib/server/dialog.js +36 -35
  133. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  134. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  135. package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
  136. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  137. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  138. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  139. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
  140. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  141. package/lib/server/dispatchers/dispatcher.js +180 -229
  142. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  143. package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
  144. package/lib/server/dispatchers/frameDispatcher.js +93 -162
  145. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  146. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  147. package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
  148. package/lib/server/dispatchers/networkDispatchers.js +92 -109
  149. package/lib/server/dispatchers/pageDispatcher.js +130 -169
  150. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  151. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  152. package/lib/server/dispatchers/streamDispatcher.js +42 -44
  153. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  154. package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
  155. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
  156. package/lib/server/dom.js +424 -443
  157. package/lib/server/download.js +45 -35
  158. package/lib/server/electron/electron.js +156 -175
  159. package/lib/server/electron/loader.js +8 -36
  160. package/lib/server/errors.js +47 -46
  161. package/lib/server/fetch.js +302 -331
  162. package/lib/server/fileChooser.js +25 -24
  163. package/lib/server/fileUploadUtils.js +66 -57
  164. package/lib/server/firefox/ffAccessibility.js +153 -131
  165. package/lib/server/firefox/ffBrowser.js +218 -274
  166. package/lib/server/firefox/ffConnection.js +63 -84
  167. package/lib/server/firefox/ffExecutionContext.js +103 -77
  168. package/lib/server/firefox/ffInput.js +72 -63
  169. package/lib/server/firefox/ffNetworkManager.js +131 -110
  170. package/lib/server/firefox/ffPage.js +244 -302
  171. package/lib/server/firefox/firefox.js +76 -69
  172. package/lib/server/firefox/protocol.d.js +16 -0
  173. package/lib/server/formData.js +107 -35
  174. package/lib/server/frameSelectors.js +77 -111
  175. package/lib/server/frames.js +719 -855
  176. package/lib/server/har/harRecorder.js +85 -77
  177. package/lib/server/har/harTracer.js +288 -224
  178. package/lib/server/harBackend.js +157 -0
  179. package/lib/server/helper.js +56 -59
  180. package/lib/server/index.js +59 -106
  181. package/lib/server/input.js +136 -166
  182. package/lib/server/instrumentation.js +49 -44
  183. package/lib/server/javascript.js +157 -151
  184. package/lib/server/launchApp.js +92 -73
  185. package/lib/server/localUtils.js +211 -0
  186. package/lib/server/macEditingCommands.js +141 -137
  187. package/lib/server/network.js +263 -297
  188. package/lib/server/page.js +353 -432
  189. package/lib/server/pageBinding.js +88 -0
  190. package/lib/server/pipeTransport.js +49 -45
  191. package/lib/server/playwright.js +60 -67
  192. package/lib/server/progress.js +56 -51
  193. package/lib/server/protocolError.js +34 -31
  194. package/lib/server/recorder/chat.js +161 -0
  195. package/lib/server/recorder/contextRecorder.js +135 -148
  196. package/lib/server/recorder/recorderApp.js +129 -132
  197. package/lib/server/recorder/recorderCollection.js +57 -57
  198. package/lib/server/recorder/recorderFrontend.js +15 -4
  199. package/lib/server/recorder/recorderRunner.js +80 -100
  200. package/lib/server/recorder/recorderUtils.js +59 -72
  201. package/lib/server/recorder/throttledFile.js +42 -31
  202. package/lib/server/recorder.js +186 -190
  203. package/lib/server/registry/browserFetcher.js +107 -100
  204. package/lib/server/registry/dependencies.js +247 -198
  205. package/lib/server/registry/index.js +928 -709
  206. package/lib/server/registry/nativeDeps.js +1073 -461
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +166 -182
  209. package/lib/server/selectors.js +85 -46
  210. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  211. package/lib/server/socksInterceptor.js +62 -67
  212. package/lib/server/storageScript.js +154 -0
  213. package/lib/server/timeoutSettings.js +89 -0
  214. package/lib/server/trace/recorder/snapshotter.js +70 -88
  215. package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
  216. package/lib/server/trace/recorder/tracing.js +324 -327
  217. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  218. package/lib/server/trace/viewer/traceViewer.js +172 -137
  219. package/lib/server/transport.js +125 -133
  220. package/lib/server/types.js +26 -22
  221. package/lib/server/usKeyboardLayout.js +135 -545
  222. package/lib/server/utils/ascii.js +44 -0
  223. package/lib/server/utils/comparators.js +161 -0
  224. package/lib/server/utils/crypto.js +216 -0
  225. package/lib/server/utils/debug.js +47 -0
  226. package/lib/server/utils/debugLogger.js +114 -0
  227. package/lib/server/utils/env.js +68 -0
  228. package/lib/server/utils/eventsHelper.js +39 -0
  229. package/lib/server/utils/expectUtils.js +38 -0
  230. package/lib/server/utils/fileUtils.js +191 -0
  231. package/lib/server/utils/happyEyeballs.js +207 -0
  232. package/lib/server/utils/hostPlatform.js +109 -0
  233. package/lib/server/utils/httpServer.js +218 -0
  234. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  235. package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
  236. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  237. package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
  238. package/lib/server/utils/linuxUtils.js +71 -0
  239. package/lib/server/utils/network.js +217 -0
  240. package/lib/server/utils/nodePlatform.js +148 -0
  241. package/lib/server/utils/pipeTransport.js +84 -0
  242. package/lib/server/utils/processLauncher.js +238 -0
  243. package/lib/server/utils/profiler.js +65 -0
  244. package/lib/server/utils/socksProxy.js +511 -0
  245. package/lib/server/utils/spawnAsync.js +41 -0
  246. package/lib/server/utils/task.js +51 -0
  247. package/lib/server/utils/userAgent.js +98 -0
  248. package/lib/server/utils/wsServer.js +132 -0
  249. package/lib/server/utils/zipFile.js +74 -0
  250. package/lib/server/utils/zones.js +57 -0
  251. package/lib/server/webkit/protocol.d.js +16 -0
  252. package/lib/server/webkit/webkit.js +76 -63
  253. package/lib/server/webkit/wkAccessibility.js +161 -118
  254. package/lib/server/webkit/wkBrowser.js +163 -180
  255. package/lib/server/webkit/wkConnection.js +59 -83
  256. package/lib/server/webkit/wkExecutionContext.js +96 -73
  257. package/lib/server/webkit/wkInput.js +87 -75
  258. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  259. package/lib/server/webkit/wkPage.js +536 -645
  260. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  261. package/lib/server/webkit/wkWorkers.js +77 -77
  262. package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
  263. package/lib/utils/isomorphic/assert.js +31 -0
  264. package/lib/utils/isomorphic/builtins.js +90 -0
  265. package/lib/utils/isomorphic/colors.js +72 -0
  266. package/lib/utils/isomorphic/cssParser.js +123 -127
  267. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  268. package/lib/utils/isomorphic/headers.js +53 -0
  269. package/lib/utils/isomorphic/locatorGenerators.js +344 -349
  270. package/lib/utils/isomorphic/locatorParser.js +103 -106
  271. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  272. package/lib/utils/isomorphic/manualPromise.js +115 -0
  273. package/lib/utils/isomorphic/mimeType.js +453 -22
  274. package/lib/utils/isomorphic/multimap.js +81 -0
  275. package/lib/utils/isomorphic/rtti.js +43 -0
  276. package/lib/utils/isomorphic/selectorParser.js +183 -193
  277. package/lib/utils/isomorphic/semaphore.js +54 -0
  278. package/lib/utils/isomorphic/stackTrace.js +158 -0
  279. package/lib/utils/isomorphic/stringUtils.js +113 -106
  280. package/lib/utils/isomorphic/time.js +44 -0
  281. package/lib/utils/isomorphic/timeoutRunner.js +67 -0
  282. package/lib/utils/isomorphic/traceUtils.js +52 -32
  283. package/lib/utils/isomorphic/types.js +16 -0
  284. package/lib/utils/isomorphic/urlMatch.js +114 -71
  285. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  286. package/lib/utils.js +101 -0
  287. package/lib/utilsBundle.js +101 -76
  288. package/lib/utilsBundleImpl/index.js +114 -116
  289. package/lib/vite/htmlReport/index.html +26 -20
  290. package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
  291. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  292. package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
  293. package/lib/vite/recorder/index.html +2 -2
  294. package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
  295. package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
  296. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  297. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
  298. package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
  299. package/lib/vite/traceViewer/index.html +4 -7
  300. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  301. package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
  302. package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
  303. package/lib/vite/traceViewer/uiMode.html +4 -7
  304. package/lib/zipBundle.js +32 -23
  305. package/lib/zipBundleImpl.js +4 -4
  306. package/package.json +7 -7
  307. package/types/protocol.d.ts +819 -127
  308. package/types/types.d.ts +196 -75
  309. package/bin/PrintDeps.exe +0 -0
  310. package/bin/README.md +0 -2
  311. package/lib/common/socksProxy.js +0 -569
  312. package/lib/common/timeoutSettings.js +0 -73
  313. package/lib/common/types.js +0 -5
  314. package/lib/image_tools/colorUtils.js +0 -98
  315. package/lib/image_tools/imageChannel.js +0 -70
  316. package/lib/protocol/transport.js +0 -82
  317. package/lib/server/ariaSnapshot.js +0 -33
  318. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
  319. package/lib/server/recorder/recorderInTraceViewer.js +0 -144
  320. package/lib/utils/ascii.js +0 -31
  321. package/lib/utils/comparators.js +0 -153
  322. package/lib/utils/crypto.js +0 -171
  323. package/lib/utils/debug.js +0 -46
  324. package/lib/utils/debugLogger.js +0 -91
  325. package/lib/utils/env.js +0 -49
  326. package/lib/utils/eventsHelper.js +0 -38
  327. package/lib/utils/expectUtils.js +0 -33
  328. package/lib/utils/fileUtils.js +0 -205
  329. package/lib/utils/happy-eyeballs.js +0 -194
  330. package/lib/utils/headers.js +0 -52
  331. package/lib/utils/hostPlatform.js +0 -139
  332. package/lib/utils/httpServer.js +0 -237
  333. package/lib/utils/index.js +0 -368
  334. package/lib/utils/isomorphic/recorderUtils.js +0 -227
  335. package/lib/utils/linuxUtils.js +0 -78
  336. package/lib/utils/manualPromise.js +0 -109
  337. package/lib/utils/multimap.js +0 -75
  338. package/lib/utils/network.js +0 -160
  339. package/lib/utils/processLauncher.js +0 -248
  340. package/lib/utils/profiler.js +0 -53
  341. package/lib/utils/rtti.js +0 -44
  342. package/lib/utils/semaphore.js +0 -51
  343. package/lib/utils/sequence.js +0 -64
  344. package/lib/utils/spawnAsync.js +0 -45
  345. package/lib/utils/stackTrace.js +0 -134
  346. package/lib/utils/task.js +0 -58
  347. package/lib/utils/time.js +0 -37
  348. package/lib/utils/timeoutRunner.js +0 -66
  349. package/lib/utils/traceUtils.js +0 -44
  350. package/lib/utils/userAgent.js +0 -105
  351. package/lib/utils/wsServer.js +0 -127
  352. package/lib/utils/zipFile.js +0 -75
  353. package/lib/utils/zones.js +0 -71
  354. package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
  355. package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
  356. package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
  357. package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
  358. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  359. package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
  360. package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
  363. package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
  364. package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
  365. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  366. package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
  367. package/lib/vite/traceViewer/recorder.html +0 -17
  368. package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
  369. package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
  370. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  371. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  372. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  373. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -1,161 +1,125 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var android_exports = {};
20
+ __export(android_exports, {
21
+ Android: () => Android,
22
+ AndroidDevice: () => AndroidDevice,
23
+ AndroidInput: () => AndroidInput,
24
+ AndroidSocket: () => AndroidSocket,
25
+ AndroidWebView: () => AndroidWebView
5
26
  });
6
- exports.AndroidWebView = exports.AndroidSocket = exports.AndroidInput = exports.AndroidDevice = exports.Android = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _utils = require("../utils");
9
- var _events = require("./events");
10
- var _browserContext = require("./browserContext");
11
- var _channelOwner = require("./channelOwner");
12
- var _timeoutSettings = require("../common/timeoutSettings");
13
- var _waiter = require("./waiter");
14
- var _events2 = require("events");
15
- var _connection = require("./connection");
16
- var _errors = require("./errors");
17
- var _timeoutRunner = require("../utils/timeoutRunner");
18
- let _Symbol$asyncDispose;
19
- /**
20
- * Copyright (c) Microsoft Corporation.
21
- *
22
- * Licensed under the Apache License, Version 2.0 (the "License");
23
- * you may not use this file except in compliance with the License.
24
- * You may obtain a copy of the License at
25
- *
26
- * http://www.apache.org/licenses/LICENSE-2.0
27
- *
28
- * Unless required by applicable law or agreed to in writing, software
29
- * distributed under the License is distributed on an "AS IS" BASIS,
30
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31
- * See the License for the specific language governing permissions and
32
- * limitations under the License.
33
- */
34
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
- class Android extends _channelOwner.ChannelOwner {
27
+ module.exports = __toCommonJS(android_exports);
28
+ var import_eventEmitter = require("./eventEmitter");
29
+ var import_browserContext = require("./browserContext");
30
+ var import_channelOwner = require("./channelOwner");
31
+ var import_errors = require("./errors");
32
+ var import_events = require("./events");
33
+ var import_waiter = require("./waiter");
34
+ var import_timeoutSettings = require("./timeoutSettings");
35
+ var import_rtti = require("../utils/isomorphic/rtti");
36
+ var import_time = require("../utils/isomorphic/time");
37
+ var import_timeoutRunner = require("../utils/isomorphic/timeoutRunner");
38
+ var import_webSocket = require("./webSocket");
39
+ class Android extends import_channelOwner.ChannelOwner {
36
40
  static from(android) {
37
41
  return android._object;
38
42
  }
39
43
  constructor(parent, type, guid, initializer) {
40
44
  super(parent, type, guid, initializer);
41
- this._timeoutSettings = void 0;
42
- this._serverLauncher = void 0;
43
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
45
+ this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(this._platform);
44
46
  }
45
47
  setDefaultTimeout(timeout) {
46
48
  this._timeoutSettings.setDefaultTimeout(timeout);
47
- this._channel.setDefaultTimeoutNoReply({
48
- timeout
49
+ this._wrapApiCall(async () => {
50
+ await this._channel.setDefaultTimeoutNoReply({ timeout });
51
+ }, true).catch(() => {
49
52
  });
50
53
  }
51
54
  async devices(options = {}) {
52
- const {
53
- devices
54
- } = await this._channel.devices(options);
55
- return devices.map(d => AndroidDevice.from(d));
55
+ const { devices } = await this._channel.devices(options);
56
+ return devices.map((d) => AndroidDevice.from(d));
56
57
  }
57
58
  async launchServer(options = {}) {
58
- if (!this._serverLauncher) throw new Error('Launching server is not supported');
59
+ if (!this._serverLauncher)
60
+ throw new Error("Launching server is not supported");
59
61
  return await this._serverLauncher.launchServer(options);
60
62
  }
61
63
  async connect(wsEndpoint, options = {}) {
62
64
  return await this._wrapApiCall(async () => {
63
- const deadline = options.timeout ? (0, _utils.monotonicTime)() + options.timeout : 0;
64
- const headers = {
65
- 'x-playwright-browser': 'android',
66
- ...options.headers
67
- };
68
- const localUtils = this._connection.localUtils();
69
- const connectParams = {
70
- wsEndpoint,
71
- headers,
72
- slowMo: options.slowMo,
73
- timeout: options.timeout
74
- };
75
- const {
76
- pipe
77
- } = await localUtils._channel.connect(connectParams);
78
- const closePipe = () => pipe.close().catch(() => {});
79
- const connection = new _connection.Connection(localUtils, this._instrumentation);
80
- connection.markAsRemote();
81
- connection.on('close', closePipe);
65
+ const deadline = options.timeout ? (0, import_time.monotonicTime)() + options.timeout : 0;
66
+ const headers = { "x-playwright-browser": "android", ...options.headers };
67
+ const connectParams = { wsEndpoint, headers, slowMo: options.slowMo, timeout: options.timeout };
68
+ const connection = await (0, import_webSocket.connectOverWebSocket)(this._connection, connectParams);
82
69
  let device;
83
- let closeError;
84
- const onPipeClosed = () => {
85
- var _device;
86
- (_device = device) === null || _device === void 0 || _device._didClose();
87
- connection.close(closeError);
88
- };
89
- pipe.on('closed', onPipeClosed);
90
- connection.onmessage = message => pipe.send({
91
- message
92
- }).catch(onPipeClosed);
93
- pipe.on('message', ({
94
- message
95
- }) => {
96
- try {
97
- connection.dispatch(message);
98
- } catch (e) {
99
- closeError = String(e);
100
- closePipe();
101
- }
70
+ connection.on("close", () => {
71
+ device?._didClose();
102
72
  });
103
- const result = await (0, _timeoutRunner.raceAgainstDeadline)(async () => {
73
+ const result = await (0, import_timeoutRunner.raceAgainstDeadline)(async () => {
104
74
  const playwright = await connection.initializePlaywright();
105
75
  if (!playwright._initializer.preConnectedAndroidDevice) {
106
- closePipe();
107
- throw new Error('Malformed endpoint. Did you use Android.launchServer method?');
76
+ connection.close();
77
+ throw new Error("Malformed endpoint. Did you use Android.launchServer method?");
108
78
  }
109
79
  device = AndroidDevice.from(playwright._initializer.preConnectedAndroidDevice);
110
80
  device._shouldCloseConnectionOnClose = true;
111
- device.on(_events.Events.AndroidDevice.Close, closePipe);
81
+ device.on(import_events.Events.AndroidDevice.Close, () => connection.close());
112
82
  return device;
113
83
  }, deadline);
114
84
  if (!result.timedOut) {
115
85
  return result.result;
116
86
  } else {
117
- closePipe();
87
+ connection.close();
118
88
  throw new Error(`Timeout ${options.timeout}ms exceeded`);
119
89
  }
120
90
  });
121
91
  }
122
92
  }
123
- exports.Android = Android;
124
- _Symbol$asyncDispose = Symbol.asyncDispose;
125
- class AndroidDevice extends _channelOwner.ChannelOwner {
126
- static from(androidDevice) {
127
- return androidDevice._object;
128
- }
93
+ class AndroidDevice extends import_channelOwner.ChannelOwner {
129
94
  constructor(parent, type, guid, initializer) {
130
95
  super(parent, type, guid, initializer);
131
- this._timeoutSettings = void 0;
132
- this._webViews = new Map();
96
+ this._webViews = /* @__PURE__ */ new Map();
133
97
  this._shouldCloseConnectionOnClose = false;
134
- this.input = void 0;
135
98
  this.input = new AndroidInput(this);
136
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings(parent._timeoutSettings);
137
- this._channel.on('webViewAdded', ({
138
- webView
139
- }) => this._onWebViewAdded(webView));
140
- this._channel.on('webViewRemoved', ({
141
- socketName
142
- }) => this._onWebViewRemoved(socketName));
143
- this._channel.on('close', () => this._didClose());
99
+ this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(this._platform, parent._timeoutSettings);
100
+ this._channel.on("webViewAdded", ({ webView }) => this._onWebViewAdded(webView));
101
+ this._channel.on("webViewRemoved", ({ socketName }) => this._onWebViewRemoved(socketName));
102
+ this._channel.on("close", () => this._didClose());
103
+ }
104
+ static from(androidDevice) {
105
+ return androidDevice._object;
144
106
  }
145
107
  _onWebViewAdded(webView) {
146
108
  const view = new AndroidWebView(this, webView);
147
109
  this._webViews.set(webView.socketName, view);
148
- this.emit(_events.Events.AndroidDevice.WebView, view);
110
+ this.emit(import_events.Events.AndroidDevice.WebView, view);
149
111
  }
150
112
  _onWebViewRemoved(socketName) {
151
113
  const view = this._webViews.get(socketName);
152
114
  this._webViews.delete(socketName);
153
- if (view) view.emit(_events.Events.AndroidWebView.Close);
115
+ if (view)
116
+ view.emit(import_events.Events.AndroidWebView.Close);
154
117
  }
155
118
  setDefaultTimeout(timeout) {
156
119
  this._timeoutSettings.setDefaultTimeout(timeout);
157
- this._channel.setDefaultTimeoutNoReply({
158
- timeout
120
+ this._wrapApiCall(async () => {
121
+ await this._channel.setDefaultTimeoutNoReply({ timeout });
122
+ }, true).catch(() => {
159
123
  });
160
124
  }
161
125
  serial() {
@@ -168,179 +132,124 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
168
132
  return [...this._webViews.values()];
169
133
  }
170
134
  async webView(selector, options) {
171
- const predicate = v => {
172
- if (selector.pkg) return v.pkg() === selector.pkg;
173
- if (selector.socketName) return v._socketName() === selector.socketName;
135
+ const predicate = (v) => {
136
+ if (selector.pkg)
137
+ return v.pkg() === selector.pkg;
138
+ if (selector.socketName)
139
+ return v._socketName() === selector.socketName;
174
140
  return false;
175
141
  };
176
142
  const webView = [...this._webViews.values()].find(predicate);
177
- if (webView) return webView;
178
- return await this.waitForEvent('webview', {
179
- ...options,
180
- predicate
181
- });
143
+ if (webView)
144
+ return webView;
145
+ return await this.waitForEvent("webview", { ...options, predicate });
182
146
  }
183
147
  async wait(selector, options) {
184
- await this._channel.wait({
185
- selector: toSelectorChannel(selector),
186
- ...options
187
- });
148
+ await this._channel.wait({ selector: toSelectorChannel(selector), ...options });
188
149
  }
189
150
  async fill(selector, text, options) {
190
- await this._channel.fill({
191
- selector: toSelectorChannel(selector),
192
- text,
193
- ...options
194
- });
151
+ await this._channel.fill({ selector: toSelectorChannel(selector), text, ...options });
195
152
  }
196
153
  async press(selector, key, options) {
197
154
  await this.tap(selector, options);
198
155
  await this.input.press(key);
199
156
  }
200
157
  async tap(selector, options) {
201
- await this._channel.tap({
202
- selector: toSelectorChannel(selector),
203
- ...options
204
- });
158
+ await this._channel.tap({ selector: toSelectorChannel(selector), ...options });
205
159
  }
206
160
  async drag(selector, dest, options) {
207
- await this._channel.drag({
208
- selector: toSelectorChannel(selector),
209
- dest,
210
- ...options
211
- });
161
+ await this._channel.drag({ selector: toSelectorChannel(selector), dest, ...options });
212
162
  }
213
163
  async fling(selector, direction, options) {
214
- await this._channel.fling({
215
- selector: toSelectorChannel(selector),
216
- direction,
217
- ...options
218
- });
164
+ await this._channel.fling({ selector: toSelectorChannel(selector), direction, ...options });
219
165
  }
220
166
  async longTap(selector, options) {
221
- await this._channel.longTap({
222
- selector: toSelectorChannel(selector),
223
- ...options
224
- });
167
+ await this._channel.longTap({ selector: toSelectorChannel(selector), ...options });
225
168
  }
226
169
  async pinchClose(selector, percent, options) {
227
- await this._channel.pinchClose({
228
- selector: toSelectorChannel(selector),
229
- percent,
230
- ...options
231
- });
170
+ await this._channel.pinchClose({ selector: toSelectorChannel(selector), percent, ...options });
232
171
  }
233
172
  async pinchOpen(selector, percent, options) {
234
- await this._channel.pinchOpen({
235
- selector: toSelectorChannel(selector),
236
- percent,
237
- ...options
238
- });
173
+ await this._channel.pinchOpen({ selector: toSelectorChannel(selector), percent, ...options });
239
174
  }
240
175
  async scroll(selector, direction, percent, options) {
241
- await this._channel.scroll({
242
- selector: toSelectorChannel(selector),
243
- direction,
244
- percent,
245
- ...options
246
- });
176
+ await this._channel.scroll({ selector: toSelectorChannel(selector), direction, percent, ...options });
247
177
  }
248
178
  async swipe(selector, direction, percent, options) {
249
- await this._channel.swipe({
250
- selector: toSelectorChannel(selector),
251
- direction,
252
- percent,
253
- ...options
254
- });
179
+ await this._channel.swipe({ selector: toSelectorChannel(selector), direction, percent, ...options });
255
180
  }
256
181
  async info(selector) {
257
- return (await this._channel.info({
258
- selector: toSelectorChannel(selector)
259
- })).info;
182
+ return (await this._channel.info({ selector: toSelectorChannel(selector) })).info;
260
183
  }
261
184
  async screenshot(options = {}) {
262
- const {
263
- binary
264
- } = await this._channel.screenshot();
265
- if (options.path) await _fs.default.promises.writeFile(options.path, binary);
185
+ const { binary } = await this._channel.screenshot();
186
+ if (options.path)
187
+ await this._platform.fs().promises.writeFile(options.path, binary);
266
188
  return binary;
267
189
  }
268
- async [_Symbol$asyncDispose]() {
190
+ async [Symbol.asyncDispose]() {
269
191
  await this.close();
270
192
  }
271
193
  async close() {
272
194
  try {
273
- if (this._shouldCloseConnectionOnClose) this._connection.close();else await this._channel.close();
195
+ if (this._shouldCloseConnectionOnClose)
196
+ this._connection.close();
197
+ else
198
+ await this._channel.close();
274
199
  } catch (e) {
275
- if ((0, _errors.isTargetClosedError)(e)) return;
200
+ if ((0, import_errors.isTargetClosedError)(e))
201
+ return;
276
202
  throw e;
277
203
  }
278
204
  }
279
205
  _didClose() {
280
- this.emit(_events.Events.AndroidDevice.Close, this);
206
+ this.emit(import_events.Events.AndroidDevice.Close, this);
281
207
  }
282
208
  async shell(command) {
283
- const {
284
- result
285
- } = await this._channel.shell({
286
- command
287
- });
209
+ const { result } = await this._channel.shell({ command });
288
210
  return result;
289
211
  }
290
212
  async open(command) {
291
- return AndroidSocket.from((await this._channel.open({
292
- command
293
- })).socket);
213
+ return AndroidSocket.from((await this._channel.open({ command })).socket);
294
214
  }
295
215
  async installApk(file, options) {
296
- await this._channel.installApk({
297
- file: await loadFile(file),
298
- args: options && options.args
299
- });
216
+ await this._channel.installApk({ file: await loadFile(this._platform, file), args: options && options.args });
300
217
  }
301
218
  async push(file, path, options) {
302
- await this._channel.push({
303
- file: await loadFile(file),
304
- path,
305
- mode: options ? options.mode : undefined
306
- });
219
+ await this._channel.push({ file: await loadFile(this._platform, file), path, mode: options ? options.mode : void 0 });
307
220
  }
308
221
  async launchBrowser(options = {}) {
309
- const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(options);
222
+ const contextOptions = await (0, import_browserContext.prepareBrowserContextParams)(this._platform, options);
310
223
  const result = await this._channel.launchBrowser(contextOptions);
311
- const context = _browserContext.BrowserContext.from(result.context);
224
+ const context = import_browserContext.BrowserContext.from(result.context);
312
225
  context._setOptions(contextOptions, {});
313
226
  return context;
314
227
  }
315
228
  async waitForEvent(event, optionsOrPredicate = {}) {
316
229
  return await this._wrapApiCall(async () => {
317
- const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
318
- const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
319
- const waiter = _waiter.Waiter.createForEvent(this, event);
230
+ const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
231
+ const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
232
+ const waiter = import_waiter.Waiter.createForEvent(this, event);
320
233
  waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
321
- if (event !== _events.Events.AndroidDevice.Close) waiter.rejectOnEvent(this, _events.Events.AndroidDevice.Close, () => new _errors.TargetClosedError());
234
+ if (event !== import_events.Events.AndroidDevice.Close)
235
+ waiter.rejectOnEvent(this, import_events.Events.AndroidDevice.Close, () => new import_errors.TargetClosedError());
322
236
  const result = await waiter.waitForEvent(this, event, predicate);
323
237
  waiter.dispose();
324
238
  return result;
325
239
  });
326
240
  }
327
241
  }
328
- exports.AndroidDevice = AndroidDevice;
329
- class AndroidSocket extends _channelOwner.ChannelOwner {
242
+ class AndroidSocket extends import_channelOwner.ChannelOwner {
330
243
  static from(androidDevice) {
331
244
  return androidDevice._object;
332
245
  }
333
246
  constructor(parent, type, guid, initializer) {
334
247
  super(parent, type, guid, initializer);
335
- this._channel.on('data', ({
336
- data
337
- }) => this.emit(_events.Events.AndroidSocket.Data, data));
338
- this._channel.on('close', () => this.emit(_events.Events.AndroidSocket.Close));
248
+ this._channel.on("data", ({ data }) => this.emit(import_events.Events.AndroidSocket.Data, data));
249
+ this._channel.on("close", () => this.emit(import_events.Events.AndroidSocket.Close));
339
250
  }
340
251
  async write(data) {
341
- await this._channel.write({
342
- data
343
- });
252
+ await this._channel.write({ data });
344
253
  }
345
254
  async close() {
346
255
  await this._channel.close();
@@ -349,46 +258,31 @@ class AndroidSocket extends _channelOwner.ChannelOwner {
349
258
  await this.close();
350
259
  }
351
260
  }
352
- exports.AndroidSocket = AndroidSocket;
353
- async function loadFile(file) {
354
- if ((0, _utils.isString)(file)) return await _fs.default.promises.readFile(file);
261
+ async function loadFile(platform, file) {
262
+ if ((0, import_rtti.isString)(file))
263
+ return await platform.fs().promises.readFile(file);
355
264
  return file;
356
265
  }
357
266
  class AndroidInput {
358
267
  constructor(device) {
359
- this._device = void 0;
360
268
  this._device = device;
361
269
  }
362
270
  async type(text) {
363
- await this._device._channel.inputType({
364
- text
365
- });
271
+ await this._device._channel.inputType({ text });
366
272
  }
367
273
  async press(key) {
368
- await this._device._channel.inputPress({
369
- key
370
- });
274
+ await this._device._channel.inputPress({ key });
371
275
  }
372
276
  async tap(point) {
373
- await this._device._channel.inputTap({
374
- point
375
- });
277
+ await this._device._channel.inputTap({ point });
376
278
  }
377
279
  async swipe(from, segments, steps) {
378
- await this._device._channel.inputSwipe({
379
- segments,
380
- steps
381
- });
280
+ await this._device._channel.inputSwipe({ segments, steps });
382
281
  }
383
282
  async drag(from, to, steps) {
384
- await this._device._channel.inputDrag({
385
- from,
386
- to,
387
- steps
388
- });
283
+ await this._device._channel.inputDrag({ from, to, steps });
389
284
  }
390
285
  }
391
- exports.AndroidInput = AndroidInput;
392
286
  function toSelectorChannel(selector) {
393
287
  const {
394
288
  checkable,
@@ -409,10 +303,12 @@ function toSelectorChannel(selector) {
409
303
  selected,
410
304
  text
411
305
  } = selector;
412
- const toRegex = value => {
413
- if (value === undefined) return undefined;
414
- if ((0, _utils.isRegExp)(value)) return value.source;
415
- return '^' + value.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d') + '$';
306
+ const toRegex = (value) => {
307
+ if (value === void 0)
308
+ return void 0;
309
+ if ((0, import_rtti.isRegExp)(value))
310
+ return value.source;
311
+ return "^" + value.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d") + "$";
416
312
  };
417
313
  return {
418
314
  checkable,
@@ -427,24 +323,16 @@ function toSelectorChannel(selector) {
427
323
  enabled,
428
324
  focusable,
429
325
  focused,
430
- hasChild: hasChild ? {
431
- selector: toSelectorChannel(hasChild.selector)
432
- } : undefined,
433
- hasDescendant: hasDescendant ? {
434
- selector: toSelectorChannel(hasDescendant.selector),
435
- maxDepth: hasDescendant.maxDepth
436
- } : undefined,
326
+ hasChild: hasChild ? { selector: toSelectorChannel(hasChild.selector) } : void 0,
327
+ hasDescendant: hasDescendant ? { selector: toSelectorChannel(hasDescendant.selector), maxDepth: hasDescendant.maxDepth } : void 0,
437
328
  longClickable,
438
329
  scrollable,
439
330
  selected
440
331
  };
441
332
  }
442
- class AndroidWebView extends _events2.EventEmitter {
333
+ class AndroidWebView extends import_eventEmitter.EventEmitter {
443
334
  constructor(device, data) {
444
- super();
445
- this._device = void 0;
446
- this._data = void 0;
447
- this._pagePromise = void 0;
335
+ super(device._platform);
448
336
  this._device = device;
449
337
  this._data = data;
450
338
  }
@@ -458,16 +346,20 @@ class AndroidWebView extends _events2.EventEmitter {
458
346
  return this._data.socketName;
459
347
  }
460
348
  async page() {
461
- if (!this._pagePromise) this._pagePromise = this._fetchPage();
349
+ if (!this._pagePromise)
350
+ this._pagePromise = this._fetchPage();
462
351
  return await this._pagePromise;
463
352
  }
464
353
  async _fetchPage() {
465
- const {
466
- context
467
- } = await this._device._channel.connectToWebView({
468
- socketName: this._data.socketName
469
- });
470
- return _browserContext.BrowserContext.from(context).pages()[0];
354
+ const { context } = await this._device._channel.connectToWebView({ socketName: this._data.socketName });
355
+ return import_browserContext.BrowserContext.from(context).pages()[0];
471
356
  }
472
357
  }
473
- exports.AndroidWebView = AndroidWebView;
358
+ // Annotate the CommonJS export names for ESM import in node:
359
+ 0 && (module.exports = {
360
+ Android,
361
+ AndroidDevice,
362
+ AndroidInput,
363
+ AndroidSocket,
364
+ AndroidWebView
365
+ });