@checkly/playwright-core 1.48.22 → 1.51.11-beta.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 (307) hide show
  1. package/ThirdPartyNotices.txt +60 -48
  2. package/bin/reinstall_chrome_beta_linux.sh +10 -8
  3. package/bin/reinstall_chrome_stable_linux.sh +10 -8
  4. package/bin/reinstall_msedge_beta_linux.sh +17 -9
  5. package/bin/reinstall_msedge_dev_linux.sh +17 -9
  6. package/bin/reinstall_msedge_stable_linux.sh +17 -9
  7. package/browsers.json +33 -12
  8. package/index.js +0 -1
  9. package/lib/androidServerImpl.js +5 -5
  10. package/lib/browserServerImpl.js +18 -9
  11. package/lib/checkly/secretsFilter.js +1 -1
  12. package/lib/cli/driver.js +6 -6
  13. package/lib/cli/program.js +38 -43
  14. package/lib/cli/programWithTestStub.js +2 -1
  15. package/lib/client/android.js +37 -58
  16. package/lib/client/artifact.js +4 -7
  17. package/lib/client/browser.js +10 -15
  18. package/lib/client/browserContext.js +69 -62
  19. package/lib/client/browserType.js +30 -64
  20. package/lib/client/channelOwner.js +53 -68
  21. package/lib/client/clientHelper.js +4 -6
  22. package/lib/client/clientInstrumentation.js +2 -0
  23. package/lib/client/clientStackTrace.js +65 -0
  24. package/lib/client/connection.js +48 -41
  25. package/lib/client/consoleMessage.js +4 -7
  26. package/lib/client/electron.js +10 -10
  27. package/lib/client/elementHandle.js +32 -33
  28. package/lib/client/errors.js +2 -2
  29. package/lib/client/eventEmitter.js +5 -8
  30. package/lib/client/fetch.js +61 -62
  31. package/lib/client/fileUtils.js +31 -0
  32. package/lib/client/frame.js +22 -23
  33. package/lib/client/harRouter.js +7 -9
  34. package/lib/client/jsHandle.js +3 -4
  35. package/lib/client/localUtils.js +24 -0
  36. package/lib/client/locator.js +27 -13
  37. package/lib/client/network.js +44 -37
  38. package/lib/client/page.js +50 -41
  39. package/lib/client/platform.js +71 -0
  40. package/lib/client/playwright.js +21 -1
  41. package/lib/client/selectors.js +8 -2
  42. package/lib/client/stream.js +2 -21
  43. package/lib/client/timeoutSettings.js +65 -0
  44. package/lib/client/tracing.js +29 -7
  45. package/lib/client/video.js +2 -2
  46. package/lib/client/waiter.js +19 -16
  47. package/lib/client/webSocket.js +106 -0
  48. package/lib/client/worker.js +4 -4
  49. package/lib/client/writableStream.js +2 -21
  50. package/lib/generated/consoleApiSource.js +1 -1
  51. package/lib/generated/injectedScriptSource.js +1 -1
  52. package/lib/generated/pollingRecorderSource.js +1 -1
  53. package/lib/generated/recorderSource.js +7 -0
  54. package/lib/generated/webSocketMockSource.js +1 -1
  55. package/lib/inProcessFactory.js +8 -3
  56. package/lib/outofprocess.js +12 -8
  57. package/lib/protocol/debug.js +1 -1
  58. package/lib/protocol/validator.js +77 -11
  59. package/lib/protocol/validatorPrimitives.js +1 -2
  60. package/lib/remote/playwrightConnection.js +21 -12
  61. package/lib/remote/playwrightServer.js +22 -8
  62. package/lib/server/android/android.js +17 -14
  63. package/lib/server/android/backendAdb.js +14 -14
  64. package/lib/server/artifact.js +3 -3
  65. package/lib/server/bidi/bidiBrowser.js +11 -8
  66. package/lib/server/bidi/bidiChromium.js +5 -4
  67. package/lib/server/bidi/bidiConnection.js +1 -3
  68. package/lib/server/bidi/bidiExecutionContext.js +71 -25
  69. package/lib/server/bidi/bidiFirefox.js +4 -3
  70. package/lib/server/bidi/bidiInput.js +11 -12
  71. package/lib/server/bidi/bidiNetworkManager.js +11 -12
  72. package/lib/server/bidi/bidiOverCdp.js +2 -2
  73. package/lib/server/bidi/bidiPage.js +39 -66
  74. package/lib/server/bidi/third_party/bidiKeyboard.js +9 -7
  75. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  76. package/lib/server/browser.js +2 -2
  77. package/lib/server/browserContext.js +60 -55
  78. package/lib/server/browserType.js +22 -18
  79. package/lib/server/callLog.js +79 -0
  80. package/lib/server/chromium/chromium.js +20 -16
  81. package/lib/server/chromium/chromiumSwitches.js +32 -9
  82. package/lib/server/chromium/crBrowser.js +25 -24
  83. package/lib/server/chromium/crConnection.js +2 -2
  84. package/lib/server/chromium/crCoverage.js +1 -1
  85. package/lib/server/chromium/crDevTools.js +1 -1
  86. package/lib/server/chromium/crDragDrop.js +1 -1
  87. package/lib/server/chromium/crExecutionContext.js +26 -35
  88. package/lib/server/chromium/crInput.js +17 -6
  89. package/lib/server/chromium/crNetworkManager.js +3 -3
  90. package/lib/server/chromium/crPage.js +43 -55
  91. package/lib/server/chromium/crPdf.js +1 -1
  92. package/lib/server/chromium/crProtocolHelper.js +3 -3
  93. package/lib/server/chromium/crServiceWorker.js +2 -2
  94. package/lib/server/chromium/videoRecorder.js +2 -2
  95. package/lib/server/clock.js +1 -1
  96. package/lib/server/codegen/csharp.js +21 -16
  97. package/lib/server/codegen/java.js +17 -9
  98. package/lib/server/codegen/javascript.js +37 -7
  99. package/lib/server/codegen/jsonl.js +1 -1
  100. package/lib/server/codegen/languages.js +2 -2
  101. package/lib/server/codegen/python.js +14 -17
  102. package/lib/server/debugController.js +23 -45
  103. package/lib/server/debugger.js +1 -1
  104. package/lib/server/deviceDescriptors.js +1 -1
  105. package/lib/server/deviceDescriptorsSource.json +131 -131
  106. package/lib/server/dispatchers/androidDispatcher.js +14 -3
  107. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  108. package/lib/server/dispatchers/browserContextDispatcher.js +21 -32
  109. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  110. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  111. package/lib/server/dispatchers/debugControllerDispatcher.js +5 -3
  112. package/lib/server/dispatchers/dispatcher.js +27 -25
  113. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  114. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  115. package/lib/server/dispatchers/frameDispatcher.js +9 -3
  116. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  117. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -291
  118. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  119. package/lib/server/dispatchers/pageDispatcher.js +10 -8
  120. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  121. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  122. package/lib/server/dispatchers/tracingDispatcher.js +10 -0
  123. package/lib/server/dispatchers/webSocketRouteDispatcher.js +18 -18
  124. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  125. package/lib/server/dom.js +102 -48
  126. package/lib/server/download.js +1 -1
  127. package/lib/server/electron/electron.js +17 -16
  128. package/lib/server/errors.js +1 -1
  129. package/lib/server/fetch.js +49 -33
  130. package/lib/server/fileUploadUtils.js +7 -4
  131. package/lib/server/firefox/ffBrowser.js +17 -9
  132. package/lib/server/firefox/ffConnection.js +1 -1
  133. package/lib/server/firefox/ffExecutionContext.js +25 -29
  134. package/lib/server/firefox/ffInput.js +15 -4
  135. package/lib/server/firefox/ffNetworkManager.js +3 -3
  136. package/lib/server/firefox/ffPage.js +29 -50
  137. package/lib/server/firefox/firefox.js +7 -9
  138. package/lib/server/frameSelectors.js +1 -1
  139. package/lib/server/frames.js +65 -55
  140. package/lib/server/har/harRecorder.js +4 -4
  141. package/lib/server/har/harTracer.js +8 -9
  142. package/lib/server/harBackend.js +157 -0
  143. package/lib/server/helper.js +2 -2
  144. package/lib/server/index.js +1 -14
  145. package/lib/server/input.js +3 -4
  146. package/lib/server/instrumentation.js +2 -2
  147. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  148. package/lib/server/javascript.js +26 -33
  149. package/lib/server/launchApp.js +7 -7
  150. package/lib/server/localUtils.js +203 -0
  151. package/lib/server/network.js +5 -5
  152. package/lib/server/page.js +76 -37
  153. package/lib/server/pipeTransport.js +1 -1
  154. package/lib/server/playwright.js +5 -5
  155. package/lib/server/progress.js +1 -4
  156. package/lib/server/protocolError.js +1 -1
  157. package/lib/server/recorder/chat.js +177 -0
  158. package/lib/server/recorder/codeGenerator.js +154 -0
  159. package/lib/server/recorder/contextRecorder.js +9 -18
  160. package/lib/server/recorder/csharp.js +311 -0
  161. package/lib/server/recorder/java.js +249 -0
  162. package/lib/server/recorder/javascript.js +230 -0
  163. package/lib/server/recorder/jsonl.js +48 -0
  164. package/lib/server/recorder/language.js +45 -0
  165. package/lib/server/recorder/python.js +276 -0
  166. package/lib/server/recorder/recorderActions.js +6 -0
  167. package/lib/server/recorder/recorderApp.js +25 -28
  168. package/lib/server/recorder/recorderCollection.js +9 -21
  169. package/lib/server/recorder/recorderInTraceViewer.js +1 -1
  170. package/lib/server/recorder/recorderRunner.js +7 -3
  171. package/lib/server/recorder/recorderUtils.js +5 -28
  172. package/lib/server/recorder/throttledFile.js +3 -4
  173. package/lib/server/recorder/utils.js +46 -0
  174. package/lib/server/recorder.js +83 -43
  175. package/lib/server/registry/browserFetcher.js +10 -8
  176. package/lib/server/registry/dependencies.js +20 -20
  177. package/lib/server/registry/index.js +215 -61
  178. package/lib/server/registry/nativeDeps.js +10 -4
  179. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  180. package/lib/server/screenshotter.js +1 -1
  181. package/lib/server/selectors.js +3 -3
  182. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  183. package/lib/server/socksInterceptor.js +8 -5
  184. package/lib/server/storageScript.js +160 -0
  185. package/lib/server/timeoutSettings.js +74 -0
  186. package/lib/server/trace/recorder/snapshotter.js +10 -20
  187. package/lib/server/trace/recorder/snapshotterInjected.js +26 -1
  188. package/lib/server/trace/recorder/tracing.js +108 -45
  189. package/lib/server/trace/test/inMemorySnapshotter.js +6 -6
  190. package/lib/server/trace/viewer/traceViewer.js +21 -7
  191. package/lib/server/transport.js +3 -2
  192. package/lib/server/utils/ascii.js +31 -0
  193. package/lib/server/utils/comparators.js +159 -0
  194. package/lib/server/utils/crypto.js +171 -0
  195. package/lib/server/utils/debug.js +38 -0
  196. package/lib/server/utils/debugLogger.js +93 -0
  197. package/lib/server/utils/env.js +53 -0
  198. package/lib/server/utils/eventsHelper.js +38 -0
  199. package/lib/server/utils/expectUtils.js +33 -0
  200. package/lib/server/utils/fileUtils.js +204 -0
  201. package/lib/server/utils/happyEyeballs.js +207 -0
  202. package/lib/server/utils/hostPlatform.js +145 -0
  203. package/lib/server/utils/httpServer.js +233 -0
  204. package/lib/server/utils/image_tools/colorUtils.js +98 -0
  205. package/lib/server/utils/image_tools/compare.js +108 -0
  206. package/lib/server/utils/image_tools/imageChannel.js +70 -0
  207. package/lib/server/utils/image_tools/stats.js +102 -0
  208. package/lib/server/utils/linuxUtils.js +58 -0
  209. package/lib/server/utils/network.js +160 -0
  210. package/lib/server/utils/nodePlatform.js +140 -0
  211. package/lib/server/utils/pipeTransport.js +82 -0
  212. package/lib/server/utils/processLauncher.js +248 -0
  213. package/lib/server/utils/profiler.js +52 -0
  214. package/lib/server/utils/socksProxy.js +570 -0
  215. package/lib/server/utils/spawnAsync.js +45 -0
  216. package/lib/server/utils/task.js +58 -0
  217. package/lib/server/utils/userAgent.js +91 -0
  218. package/lib/server/utils/wsServer.js +128 -0
  219. package/lib/server/utils/zipFile.js +75 -0
  220. package/lib/server/utils/zones.js +54 -0
  221. package/lib/server/webkit/webkit.js +4 -4
  222. package/lib/server/webkit/wkBrowser.js +10 -10
  223. package/lib/server/webkit/wkConnection.js +1 -1
  224. package/lib/server/webkit/wkExecutionContext.js +26 -30
  225. package/lib/server/webkit/wkInput.js +17 -7
  226. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  227. package/lib/server/webkit/wkPage.js +80 -66
  228. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  229. package/lib/server/webkit/wkWorkers.js +2 -2
  230. package/lib/utils/fileUtils.js +1 -1
  231. package/lib/utils/glob.js +84 -0
  232. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  233. package/lib/utils/isomorphic/assert.js +25 -0
  234. package/lib/utils/isomorphic/colors.js +65 -0
  235. package/lib/utils/isomorphic/cssParser.js +5 -5
  236. package/lib/utils/isomorphic/headers.js +52 -0
  237. package/lib/utils/isomorphic/locatorGenerators.js +38 -8
  238. package/lib/utils/isomorphic/locatorParser.js +19 -13
  239. package/lib/utils/isomorphic/manualPromise.js +107 -0
  240. package/lib/utils/isomorphic/mimeType.js +11 -3
  241. package/lib/utils/isomorphic/multimap.js +73 -0
  242. package/lib/utils/isomorphic/rtti.js +41 -0
  243. package/lib/utils/isomorphic/semaphore.js +51 -0
  244. package/lib/utils/isomorphic/stackTrace.js +169 -0
  245. package/lib/utils/isomorphic/stringUtils.js +31 -1
  246. package/lib/utils/isomorphic/time.js +25 -0
  247. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  248. package/lib/utils/isomorphic/traceUtils.js +23 -0
  249. package/lib/utils/isomorphic/types.js +5 -0
  250. package/lib/utils/isomorphic/urlMatch.js +7 -5
  251. package/lib/utils/mimeType.js +30 -0
  252. package/lib/utils/stackTrace.js +1 -1
  253. package/lib/utils.js +447 -0
  254. package/lib/utilsBundle.js +4 -29
  255. package/lib/utilsBundleImpl/index.js +188 -33
  256. package/lib/vite/htmlReport/index.html +20 -17
  257. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  258. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  259. package/lib/vite/recorder/assets/{index-BW-aOBcL.css → index-eHBmevrY.css} +1 -1
  260. package/lib/vite/recorder/index.html +2 -2
  261. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +24 -0
  262. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +1 -0
  263. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +235 -0
  264. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +25 -0
  265. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  266. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +1 -0
  267. package/lib/vite/traceViewer/{embedded.BkvOrz5Z.js → embedded.DpNPH6mk.js} +2 -2
  268. package/lib/vite/traceViewer/embedded.html +6 -6
  269. package/lib/vite/traceViewer/index.CuE3SYGw.js +2 -0
  270. package/lib/vite/traceViewer/index.html +27 -9
  271. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +1 -0
  272. package/lib/vite/traceViewer/{recorder.DNMfnSiu.js → recorder.BD-uZJs7.js} +2 -2
  273. package/lib/vite/traceViewer/recorder.html +4 -4
  274. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  275. package/lib/vite/traceViewer/{uiMode.CAYqod-m.css → uiMode.BatfzHMG.css} +1 -1
  276. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +5 -0
  277. package/lib/vite/traceViewer/uiMode.html +8 -7
  278. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +1 -0
  279. package/lib/zipBundleImpl.js +4 -4
  280. package/package.json +7 -7
  281. package/types/protocol.d.ts +820 -153
  282. package/types/types.d.ts +285 -82
  283. package/bin/PrintDeps.exe +0 -0
  284. package/bin/README.md +0 -2
  285. package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +0 -24
  286. package/lib/vite/recorder/assets/index-Bxxcmxlu.js +0 -42
  287. package/lib/vite/traceViewer/assets/codeMirrorModule-pBPtArIT.js +0 -24
  288. package/lib/vite/traceViewer/assets/codeMirrorModule-tzBrK1V4.js +0 -24
  289. package/lib/vite/traceViewer/assets/inspectorTab-BuJ3wAX_.js +0 -64
  290. package/lib/vite/traceViewer/assets/inspectorTab-Soeeuvzv.js +0 -64
  291. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  292. package/lib/vite/traceViewer/assets/workbench-DdmJ9AJV.js +0 -9
  293. package/lib/vite/traceViewer/assets/workbench-lypYlf00.js +0 -9
  294. package/lib/vite/traceViewer/embedded.DInvAijy.js +0 -2
  295. package/lib/vite/traceViewer/index.Dha3cgqs.js +0 -2
  296. package/lib/vite/traceViewer/index._Iolt-uE.js +0 -2
  297. package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +0 -1
  298. package/lib/vite/traceViewer/recorder.DTSaNaly.js +0 -2
  299. package/lib/vite/traceViewer/uiMode.BM7yhjzl.js +0 -5
  300. package/lib/vite/traceViewer/uiMode.Cr1tvTWS.js +0 -5
  301. package/lib/vite/traceViewer/workbench.DlsCx8k5.css +0 -1
  302. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  303. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  304. /package/lib/vite/traceViewer/{embedded.w7WN2u1R.css → embedded.mLhjB5IF.css} +0 -0
  305. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  306. /package/lib/vite/traceViewer/{recorder.B_SY1GJM.css → recorder.tn0RQdqM.css} +0 -0
  307. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -5,22 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Frame = void 0;
