@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
@@ -4,24 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.LocalUtilsDispatcher = void 0;
7
- exports.urlToWSEndpoint = urlToWSEndpoint;
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _path = _interopRequireDefault(require("path"));
10
- var _os = _interopRequireDefault(require("os"));
11
- var _manualPromise = require("../../utils/manualPromise");
12
- var _utils = require("../../utils");
13
7
  var _dispatcher = require("./dispatcher");
14
- var _zipBundle = require("../../zipBundle");
15
- var _zipFile = require("../../utils/zipFile");
16
- var _jsonPipeDispatcher = require("../dispatchers/jsonPipeDispatcher");
17
- var _transport = require("../transport");
18
- var _socksInterceptor = require("../socksInterceptor");
19
- var _userAgent = require("../../utils/userAgent");
20
- var _progress = require("../progress");
21
- var _network = require("../../utils/network");
22
8
  var _instrumentation = require("../../server/instrumentation");
9
+ var localUtils = _interopRequireWildcard(require("../localUtils"));
10
+ var _userAgent = require("../utils/userAgent");
23
11
  var _deviceDescriptors = require("../deviceDescriptors");
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _jsonPipeDispatcher = require("../dispatchers/jsonPipeDispatcher");
13
+ var _progress = require("../progress");
14
+ var _socksInterceptor = require("../socksInterceptor");
15
+ var _transport = require("../transport");
16
+ var _network = require("../utils/network");
17
+ 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); }
18
+ 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; }
25
19
  /**
26
20
  * Copyright (c) Microsoft Corporation.
27
21
  *
@@ -40,12 +34,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
40
34
 
41
35
  class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
42
36
  constructor(scope, playwright) {
43
- const localUtils = new _instrumentation.SdkObject(playwright, 'localUtils', 'localUtils');
37
+ const _localUtils = new _instrumentation.SdkObject(playwright, 'localUtils', 'localUtils');
44
38
  const deviceDescriptors = Object.entries(_deviceDescriptors.deviceDescriptors).map(([name, descriptor]) => ({
45
39
  name,
46
40
  descriptor
47
41
  }));
48
- super(scope, localUtils, 'LocalUtils', {
42
+ super(scope, _localUtils, 'LocalUtils', {
49
43
  deviceDescriptors
50
44
  });
51
45
  this._type_LocalUtils = void 0;
@@ -54,131 +48,28 @@ class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
54
48
  this._type_LocalUtils = true;
55
49
  }
56
50
  async zip(params) {
57
- const promise = new _manualPromise.ManualPromise();
58
- const zipFile = new _zipBundle.yazl.ZipFile();
59
- zipFile.on('error', error => promise.reject(error));
60
- const addFile = (file, name) => {
61
- try {
62
- if (_fs.default.statSync(file).isFile()) zipFile.addFile(file, name);
63
- } catch (e) {}
64
- };
65
- for (const entry of params.entries) addFile(entry.value, entry.name);
66
-
67
- // Add stacks and the sources.
68
- const stackSession = params.stacksId ? this._stackSessions.get(params.stacksId) : undefined;
69
- if (stackSession !== null && stackSession !== void 0 && stackSession.callStacks.length) {
70
- await stackSession.writer;
71
- if (process.env.PW_LIVE_TRACE_STACKS) {
72
- zipFile.addFile(stackSession.file, 'trace.stacks');
73
- } else {
74
- const buffer = Buffer.from(JSON.stringify((0, _utils.serializeClientSideCallMetadata)(stackSession.callStacks)));
75
- zipFile.addBuffer(buffer, 'trace.stacks');
76
- }
77
- }
78
-
79
- // Collect sources from stacks.
80
- if (params.includeSources) {
81
- const sourceFiles = new Set();
82
- for (const {
83
- stack
84
- } of (stackSession === null || stackSession === void 0 ? void 0 : stackSession.callStacks) || []) {
85
- if (!stack) continue;
86
- for (const {
87
- file
88
- } of stack) sourceFiles.add(file);
89
- }
90
- for (const sourceFile of sourceFiles) addFile(sourceFile, 'resources/src@' + (0, _utils.calculateSha1)(sourceFile) + '.txt');
91
- }
92
- if (params.mode === 'write') {
93
- // New file, just compress the entries.
94
- await _fs.default.promises.mkdir(_path.default.dirname(params.zipFile), {
95
- recursive: true
96
- });
97
- zipFile.end(undefined, () => {
98
- zipFile.outputStream.pipe(_fs.default.createWriteStream(params.zipFile)).on('close', () => promise.resolve()).on('error', error => promise.reject(error));
99
- });
100
- await promise;
101
- await this._deleteStackSession(params.stacksId);
102
- return;
103
- }
104
-
105
- // File already exists. Repack and add new entries.
106
- const tempFile = params.zipFile + '.tmp';
107
- await _fs.default.promises.rename(params.zipFile, tempFile);
108
- _zipBundle.yauzl.open(tempFile, (err, inZipFile) => {
109
- if (err) {
110
- promise.reject(err);
111
- return;
112
- }
113
- (0, _utils.assert)(inZipFile);
114
- let pendingEntries = inZipFile.entryCount;
115
- inZipFile.on('entry', entry => {
116
- inZipFile.openReadStream(entry, (err, readStream) => {
117
- if (err) {
118
- promise.reject(err);
119
- return;
120
- }
121
- zipFile.addReadStream(readStream, entry.fileName);
122
- if (--pendingEntries === 0) {
123
- zipFile.end(undefined, () => {
124
- zipFile.outputStream.pipe(_fs.default.createWriteStream(params.zipFile)).on('close', () => {
125
- _fs.default.promises.unlink(tempFile).then(() => {
126
- promise.resolve();
127
- }).catch(error => promise.reject(error));
128
- });
129
- });
130
- }
131
- });
132
- });
133
- });
134
- await promise;
135
- await this._deleteStackSession(params.stacksId);
51
+ return await localUtils.zip(this._stackSessions, params);
136
52
  }
137
53
  async harOpen(params, metadata) {
138
- let harBackend;
139
- if (params.file.endsWith('.zip')) {
140
- const zipFile = new _zipFile.ZipFile(params.file);
141
- const entryNames = await zipFile.entries();
142
- const harEntryName = entryNames.find(e => e.endsWith('.har'));
143
- if (!harEntryName) return {
144
- error: 'Specified archive does not have a .har file'
145
- };
146
- const har = await zipFile.read(harEntryName);
147
- const harFile = JSON.parse(har.toString());
148
- harBackend = new HarBackend(harFile, null, zipFile);
149
- } else {
150
- const harFile = JSON.parse(await _fs.default.promises.readFile(params.file, 'utf-8'));
151
- harBackend = new HarBackend(harFile, _path.default.dirname(params.file), null);
152
- }
153
- this._harBackends.set(harBackend.id, harBackend);
154
- return {
155
- harId: harBackend.id
156
- };
54
+ return await localUtils.harOpen(this._harBackends, params);
157
55
  }
158
56
  async harLookup(params, metadata) {
159
- const harBackend = this._harBackends.get(params.harId);
160
- if (!harBackend) return {
161
- action: 'error',
162
- message: `Internal error: har was not opened`
163
- };
164
- return await harBackend.lookup(params.url, params.method, params.headers, params.postData, params.isNavigationRequest);
57
+ return await localUtils.harLookup(this._harBackends, params);
165
58
  }
166
59
  async harClose(params, metadata) {
167
- const harBackend = this._harBackends.get(params.harId);
168
- if (harBackend) {
169
- this._harBackends.delete(harBackend.id);
170
- harBackend.dispose();
171
- }
60
+ return await localUtils.harClose(this._harBackends, params);
172
61
  }
173
62
  async harUnzip(params, metadata) {
174
- const dir = _path.default.dirname(params.zipFile);
175
- const zipFile = new _zipFile.ZipFile(params.zipFile);
176
- for (const entry of await zipFile.entries()) {
177
- const buffer = await zipFile.read(entry);
178
- if (entry === 'har.har') await _fs.default.promises.writeFile(params.harFile, buffer);else await _fs.default.promises.writeFile(_path.default.join(dir, entry), buffer);
179
- }
180
- zipFile.close();
181
- await _fs.default.promises.unlink(params.zipFile);
63
+ return await localUtils.harUnzip(params);
64
+ }
65
+ async tracingStarted(params, metadata) {
66
+ return await localUtils.tracingStarted(this._stackSessions, params);
67
+ }
68
+ async traceDiscarded(params, metadata) {
69
+ return await localUtils.traceDiscarded(this._stackSessions, params);
70
+ }
71
+ async addStackToTracingNoReply(params, metadata) {
72
+ return await localUtils.addStackToTracingNoReply(this._stackSessions, params);
182
73
  }
183
74
  async connect(params, metadata) {
184
75
  const controller = new _progress.ProgressController(metadata, this._object);
@@ -219,165 +110,8 @@ class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
219
110
  };
220
111
  }, params.timeout || 0);
221
112
  }
222
- async tracingStarted(params, metadata) {
223
- let tmpDir = undefined;
224
- if (!params.tracesDir) tmpDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), 'playwright-tracing-'));
225
- const traceStacksFile = _path.default.join(params.tracesDir || tmpDir, params.traceName + '.stacks');
226
- this._stackSessions.set(traceStacksFile, {
227
- callStacks: [],
228
- file: traceStacksFile,
229
- writer: Promise.resolve(),
230
- tmpDir
231
- });
232
- return {
233
- stacksId: traceStacksFile
234
- };
235
- }
236
- async traceDiscarded(params, metadata) {
237
- await this._deleteStackSession(params.stacksId);
238
- }
239
- async addStackToTracingNoReply(params, metadata) {
240
- for (const session of this._stackSessions.values()) {
241
- session.callStacks.push(params.callData);
242
- if (process.env.PW_LIVE_TRACE_STACKS) {
243
- session.writer = session.writer.then(() => {
244
- const buffer = Buffer.from(JSON.stringify((0, _utils.serializeClientSideCallMetadata)(session.callStacks)));
245
- return _fs.default.promises.writeFile(session.file, buffer);
246
- });
247
- }
248
- }
249
- }
250
- async _deleteStackSession(stacksId) {
251
- const session = stacksId ? this._stackSessions.get(stacksId) : undefined;
252
- if (!session) return;
253
- await session.writer;
254
- if (session.tmpDir) await (0, _utils.removeFolders)([session.tmpDir]);
255
- this._stackSessions.delete(stacksId);
256
- }
257
113
  }
258
114
  exports.LocalUtilsDispatcher = LocalUtilsDispatcher;
259
- const redirectStatus = [301, 302, 303, 307, 308];
260
- class HarBackend {
261
- constructor(harFile, baseDir, zipFile) {
262
- this.id = (0, _utils.createGuid)();
263
- this._harFile = void 0;
264
- this._zipFile = void 0;
265
- this._baseDir = void 0;
266
- this._harFile = harFile;
267
- this._baseDir = baseDir;
268
- this._zipFile = zipFile;
269
- }
270
- async lookup(url, method, headers, postData, isNavigationRequest) {
271
- let entry;
272
- try {
273
- entry = await this._harFindResponse(url, method, headers, postData);
274
- } catch (e) {
275
- return {
276
- action: 'error',
277
- message: 'HAR error: ' + e.message
278
- };
279
- }
280
- if (!entry) return {
281
- action: 'noentry'
282
- };
283
-
284
- // If navigation is being redirected, restart it with the final url to ensure the document's url changes.
285
- if (entry.request.url !== url && isNavigationRequest) return {
286
- action: 'redirect',
287
- redirectURL: entry.request.url
288
- };
289
- const response = entry.response;
290
- try {
291
- const buffer = await this._loadContent(response.content);
292
- return {
293
- action: 'fulfill',
294
- status: response.status,
295
- headers: response.headers,
296
- body: buffer
297
- };
298
- } catch (e) {
299
- return {
300
- action: 'error',
301
- message: e.message
302
- };
303
- }
304
- }
305
- async _loadContent(content) {
306
- const file = content._file;
307
- let buffer;
308
- if (file) {
309
- if (this._zipFile) buffer = await this._zipFile.read(file);else buffer = await _fs.default.promises.readFile(_path.default.resolve(this._baseDir, file));
310
- } else {
311
- buffer = Buffer.from(content.text || '', content.encoding === 'base64' ? 'base64' : 'utf-8');
312
- }
313
- return buffer;
314
- }
315
- async _harFindResponse(url, method, headers, postData) {
316
- const harLog = this._harFile.log;
317
- const visited = new Set();
318
- while (true) {
319
- const entries = [];
320
- for (const candidate of harLog.entries) {
321
- if (candidate.request.url !== url || candidate.request.method !== method) continue;
322
- if (method === 'POST' && postData && candidate.request.postData) {
323
- const buffer = await this._loadContent(candidate.request.postData);
324
- if (!buffer.equals(postData)) {
325
- const boundary = multipartBoundary(headers);
326
- if (!boundary) continue;
327
- const candidataBoundary = multipartBoundary(candidate.request.headers);
328
- if (!candidataBoundary) continue;
329
- // Try to match multipart/form-data ignroing boundary as it changes between requests.
330
- if (postData.toString().replaceAll(boundary, '') !== buffer.toString().replaceAll(candidataBoundary, '')) continue;
331
- }
332
- }
333
- entries.push(candidate);
334
- }
335
- if (!entries.length) return;
336
- let entry = entries[0];
337
-
338
- // Disambiguate using headers - then one with most matching headers wins.
339
- if (entries.length > 1) {
340
- const list = [];
341
- for (const candidate of entries) {
342
- const matchingHeaders = countMatchingHeaders(candidate.request.headers, headers);
343
- list.push({
344
- candidate,
345
- matchingHeaders
346
- });
347
- }
348
- list.sort((a, b) => b.matchingHeaders - a.matchingHeaders);
349
- entry = list[0].candidate;
350
- }
351
- if (visited.has(entry)) throw new Error(`Found redirect cycle for ${url}`);
352
- visited.add(entry);
353
-
354
- // Follow redirects.
355
- const locationHeader = entry.response.headers.find(h => h.name.toLowerCase() === 'location');
356
- if (redirectStatus.includes(entry.response.status) && locationHeader) {
357
- const locationURL = new URL(locationHeader.value, url);
358
- url = locationURL.toString();
359
- if ((entry.response.status === 301 || entry.response.status === 302) && method === 'POST' || entry.response.status === 303 && !['GET', 'HEAD'].includes(method)) {
360
- // HTTP-redirect fetch step 13 (https://fetch.spec.whatwg.org/#http-redirect-fetch)
361
- method = 'GET';
362
- }
363
- continue;
364
- }
365
- return entry;
366
- }
367
- }
368
- dispose() {
369
- var _this$_zipFile;
370
- (_this$_zipFile = this._zipFile) === null || _this$_zipFile === void 0 || _this$_zipFile.close();
371
- }
372
- }
373
- function countMatchingHeaders(harHeaders, headers) {
374
- const set = new Set(headers.map(h => h.name.toLowerCase() + ':' + h.value));
375
- let matches = 0;
376
- for (const h of harHeaders) {
377
- if (set.has(h.name.toLowerCase() + ':' + h.value)) ++matches;
378
- }
379
- return matches;
380
- }
381
115
  async function urlToWSEndpoint(progress, endpointURL) {
382
116
  var _progress$timeUntilDe;
383
117
  if (endpointURL.startsWith('ws')) return endpointURL;
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.WebSocketDispatcher = exports.RouteDispatcher = exports.ResponseDispatcher = exports.RequestDispatcher = exports.APIRequestContextDispatcher = void 0;
7
7
  var _network = require("../network");
8
8
  var _dispatcher = require("./dispatcher");
9
- var _tracingDispatcher = require("./tracingDispatcher");
10
9
  var _frameDispatcher = require("./frameDispatcher");
11
10
  var _pageDispatcher = require("./pageDispatcher");
11
+ var _tracingDispatcher = require("./tracingDispatcher");
12
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *
@@ -183,8 +183,8 @@ class APIRequestContextDispatcher extends _dispatcher.Dispatcher {
183
183
  this._type_APIRequestContext = true;
184
184
  this.adopt(tracing);
185
185
  }
186
- async storageState() {
187
- return this._object.storageState();
186
+ async storageState(params) {
187
+ return this._object.storageState(params.indexedDB);
188
188
  }
189
189
  async dispose(params, metadata) {
190
190
  metadata.potentiallyClosesScope = true;
@@ -7,13 +7,14 @@ exports.WorkerDispatcher = exports.PageDispatcher = exports.BindingCallDispatche
7
7
  var _page = require("../page");
8
8
  var _dispatcher = require("./dispatcher");
9
9
  var _errors = require("../errors");
10
+ var _artifactDispatcher = require("./artifactDispatcher");
11
+ var _elementHandlerDispatcher = require("./elementHandlerDispatcher");
10
12
  var _frameDispatcher = require("./frameDispatcher");
11
- var _networkDispatchers = require("./networkDispatchers");
12
13
  var _jsHandleDispatcher = require("./jsHandleDispatcher");
13
- var _elementHandlerDispatcher = require("./elementHandlerDispatcher");
14
- var _artifactDispatcher = require("./artifactDispatcher");
15
- var _utils = require("../../utils");
14
+ var _networkDispatchers = require("./networkDispatchers");
16
15
  var _webSocketRouteDispatcher = require("./webSocketRouteDispatcher");
16
+ var _crypto = require("../utils/crypto");
17
+ var _urlMatch = require("../../utils/isomorphic/urlMatch");
17
18
  /**
18
19
  * Copyright (c) Microsoft Corporation.
19
20
  *
@@ -155,7 +156,8 @@ class PageDispatcher extends _dispatcher.Dispatcher {
155
156
  media: params.media,
156
157
  colorScheme: params.colorScheme,
157
158
  reducedMotion: params.reducedMotion,
158
- forcedColors: params.forcedColors
159
+ forcedColors: params.forcedColors,
160
+ contrast: params.contrast
159
161
  });
160
162
  }
161
163
  async setViewportSize(params, metadata) {
@@ -171,7 +173,7 @@ class PageDispatcher extends _dispatcher.Dispatcher {
171
173
  }
172
174
  const urlMatchers = params.patterns.map(pattern => pattern.regexSource ? new RegExp(pattern.regexSource, pattern.regexFlags) : pattern.glob);
173
175
  await this._page.setClientRequestInterceptor((route, request) => {
174
- const matchesSome = urlMatchers.some(urlMatch => (0, _utils.urlMatches)(this._page._browserContext._options.baseURL, request.url(), urlMatch));
176
+ const matchesSome = urlMatchers.some(urlMatch => (0, _urlMatch.urlMatches)(this._page._browserContext._options.baseURL, request.url(), urlMatch));
175
177
  if (!matchesSome) return false;
176
178
  this._dispatchEvent('route', {
177
179
  route: _networkDispatchers.RouteDispatcher.from(_networkDispatchers.RequestDispatcher.from(this.parentScope(), request), route)
@@ -181,7 +183,7 @@ class PageDispatcher extends _dispatcher.Dispatcher {
181
183
  }
182
184
  async setWebSocketInterceptionPatterns(params, metadata) {
183
185
  this._webSocketInterceptionPatterns = params.patterns;
184
- if (params.patterns.length) await _webSocketRouteDispatcher.WebSocketRouteDispatcher.installIfNeeded(this.parentScope(), this._page);
186
+ if (params.patterns.length) await _webSocketRouteDispatcher.WebSocketRouteDispatcher.installIfNeeded(this._page);
185
187
  }
186
188
  async expectScreenshot(params, metadata) {
187
189
  const mask = (params.mask || []).map(({
@@ -336,7 +338,7 @@ exports.WorkerDispatcher = WorkerDispatcher;
336
338
  class BindingCallDispatcher extends _dispatcher.Dispatcher {
337
339
  constructor(scope, name, needsHandle, source, args) {
338
340
  super(scope, {
339
- guid: 'bindingCall@' + (0, _utils.createGuid)()
341
+ guid: 'bindingCall@' + (0, _crypto.createGuid)()
340
342
  }, 'BindingCall', {
341
343
  frame: _frameDispatcher.FrameDispatcher.from(scope.parentScope(), source.frame),
342
344
  name,
@@ -4,18 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.PlaywrightDispatcher = void 0;
7
+ var _socksProxy = require("../utils/socksProxy");
7
8
  var _fetch = require("../fetch");
8
- var _socksProxy = require("../../common/socksProxy");
9
9
  var _androidDispatcher = require("./androidDispatcher");
10
+ var _browserDispatcher = require("./browserDispatcher");
10
11
  var _browserTypeDispatcher = require("./browserTypeDispatcher");
11
12
  var _dispatcher = require("./dispatcher");
12
13
  var _electronDispatcher = require("./electronDispatcher");
13
14
  var _localUtilsDispatcher = require("./localUtilsDispatcher");
14
15
  var _networkDispatchers = require("./networkDispatchers");
15
16
  var _selectorsDispatcher = require("./selectorsDispatcher");
16
- var _browserDispatcher = require("./browserDispatcher");
17
- var _utils = require("../../utils");
18
- var _eventsHelper = require("../../utils/eventsHelper");
17
+ var _crypto = require("../utils/crypto");
18
+ var _eventsHelper = require("../utils/eventsHelper");
19
19
  /**
20
20
  * Copyright (c) Microsoft Corporation.
21
21
  *
@@ -72,7 +72,7 @@ exports.PlaywrightDispatcher = PlaywrightDispatcher;
72
72
  class SocksSupportDispatcher extends _dispatcher.Dispatcher {
73
73
  constructor(scope, socksProxy) {
74
74
  super(scope, {
75
- guid: 'socksSupport@' + (0, _utils.createGuid)()
75
+ guid: 'socksSupport@' + (0, _crypto.createGuid)()
76
76
  }, 'SocksSupport', {});
77
77
  this._type_SocksSupport = void 0;
78
78
  this._socksProxy = void 0;
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.StreamDispatcher = void 0;
7
7
  var _dispatcher = require("./dispatcher");
8
- var _utils = require("../../utils");
8
+ var _manualPromise = require("../../utils/isomorphic/manualPromise");
9
+ var _crypto = require("../utils/crypto");
9
10
  /**
10
11
  * Copyright (c) Microsoft Corporation.
11
12
  *
@@ -25,7 +26,7 @@ var _utils = require("../../utils");
25
26
  class StreamDispatcher extends _dispatcher.Dispatcher {
26
27
  constructor(scope, stream) {
27
28
  super(scope, {
28
- guid: 'stream@' + (0, _utils.createGuid)(),
29
+ guid: 'stream@' + (0, _crypto.createGuid)(),
29
30
  stream
30
31
  }, 'Stream', {});
31
32
  // In Node v12.9.0+ we can use readableEnded.
@@ -40,7 +41,7 @@ class StreamDispatcher extends _dispatcher.Dispatcher {
40
41
  binary: Buffer.from('')
41
42
  };
42
43
  if (!stream.readableLength) {
43
- const readyPromise = new _utils.ManualPromise();
44
+ const readyPromise = new _manualPromise.ManualPromise();
44
45
  const done = () => readyPromise.resolve();
45
46
  stream.on('readable', done);
46
47
  stream.on('end', done);
@@ -37,6 +37,16 @@ class TracingDispatcher extends _dispatcher.Dispatcher {
37
37
  async tracingStartChunk(params) {
38
38
  return await this._object.startChunk(params);
39
39
  }
40
+ async tracingGroup(params, metadata) {
41
+ const {
42
+ name,
43
+ location
44
+ } = params;
45
+ await this._object.group(name, location, metadata);
46
+ }
47
+ async tracingGroupEnd(params) {
48
+ await this._object.groupEnd();
49
+ }
40
50
  async tracingStopChunk(params) {
41
51
  const {
42
52
  artifact,
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.WebSocketRouteDispatcher = void 0;
7
7
  var _page = require("../page");
8
8
  var _dispatcher = require("./dispatcher");
9
- var _utils = require("../../utils");
10
9
  var _pageDispatcher = require("./pageDispatcher");
11
10
  var webSocketMockSource = _interopRequireWildcard(require("../../generated/webSocketMockSource"));
12
- var _eventsHelper = require("../../utils/eventsHelper");
13
- var _class;
11
+ var _crypto = require("../utils/crypto");
12
+ var _urlMatch = require("../../utils/isomorphic/urlMatch");
13
+ var _eventsHelper = require("../utils/eventsHelper");
14
+ var _WebSocketRouteDispatcher;
14
15
  /**
15
16
  * Copyright (c) Microsoft Corporation.
16
17
  *
@@ -27,13 +28,11 @@ var _class;
27
28
  * limitations under the License.
28
29
  */