7
7
  exports.verifyLoadState = verifyLoadState;
8
- var _utils = require("../utils");
8
+ var _eventEmitter = require("./eventEmitter");
9
9
  var _channelOwner = require("./channelOwner");
10
- var _locator = require("./locator");
11
- var _locatorUtils = require("../utils/isomorphic/locatorUtils");
10
+ var _clientHelper = require("./clientHelper");
12
11
  var _elementHandle = require("./elementHandle");
12
+ var _events = require("./events");
13
13
  var _jsHandle = require("./jsHandle");
14
- var _fs = _interopRequireDefault(require("fs"));
14
+ var _locator = require("./locator");
15
15
  var network = _interopRequireWildcard(require("./network"));
16
- var _events = require("events");
17
- var _waiter = require("./waiter");
18
- var _events2 = require("./events");
19
16
  var _types = require("./types");
20
- var _clientHelper = require("./clientHelper");
17
+ var _waiter = require("./waiter");
18
+ var _assert = require("../utils/isomorphic/assert");
19
+ var _locatorUtils = require("../utils/isomorphic/locatorUtils");
20
+ var _urlMatch = require("../utils/isomorphic/urlMatch");
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
23
  /**
25
24
  * Copyright 2017 Google Inc. All rights reserved.
26
25
  * Modifications copyright (c) Microsoft Corporation.
@@ -55,7 +54,7 @@ class Frame extends _channelOwner.ChannelOwner {
55
54
  this._detached = false;
56
55
  this._childFrames = new Set();
57
56
  this._page = void 0;
58
- this._eventEmitter = new _events.EventEmitter();
57
+ this._eventEmitter = new _eventEmitter.EventEmitter(parent._platform);
59
58
  this._eventEmitter.setMaxListeners(0);
60
59
  this._parentFrame = Frame.fromNullable(initializer.parentFrame);
61
60
  if (this._parentFrame) this._parentFrame._childFrames.add(this);
@@ -68,14 +67,14 @@ class Frame extends _channelOwner.ChannelOwner {
68
67
  this._eventEmitter.emit('loadstate', event.add);
69
68
  }
70
69
  if (event.remove) this._loadStates.delete(event.remove);
71
- if (!this._parentFrame && event.add === 'load' && this._page) this._page.emit(_events2.Events.Page.Load, this._page);
72
- if (!this._parentFrame && event.add === 'domcontentloaded' && this._page) this._page.emit(_events2.Events.Page.DOMContentLoaded, this._page);
70
+ if (!this._parentFrame && event.add === 'load' && this._page) this._page.emit(_events.Events.Page.Load, this._page);
71
+ if (!this._parentFrame && event.add === 'domcontentloaded' && this._page) this._page.emit(_events.Events.Page.DOMContentLoaded, this._page);
73
72
  });
74
73
  this._channel.on('navigated', event => {
75
74
  this._url = event.url;
76
75
  this._name = event.name;
77
76
  this._eventEmitter.emit('navigated', event);
78
- if (!event.error && this._page) this._page.emit(_events2.Events.Page.FrameNavigated, this);
77
+ if (!event.error && this._page) this._page.emit(_events.Events.Page.FrameNavigated, this);
79
78
  });
80
79
  }
81
80
  page() {
@@ -92,9 +91,9 @@ class Frame extends _channelOwner.ChannelOwner {
92
91
  _setupNavigationWaiter(options) {
93
92
  const waiter = new _waiter.Waiter(this._page, '');
94
93
  if (this._page.isClosed()) waiter.rejectImmediately(this._page._closeErrorWithReason());
95
- waiter.rejectOnEvent(this._page, _events2.Events.Page.Close, () => this._page._closeErrorWithReason());
96
- waiter.rejectOnEvent(this._page, _events2.Events.Page.Crash, new Error('Navigation failed because page crashed!'));
97
- waiter.rejectOnEvent(this._page, _events2.Events.Page.FrameDetached, new Error('Navigating frame was detached!'), frame => frame === this);
94
+ waiter.rejectOnEvent(this._page, _events.Events.Page.Close, () => this._page._closeErrorWithReason());
95
+ waiter.rejectOnEvent(this._page, _events.Events.Page.Crash, new Error('Navigation failed because page crashed!'));
96
+ waiter.rejectOnEvent(this._page, _events.Events.Page.FrameDetached, new Error('Navigating frame was detached!'), frame => frame === this);
98
97
  const timeout = this._page._timeoutSettings.navigationTimeout(options);
99
98
  waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded.`);
100
99
  return waiter;
@@ -110,7 +109,7 @@ class Frame extends _channelOwner.ChannelOwner {
110
109
  // Any failed navigation results in a rejection.
111
110
  if (event.error) return true;
112
111
  waiter.log(` navigated to "${event.url}"`);
113
- return (0, _utils.urlMatches)((_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page.context()._options.baseURL, event.url, options.url);
112
+ return (0, _urlMatch.urlMatches)((_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page.context()._options.baseURL, event.url, options.url);
114
113
  });
115
114
  if (navigatedEvent.error) {
116
115
  const e = new Error(navigatedEvent.error);
@@ -146,7 +145,7 @@ class Frame extends _channelOwner.ChannelOwner {
146
145
  }
147
146
  async waitForURL(url, options = {}) {
148
147
  var _this$_page2;
149
- if ((0, _utils.urlMatches)((_this$_page2 = this._page) === null || _this$_page2 === void 0 ? void 0 : _this$_page2.context()._options.baseURL, this.url(), url)) return await this.waitForLoadState(options.waitUntil, options);
148
+ if ((0, _urlMatch.urlMatches)((_this$_page2 = this._page) === null || _this$_page2 === void 0 ? void 0 : _this$_page2.context()._options.baseURL, this.url(), url)) return await this.waitForLoadState(options.waitUntil, options);
150
149
  await this.waitForNavigation({
151
150
  url,
152
151
  ...options
@@ -268,7 +267,7 @@ class Frame extends _channelOwner.ChannelOwner {
268
267
  ...options
269
268
  };
270
269
  if (copy.path) {
271
- copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
270
+ copy.content = (await this._platform.fs().promises.readFile(copy.path)).toString();
272
271
  copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
273
272
  }
274
273
  return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
@@ -280,7 +279,7 @@ class Frame extends _channelOwner.ChannelOwner {
280
279
  ...options
281
280
  };
282
281
  if (copy.path) {
283
- copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
282
+ copy.content = (await this._platform.fs().promises.readFile(copy.path)).toString();
284
283
  copy.content += '/*# sourceURL=' + copy.path.replace(/\n/g, '') + '*/';
285
284
  }
286
285
  return _elementHandle.ElementHandle.from((await this._channel.addStyleTag({
@@ -440,7 +439,7 @@ class Frame extends _channelOwner.ChannelOwner {
440
439
  })).values;
441
440
  }
442
441
  async setInputFiles(selector, files, options = {}) {
443
- const converted = await (0, _elementHandle.convertInputFiles)(files, this.page().context());
442
+ const converted = await (0, _elementHandle.convertInputFiles)(this._platform, files, this.page().context());
444
443
  await this._channel.setInputFiles({
445
444
  selector,
446
445
  ...converted,
@@ -482,7 +481,7 @@ class Frame extends _channelOwner.ChannelOwner {
482
481
  });
483
482
  }
484
483
  async waitForFunction(pageFunction, arg, options = {}) {
485
- if (typeof options.polling === 'string') (0, _utils.assert)(options.polling === 'raf', 'Unknown polling option: ' + options.polling);
484
+ if (typeof options.polling === 'string') (0, _assert.assert)(options.polling === 'raf', 'Unknown polling option: ' + options.polling);
486
485
  const result = await this._channel.waitForFunction({
487
486
  ...options,
488
487
  pollingInterval: options.polling === 'raf' ? undefined : options.polling,
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.HarRouter = void 0;
7
- var _debugLogger = require("../utils/debugLogger");
8
- let _Symbol$asyncDispose;
9
7
  /**
10
8
  * Copyright (c) Microsoft Corporation.
11
9
  *
@@ -21,13 +19,13 @@ let _Symbol$asyncDispose;
21
19
  * See the License for the specific language governing permissions and
22
20
  * limitations under the License.
23
21
  */
24
- _Symbol$asyncDispose = Symbol.asyncDispose;
22
+
25
23
  class HarRouter {
26
24
  static async create(localUtils, file, notFoundAction, options) {
27
25
  const {
28
26
  harId,
29
27
  error
30
- } = await localUtils._channel.harOpen({
28
+ } = await localUtils.harOpen({
31
29
  file
32
30
  });
33
31
  if (error) throw new Error(error);
@@ -45,7 +43,7 @@ class HarRouter {
45
43
  }
46
44
  async _handle(route) {
47
45
  const request = route.request();
48
- const response = await this._localUtils._channel.harLookup({
46
+ const response = await this._localUtils.harLookup({
49
47
  harId: this._harId,
50
48
  url: request.url(),
51
49
  method: request.method(),
@@ -54,7 +52,7 @@ class HarRouter {
54
52
  isNavigationRequest: request.isNavigationRequest()
55
53
  });
56
54
  if (response.action === 'redirect') {
57
- _debugLogger.debugLogger.log('api', `HAR: ${route.request().url()} redirected to ${response.redirectURL}`);
55
+ route._platform.log('api', `HAR: ${route.request().url()} redirected to ${response.redirectURL}`);
58
56
  await route._redirectNavigationRequest(response.redirectURL);
59
57
  return;
60
58
  }
@@ -72,7 +70,7 @@ class HarRouter {
72
70
  });
73
71
  return;
74
72
  }
75
- if (response.action === 'error') _debugLogger.debugLogger.log('api', 'HAR: ' + response.message);
73
+ if (response.action === 'error') route._platform.log('api', 'HAR: ' + response.message);
76
74
  // Report the error, but fall through to the default handler.
77
75
 
78
76
  if (this._notFoundAction === 'abort') {
@@ -87,11 +85,11 @@ class HarRouter {
87
85
  async addPageRoute(page) {
88
86
  await page.route(this._options.urlMatch || '**/*', route => this._handle(route));
89
87
  }
90
- async [_Symbol$asyncDispose]() {
88
+ async [Symbol.asyncDispose]() {
91
89
  await this.dispose();
92
90
  }
93
91
  dispose() {
94
- this._localUtils._channel.harClose({
92
+ this._localUtils.harClose({
95
93
  harId: this._harId
96
94
  }).catch(() => {});
97
95
  }
@@ -8,9 +8,8 @@ exports.assertMaxArguments = assertMaxArguments;
8
8
  exports.parseResult = parseResult;
9
9
  exports.serializeArgument = serializeArgument;
10
10
  var _channelOwner = require("./channelOwner");
11
- var _serializers = require("../protocol/serializers");
12
11
  var _errors = require("./errors");
13
- let _Symbol$asyncDispose;
12
+ var _serializers = require("../protocol/serializers");
14
13
  /**
15
14
  * Copyright (c) Microsoft Corporation.
16
15
  *
@@ -26,7 +25,7 @@ let _Symbol$asyncDispose;
26
25
  * See the License for the specific language governing permissions and
27
26
  * limitations under the License.
28
27
  */
29
- _Symbol$asyncDispose = Symbol.asyncDispose;
28
+
30
29
  class JSHandle extends _channelOwner.ChannelOwner {
31
30
  static from(handle) {
32
31
  return handle._object;
@@ -75,7 +74,7 @@ class JSHandle extends _channelOwner.ChannelOwner {
75
74
  asElement() {
76
75
  return null;
77
76
  }
78
- async [_Symbol$asyncDispose]() {
77
+ async [Symbol.asyncDispose]() {
79
78
  await this.dispose();
80
79
  }
81
80
  async dispose() {
@@ -32,5 +32,29 @@ class LocalUtils extends _channelOwner.ChannelOwner {
32
32
  descriptor
33
33
  } of initializer.deviceDescriptors) this.devices[name] = descriptor;
34
34
  }
35
+ async zip(params) {
36
+ return await this._channel.zip(params);
37
+ }
38
+ async harOpen(params) {
39
+ return await this._channel.harOpen(params);
40
+ }
41
+ async harLookup(params) {
42
+ return await this._channel.harLookup(params);
43
+ }
44
+ async harClose(params) {
45
+ return await this._channel.harClose(params);
46
+ }
47
+ async harUnzip(params) {
48
+ return await this._channel.harUnzip(params);
49
+ }
50
+ async tracingStarted(params) {
51
+ return await this._channel.tracingStarted(params);
52
+ }
53
+ async traceDiscarded(params) {
54
+ return await this._channel.traceDiscarded(params);
55
+ }
56
+ async addStackToTracingNoReply(params) {
57
+ return await this._channel.addStackToTracingNoReply(params);
58
+ }
35
59
  }
36
60
  exports.LocalUtils = LocalUtils;
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Locator = exports.FrameLocator = void 0;
7
7
  exports.setTestIdAttribute = setTestIdAttribute;
8
8
  exports.testIdAttributeName = testIdAttributeName;
9
- var util = _interopRequireWildcard(require("util"));
10
- var _utils = require("../utils");
11
9
  var _elementHandle = require("./elementHandle");
12
10
  var _jsHandle = require("./jsHandle");
13
- var _stringUtils = require("../utils/isomorphic/stringUtils");
11
+ var _locatorGenerators = require("../utils/isomorphic/locatorGenerators");
14
12
  var _locatorUtils = require("../utils/isomorphic/locatorUtils");
15
- let _util$inspect$custom;
13
+ var _stringUtils = require("../utils/isomorphic/stringUtils");
14
+ var _rtti = require("../utils/isomorphic/rtti");
15
+ var _time = require("../utils/isomorphic/time");
16
16
  /**
17
17
  * Copyright (c) Microsoft Corporation.
18
18
  *
@@ -28,9 +28,7 @@ let _util$inspect$custom;
28
28
  * See the License for the specific language governing permissions and
29
29
  * limitations under the License.
30
30
  */
31
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
32
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
33
- _util$inspect$custom = util.inspect.custom;
31
+
34
32
  class Locator {
35
33
  constructor(frame, selector, options) {
36
34
  this._frame = void 0;
@@ -49,12 +47,14 @@ class Locator {
49
47
  if (locator._frame !== frame) throw new Error(`Inner "hasNot" locator must belong to the same frame.`);
50
48
  this._selector += ` >> internal:has-not=` + JSON.stringify(locator._selector);
51
49
  }
50
+ if ((options === null || options === void 0 ? void 0 : options.visible) !== undefined) this._selector += ` >> visible=${options.visible ? 'true' : 'false'}`;
51
+ if (this._frame._platform.inspectCustom) this[this._frame._platform.inspectCustom] = () => this._inspect();
52
52
  }
53
53
  async _withElement(task, timeout) {
54
54
  timeout = this._frame.page()._timeoutSettings.timeout({
55
55
  timeout
56
56
  });
57
- const deadline = timeout ? (0, _utils.monotonicTime)() + timeout : 0;
57
+ const deadline = timeout ? (0, _time.monotonicTime)() + timeout : 0;
58
58
  return await this._frame._wrapApiCall(async () => {
59
59
  const result = await this._frame._channel.waitForSelector({
60
60
  selector: this._selector,
@@ -65,7 +65,7 @@ class Locator {
65
65
  const handle = _elementHandle.ElementHandle.fromNullable(result.element);
66
66
  if (!handle) throw new Error(`Could not resolve ${this._selector} to DOM Element`);
67
67
  try {
68
- return await task(handle, deadline ? deadline - (0, _utils.monotonicTime)() : 0);
68
+ return await task(handle, deadline ? deadline - (0, _time.monotonicTime)() : 0);
69
69
  } finally {
70
70
  await handle.dispose();
71
71
  }
@@ -136,7 +136,7 @@ class Locator {
136
136
  return await this._frame._highlight(this._selector);
137
137
  }
138
138
  locator(selectorOrLocator, options) {
139
- if ((0, _utils.isString)(selectorOrLocator)) return new Locator(this._frame, this._selector + ' >> ' + selectorOrLocator, options);
139
+ if ((0, _rtti.isString)(selectorOrLocator)) return new Locator(this._frame, this._selector + ' >> ' + selectorOrLocator, options);
140
140
  if (selectorOrLocator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);
141
141
  return new Locator(this._frame, this._selector + ' >> internal:chain=' + JSON.stringify(selectorOrLocator._selector), options);
142
142
  }
@@ -213,6 +213,9 @@ class Locator {
213
213
  async count() {
214
214
  return await this._frame._queryCount(this._selector);
215
215
  }
216
+ async _generateLocatorString() {
217
+ return await this._withElement(h => h._generateLocatorString());
218
+ }
216
219
  async getAttribute(name, options) {
217
220
  return await this._frame.getAttribute(this._selector, name, {
218
221
  strict: true,
@@ -286,11 +289,22 @@ class Locator {
286
289
  });
287
290
  }
288
291
  async screenshot(options = {}) {
292
+ const mask = options.mask;
289
293
  return await this._withElement((h, timeout) => h.screenshot({
290
294
  ...options,
295
+ mask,
291
296
  timeout
292
297
  }), options.timeout);
293
298
  }
299
+ async ariaSnapshot(options) {
300
+ const result = await this._frame._channel.ariaSnapshot({
301
+ ...options,
302
+ id: options === null || options === void 0 ? void 0 : options._id,
303
+ mode: options === null || options === void 0 ? void 0 : options._mode,
304
+ selector: this._selector
305
+ });
306
+ return result.snapshot;
307
+ }
294
308
  async scrollIntoViewIfNeeded(options = {}) {
295
309
  return await this._withElement((h, timeout) => h.scrollIntoViewIfNeeded({
296
310
  ...options,
@@ -374,11 +388,11 @@ class Locator {
374
388
  if (result.received !== undefined) result.received = (0, _jsHandle.parseResult)(result.received);
375
389
  return result;
376
390
  }
377
- [_util$inspect$custom]() {
391
+ _inspect() {
378
392
  return this.toString();
379
393
  }
380
394
  toString() {
381
- return (0, _utils.asLocator)('javascript', this._selector);
395
+ return (0, _locatorGenerators.asLocator)('javascript', this._selector);
382
396
  }
383
397
  }
384
398
  exports.Locator = Locator;
@@ -390,7 +404,7 @@ class FrameLocator {
390
404
  this._frameSelector = selector;
391
405
  }
392
406
  locator(selectorOrLocator, options) {
393
- if ((0, _utils.isString)(selectorOrLocator)) return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator, options);
407
+ if ((0, _rtti.isString)(selectorOrLocator)) return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator, options);
394
408
  if (selectorOrLocator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);
395
409
  return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator._selector, options);
396
410
  }
@@ -5,19 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.WebSocketRouteHandler = exports.WebSocketRoute = exports.WebSocket = exports.RouteHandler = exports.Route = exports.Response = exports.Request = exports.RawHeaders = void 0;
7
7
  exports.validateHeaders = validateHeaders;
8
- var _url = require("url");
9
8
  var _channelOwner = require("./channelOwner");
10
- var _frame = require("./frame");
11
- var _worker = require("./worker");
12
- var _fs = _interopRequireDefault(require("fs"));
13
- var _utilsBundle = require("../utilsBundle");
14
- var _utils = require("../utils");
15
- var _manualPromise = require("../utils/manualPromise");
9
+ var _errors = require("./errors");
16
10
  var _events = require("./events");
17
- var _waiter = require("./waiter");
18
11
  var _fetch = require("./fetch");
19
- var _errors = require("./errors");
20
- let _Symbol$asyncDispose;
12
+ var _frame = require("./frame");
13
+ var _waiter = require("./waiter");
14
+ var _worker = require("./worker");
15
+ var _assert = require("../utils/isomorphic/assert");
16
+ var _headers = require("../utils/isomorphic/headers");
17
+ var _urlMatch = require("../utils/isomorphic/urlMatch");
18
+ var _manualPromise = require("../utils/isomorphic/manualPromise");
19
+ var _multimap = require("../utils/isomorphic/multimap");
20
+ var _rtti = require("../utils/isomorphic/rtti");
21
+ var _stackTrace = require("../utils/isomorphic/stackTrace");
22
+ var _mimeType = require("../utils/isomorphic/mimeType");
21
23
  /**
22
24
  * Copyright (c) Microsoft Corporation.
23
25
  *
@@ -33,7 +35,7 @@ let _Symbol$asyncDispose;
33
35
  * See the License for the specific language governing permissions and
34
36
  * limitations under the License.
35
37
  */
36
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
+
37
39
  class Request extends _channelOwner.ChannelOwner {
38
40
  static from(request) {
39
41
  return request._object;
@@ -50,6 +52,7 @@ class Request extends _channelOwner.ChannelOwner {
50
52
  this._actualHeadersPromise = void 0;
51
53
  this._timing = void 0;
52
54
  this._fallbackOverrides = {};
55
+ this.markAsInternalType();
53
56
  this._redirectedFrom = Request.fromNullable(initializer.redirectedFrom);
54
57
  if (this._redirectedFrom) this._redirectedFrom._redirectedTo = this;
55
58
  this._provisionalHeaders = new RawHeaders(initializer.headers);
@@ -87,7 +90,7 @@ class Request extends _channelOwner.ChannelOwner {
87
90
  const contentType = this.headers()['content-type'];
88
91
  if (contentType !== null && contentType !== void 0 && contentType.includes('application/x-www-form-urlencoded')) {
89
92
  const entries = {};
90
- const parsed = new _url.URLSearchParams(postData);
93
+ const parsed = new URLSearchParams(postData);
91
94
  for (const [k, v] of parsed.entries()) entries[k] = v;
92
95
  return entries;
93
96
  }
@@ -133,7 +136,7 @@ class Request extends _channelOwner.ChannelOwner {
133
136
  }
134
137
  frame() {
135
138
  if (!this._initializer.frame) {
136
- (0, _utils.assert)(this.serviceWorker());
139
+ (0, _assert.assert)(this.serviceWorker());
137
140
  throw new Error('Service Worker requests do not have an associated frame.');
138
141
  }
139
142
  const frame = _frame.Frame.from(this._initializer.frame);
@@ -183,7 +186,7 @@ class Request extends _channelOwner.ChannelOwner {
183
186
  if (overrides.url) this._fallbackOverrides.url = overrides.url;
184
187
  if (overrides.method) this._fallbackOverrides.method = overrides.method;
185
188
  if (overrides.headers) this._fallbackOverrides.headers = overrides.headers;
186
- if ((0, _utils.isString)(overrides.postData)) this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, 'utf-8');else if (overrides.postData instanceof Buffer) this._fallbackOverrides.postDataBuffer = overrides.postData;else if (overrides.postData) this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), 'utf-8');
189
+ if ((0, _rtti.isString)(overrides.postData)) this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, 'utf-8');else if (overrides.postData instanceof Buffer) this._fallbackOverrides.postDataBuffer = overrides.postData;else if (overrides.postData) this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), 'utf-8');
187
190
  }
188
191
  _fallbackOverridesForContinue() {
189
192
  return this._fallbackOverrides;
@@ -271,13 +274,12 @@ class Route extends _channelOwner.ChannelOwner {
271
274
  body
272
275
  } = options;
273
276
  if (options.json !== undefined) {
274
- (0, _utils.assert)(options.body === undefined, 'Can specify either body or json parameters');
277
+ (0, _assert.assert)(options.body === undefined, 'Can specify either body or json parameters');
275
278
  body = JSON.stringify(options.json);
276
279
  }
277
280
  if (options.response instanceof _fetch.APIResponse) {
278
- var _statusOption, _headersOption;
279
- (_statusOption = statusOption) !== null && _statusOption !== void 0 ? _statusOption : statusOption = options.response.status();
280
- (_headersOption = headersOption) !== null && _headersOption !== void 0 ? _headersOption : headersOption = options.response.headers();
281
+ statusOption !== null && statusOption !== void 0 ? statusOption : statusOption = options.response.status();
282
+ headersOption !== null && headersOption !== void 0 ? headersOption : headersOption = options.response.headers();
281
283
  if (body === undefined && options.path === undefined) {
282
284
  if (options.response._request._connection === this._connection) fetchResponseUid = options.response._fetchUid();else body = await options.response.body();
283
285
  }
@@ -285,11 +287,11 @@ class Route extends _channelOwner.ChannelOwner {
285
287
  let isBase64 = false;
286
288
  let length = 0;
287
289
  if (options.path) {
288
- const buffer = await _fs.default.promises.readFile(options.path);
290
+ const buffer = await this._platform.fs().promises.readFile(options.path);
289
291
  body = buffer.toString('base64');
290
292
  isBase64 = true;
291
293
  length = buffer.length;
292
- } else if ((0, _utils.isString)(body)) {
294
+ } else if ((0, _rtti.isString)(body)) {
293
295
  isBase64 = false;
294
296
  length = Buffer.byteLength(body);
295
297
  } else if (body) {
@@ -299,11 +301,11 @@ class Route extends _channelOwner.ChannelOwner {
299
301
  }
300
302
  const headers = {};
301
303
  for (const header of Object.keys(headersOption || {})) headers[header.toLowerCase()] = String(headersOption[header]);
302
- if (options.contentType) headers['content-type'] = String(options.contentType);else if (options.json) headers['content-type'] = 'application/json';else if (options.path) headers['content-type'] = _utilsBundle.mime.getType(options.path) || 'application/octet-stream';
304
+ if (options.contentType) headers['content-type'] = String(options.contentType);else if (options.json) headers['content-type'] = 'application/json';else if (options.path) headers['content-type'] = (0, _mimeType.getMimeTypeForPath)(options.path) || 'application/octet-stream';
303
305
  if (length && !('content-length' in headers)) headers['content-length'] = String(length);
304
306
  await this._raceWithTargetClose(this._channel.fulfill({
305
307
  status: statusOption || 200,
306
- headers: (0, _utils.headersObjectToArray)(headers),
308
+ headers: (0, _headers.headersObjectToArray)(headers),
307
309
  body,
308
310
  isBase64,
309
311
  fetchResponseUid
@@ -328,14 +330,13 @@ class Route extends _channelOwner.ChannelOwner {
328
330
  return await this._raceWithTargetClose(this._channel.continue({
329
331
  url: options.url,
330
332
  method: options.method,
331
- headers: options.headers ? (0, _utils.headersObjectToArray)(options.headers) : undefined,
333
+ headers: options.headers ? (0, _headers.headersObjectToArray)(options.headers) : undefined,
332
334
  postData: options.postDataBuffer,
333
335
  isFallback
334
336
  }));
335
337
  }
336
338
  }
337
339
  exports.Route = Route;
338
- _Symbol$asyncDispose = Symbol.asyncDispose;
339
340
  class WebSocketRoute extends _channelOwner.ChannelOwner {
340
341
  static from(route) {
341
342
  return route._object;
@@ -369,7 +370,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
369
370
  }).catch(() => {});
370
371
  },
371
372
  send: message => {
372
- if ((0, _utils.isString)(message)) this._channel.sendToServer({
373
+ if ((0, _rtti.isString)(message)) this._channel.sendToServer({
373
374
  message,
374
375
  isBase64: false
375
376
  }).catch(() => {});else this._channel.sendToServer({
@@ -438,7 +439,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
438
439
  return this._server;
439
440
  }
440
441
  send(message) {
441
- if ((0, _utils.isString)(message)) this._channel.sendToPage({
442
+ if ((0, _rtti.isString)(message)) this._channel.sendToPage({
442
443
  message,
443
444
  isBase64: false
444
445
  }).catch(() => {});else this._channel.sendToPage({
@@ -452,7 +453,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
452
453
  onClose(handler) {
453
454
  this._onPageClose = handler;
454
455
  }
455
- async [_Symbol$asyncDispose]() {
456
+ async [Symbol.asyncDispose]() {
456
457
  await this.close();
457
458
  }
458
459
  async _afterHandle() {
@@ -475,9 +476,9 @@ class WebSocketRouteHandler {
475
476
  const patterns = [];
476
477
  let all = false;
477
478
  for (const handler of handlers) {
478
- if ((0, _utils.isString)(handler.url)) patterns.push({
479
+ if ((0, _rtti.isString)(handler.url)) patterns.push({
479
480
  glob: handler.url
480
- });else if ((0, _utils.isRegExp)(handler.url)) patterns.push({
481
+ });else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
481
482
  regexSource: handler.url.source,
482
483
  regexFlags: handler.url.flags
483
484
  });else all = true;
@@ -488,7 +489,7 @@ class WebSocketRouteHandler {
488
489
  return patterns;
489
490
  }
490
491
  matches(wsURL) {
491
- return (0, _utils.urlMatches)(this._baseURL, wsURL, this.url);
492
+ return (0, _urlMatch.urlMatches)(this._baseURL, wsURL, this.url);
492
493
  }
493
494
  async handle(webSocketRoute) {
494
495
  const handler = this.handler;
@@ -510,6 +511,7 @@ class Response extends _channelOwner.ChannelOwner {
510
511
  this._actualHeadersPromise = void 0;
511
512
  this._request = void 0;
512
513
  this._finishedPromise = new _manualPromise.ManualPromise();
514
+ this.markAsInternalType();
513
515
  this._provisionalHeaders = new RawHeaders(initializer.headers);
514
516
  this._request = Request.from(this._initializer.request);
515
517
  Object.assign(this._request._timing, this._initializer.timing);
@@ -642,11 +644,11 @@ exports.WebSocket = WebSocket;
642
644
  function validateHeaders(headers) {
643
645
  for (const key of Object.keys(headers)) {
644
646
  const value = headers[key];
645
- if (!Object.is(value, undefined) && !(0, _utils.isString)(value)) throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
647
+ if (!Object.is(value, undefined) && !(0, _rtti.isString)(value)) throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
646
648
  }
647
649
  }
648
650
  class RouteHandler {
649
- constructor(baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
651
+ constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
650
652
  this.handledCount = 0;
651
653
  this._baseURL = void 0;
652
654
  this._times = void 0;
@@ -654,18 +656,20 @@ class RouteHandler {
654
656
  this.handler = void 0;
655
657
  this._ignoreException = false;
656
658
  this._activeInvocations = new Set();
659
+ this._savedZone = void 0;
657
660
  this._baseURL = baseURL;
658
661
  this._times = times;
659
662
  this.url = url;
660
663
  this.handler = handler;
664
+ this._savedZone = platform.zones.current().pop();
661
665
  }
662
666
  static prepareInterceptionPatterns(handlers) {
663
667
  const patterns = [];
664
668
  let all = false;
665
669
  for (const handler of handlers) {
666
- if ((0, _utils.isString)(handler.url)) patterns.push({
670
+ if ((0, _rtti.isString)(handler.url)) patterns.push({
667
671
  glob: handler.url
668
- });else if ((0, _utils.isRegExp)(handler.url)) patterns.push({
672
+ });else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
669
673
  regexSource: handler.url.source,
670
674
  regexFlags: handler.url.flags
671
675
  });else all = true;
@@ -676,9 +680,12 @@ class RouteHandler {
676
680
  return patterns;
677
681
  }
678
682
  matches(requestURL) {
679
- return (0, _utils.urlMatches)(this._baseURL, requestURL, this.url);
683
+ return (0, _urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
680
684
  }
681
685
  async handle(route) {
686
+ return await this._savedZone.run(async () => this._handleImpl(route));
687
+ }
688
+ async _handleImpl(route) {
682
689
  const handlerInvocation = {
683
690
  complete: new _manualPromise.ManualPromise(),
684
691
  route
@@ -692,7 +699,7 @@ class RouteHandler {
692
699
  if ((0, _errors.isTargetClosedError)(e)) {
693
700
  // We are failing in the handler because the target close closed.
694
701
  // Give user a hint!
695
- (0, _utils.rewriteErrorMessage)(e, `"${e.message}" while running route callback.\nConsider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`\nbefore the end of the test to ignore remaining routes in flight.`);
702
+ (0, _stackTrace.rewriteErrorMessage)(e, `"${e.message}" while running route callback.\nConsider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`\nbefore the end of the test to ignore remaining routes in flight.`);
696
703
  }
697
704
  throw e;
698
705
  } finally {
@@ -738,7 +745,7 @@ class RawHeaders {
738
745
  }
739
746
  constructor(headers) {
740
747
  this._headersArray = void 0;
741
- this._headersMap = new _utils.MultiMap();
748
+ this._headersMap = new _multimap.MultiMap();
742
749
  this._headersArray = headers;
743
750
  for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);
744
751
  }