29
30
  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); }
30
- 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; }
31
- const kBindingInstalledSymbol = Symbol('webSocketRouteBindingInstalled');
32
- const kInitScriptInstalledSymbol = Symbol('webSocketRouteInitScriptInstalled');
31
+ 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; }
33
32
  class WebSocketRouteDispatcher extends _dispatcher.Dispatcher {
34
33
  constructor(scope, id, url, frame) {
35
34
  super(scope, {
36
- guid: 'webSocketRoute@' + (0, _utils.createGuid)()
35
+ guid: 'webSocketRoute@' + (0, _crypto.createGuid)()
37
36
  }, 'WebSocketRoute', {
38
37
  url
39
38
  });
@@ -55,15 +54,16 @@ class WebSocketRouteDispatcher extends _dispatcher.Dispatcher {
55
54
  webSocketRoute: this
56
55
  });
57
56
  }
58
- static async installIfNeeded(contextDispatcher, target) {
57
+ static async installIfNeeded(target) {
58
+ const kBindingName = '__pwWebSocketBinding';
59
59
  const context = target instanceof _page.Page ? target.context() : target;
60
- if (!context[kBindingInstalledSymbol]) {
61
- context[kBindingInstalledSymbol] = true;
62
- await context.exposeBinding('__pwWebSocketBinding', false, (source, payload) => {
60
+ if (!context.hasBinding(kBindingName)) {
61
+ await context.exposeBinding(kBindingName, false, (source, payload) => {
63
62
  if (payload.type === 'onCreate') {
64
- const pageDispatcher = _pageDispatcher.PageDispatcher.fromNullable(contextDispatcher, source.page);
63
+ const contextDispatcher = (0, _dispatcher.existingDispatcher)(context);
64
+ const pageDispatcher = contextDispatcher ? _pageDispatcher.PageDispatcher.fromNullable(contextDispatcher, source.page) : undefined;
65
65
  let scope;
66
- if (pageDispatcher && matchesPattern(pageDispatcher, context._options.baseURL, payload.url)) scope = pageDispatcher;else if (matchesPattern(contextDispatcher, context._options.baseURL, payload.url)) scope = contextDispatcher;
66
+ if (pageDispatcher && matchesPattern(pageDispatcher, context._options.baseURL, payload.url)) scope = pageDispatcher;else if (contextDispatcher && matchesPattern(contextDispatcher, context._options.baseURL, payload.url)) scope = contextDispatcher;
67
67
  if (scope) {
68
68
  new WebSocketRouteDispatcher(scope, payload.id, payload.url, source.frame);
69
69
  } else {
@@ -96,15 +96,15 @@ class WebSocketRouteDispatcher extends _dispatcher.Dispatcher {
96
96
  });
97
97
  });
98
98
  }
99
- if (!target[kInitScriptInstalledSymbol]) {
100
- target[kInitScriptInstalledSymbol] = true;
99
+ const kInitScriptName = 'webSocketMockSource';
100
+ if (!target.initScripts.find(s => s.name === kInitScriptName)) {
101
101
  await target.addInitScript(`
102
102
  (() => {
103
103
  const module = {};
104
104
  ${webSocketMockSource.source}
105
105
  (module.exports.inject())(globalThis);
106
106
  })();
107
- `);
107
+ `, kInitScriptName);
108
108
  }
109
109
  }
110
110
  async connect(params) {
@@ -178,12 +178,12 @@ class WebSocketRouteDispatcher extends _dispatcher.Dispatcher {
178
178
  }
179
179
  }
180
180
  exports.WebSocketRouteDispatcher = WebSocketRouteDispatcher;
181
- _class = WebSocketRouteDispatcher;
181
+ _WebSocketRouteDispatcher = WebSocketRouteDispatcher;
182
182
  WebSocketRouteDispatcher._idToDispatcher = new Map();
183
183
  function matchesPattern(dispatcher, baseURL, url) {
184
184
  for (const pattern of dispatcher._webSocketInterceptionPatterns || []) {
185
185
  const urlMatch = pattern.regexSource ? new RegExp(pattern.regexSource, pattern.regexFlags) : pattern.glob;
186
- if ((0, _utils.urlMatches)(baseURL, url, urlMatch)) return true;
186
+ if ((0, _urlMatch.urlMatches)(baseURL, url, urlMatch)) return true;
187
187
  }
188
188
  return false;
189
189
  }
@@ -4,11 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WritableStreamDispatcher = void 0;
7
+ var _fs = _interopRequireDefault(require("fs"));
7
8
  var _dispatcher = require("./dispatcher");
8
- var fs = _interopRequireWildcard(require("fs"));
9
- var _utils = require("../../utils");
10
- 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); }
11
- 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; }
9
+ var _crypto = require("../utils/crypto");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
11
  /**
13
12
  * Copyright (c) Microsoft Corporation.
14
13
  *
@@ -28,7 +27,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
28
27
  class WritableStreamDispatcher extends _dispatcher.Dispatcher {
29
28
  constructor(scope, streamOrDirectory, lastModifiedMs) {
30
29
  super(scope, {
31
- guid: 'writableStream@' + (0, _utils.createGuid)(),
30
+ guid: 'writableStream@' + (0, _crypto.createGuid)(),
32
31
  streamOrDirectory
33
32
  }, 'WritableStream', {});
34
33
  this._type_WritableStream = true;
@@ -48,7 +47,7 @@ class WritableStreamDispatcher extends _dispatcher.Dispatcher {
48
47
  if (typeof this._object.streamOrDirectory === 'string') throw new Error('Cannot close a directory');
49
48
  const stream = this._object.streamOrDirectory;
50
49
  await new Promise(fulfill => stream.end(fulfill));
51
- if (this._lastModifiedMs) await fs.promises.utimes(this.path(), new Date(this._lastModifiedMs), new Date(this._lastModifiedMs));
50
+ if (this._lastModifiedMs) await _fs.default.promises.utimes(this.path(), new Date(this._lastModifiedMs), new Date(this._lastModifiedMs));
52
51
  }
53
52
  path() {
54
53
  if (typeof this._object.streamOrDirectory === 'string') return this._object.streamOrDirectory;