patchright-core 1.50.0 → 1.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/browsers.json +22 -10
  3. package/index.js +0 -1
  4. package/lib/androidServerImpl.js +4 -4
  5. package/lib/browserServerImpl.js +18 -9
  6. package/lib/cli/driver.js +6 -6
  7. package/lib/cli/program.js +9 -9
  8. package/lib/cli/programWithTestStub.js +2 -1
  9. package/lib/client/android.js +37 -58
  10. package/lib/client/artifact.js +4 -7
  11. package/lib/client/browser.js +10 -15
  12. package/lib/client/browserContext.js +77 -73
  13. package/lib/client/browserType.js +30 -64
  14. package/lib/client/channelOwner.js +23 -20
  15. package/lib/client/clientHelper.js +5 -7
  16. package/lib/client/clientStackTrace.js +65 -0
  17. package/lib/client/connection.js +46 -39
  18. package/lib/client/consoleMessage.js +4 -7
  19. package/lib/client/electron.js +10 -10
  20. package/lib/client/elementHandle.js +32 -33
  21. package/lib/client/errors.js +2 -2
  22. package/lib/client/eventEmitter.js +5 -8
  23. package/lib/client/fetch.js +60 -61
  24. package/lib/client/fileUtils.js +31 -0
  25. package/lib/client/frame.js +30 -29
  26. package/lib/client/harRouter.js +7 -9
  27. package/lib/client/jsHandle.js +3 -4
  28. package/lib/client/localUtils.js +24 -0
  29. package/lib/client/locator.js +37 -18
  30. package/lib/client/network.js +40 -40
  31. package/lib/client/page.js +59 -55
  32. package/lib/client/platform.js +71 -0
  33. package/lib/client/playwright.js +21 -1
  34. package/lib/client/selectors.js +8 -2
  35. package/lib/client/stream.js +2 -21
  36. package/lib/client/timeoutSettings.js +65 -0
  37. package/lib/client/tracing.js +10 -7
  38. package/lib/client/video.js +2 -2
  39. package/lib/client/waiter.js +5 -6
  40. package/lib/client/webSocket.js +106 -0
  41. package/lib/client/worker.js +12 -10
  42. package/lib/client/writableStream.js +2 -21
  43. package/lib/generated/consoleApiSource.js +1 -1
  44. package/lib/generated/injectedScriptSource.js +1 -1
  45. package/lib/generated/pollingRecorderSource.js +1 -1
  46. package/lib/inProcessFactory.js +6 -3
  47. package/lib/outofprocess.js +12 -8
  48. package/lib/protocol/validator.js +64 -13
  49. package/lib/protocol/validatorPrimitives.js +1 -2
  50. package/lib/remote/playwrightConnection.js +18 -10
  51. package/lib/remote/playwrightServer.js +20 -7
  52. package/lib/server/android/android.js +17 -14
  53. package/lib/server/android/backendAdb.js +14 -14
  54. package/lib/server/artifact.js +3 -3
  55. package/lib/server/bidi/bidiBrowser.js +2 -2
  56. package/lib/server/bidi/bidiChromium.js +4 -3
  57. package/lib/server/bidi/bidiConnection.js +1 -1
  58. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  59. package/lib/server/bidi/bidiFirefox.js +4 -3
  60. package/lib/server/bidi/bidiInput.js +5 -8
  61. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  62. package/lib/server/bidi/bidiOverCdp.js +2 -2
  63. package/lib/server/bidi/bidiPage.js +30 -46
  64. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  65. package/lib/server/browser.js +2 -2
  66. package/lib/server/browserContext.js +37 -40
  67. package/lib/server/browserType.js +18 -17
  68. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  69. package/lib/server/chromium/chromium.js +14 -14
  70. package/lib/server/chromium/chromiumSwitches.js +32 -1
  71. package/lib/server/chromium/crBrowser.js +15 -14
  72. package/lib/server/chromium/crConnection.js +2 -2
  73. package/lib/server/chromium/crCoverage.js +1 -1
  74. package/lib/server/chromium/crDevTools.js +1 -1
  75. package/lib/server/chromium/crDragDrop.js +1 -1
  76. package/lib/server/chromium/crExecutionContext.js +25 -17
  77. package/lib/server/chromium/crInput.js +2 -2
  78. package/lib/server/chromium/crNetworkManager.js +73 -26
  79. package/lib/server/chromium/crPage.js +22 -23
  80. package/lib/server/chromium/crPdf.js +1 -1
  81. package/lib/server/chromium/crProtocolHelper.js +3 -3
  82. package/lib/server/chromium/crServiceWorker.js +2 -2
  83. package/lib/server/chromium/videoRecorder.js +2 -2
  84. package/lib/server/clock.js +1 -1
  85. package/lib/server/codegen/javascript.js +1 -1
  86. package/lib/server/codegen/languages.js +2 -2
  87. package/lib/server/debugController.js +3 -3
  88. package/lib/server/deviceDescriptors.js +1 -1
  89. package/lib/server/deviceDescriptorsSource.json +131 -131
  90. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  91. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  92. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  93. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  94. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  95. package/lib/server/dispatchers/dispatcher.js +27 -25
  96. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  97. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  98. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  99. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  100. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  101. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  102. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  103. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  104. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  105. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  106. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  107. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  108. package/lib/server/dom.js +18 -12
  109. package/lib/server/download.js +1 -1
  110. package/lib/server/electron/electron.js +17 -16
  111. package/lib/server/errors.js +1 -1
  112. package/lib/server/fetch.js +50 -45
  113. package/lib/server/fileUploadUtils.js +7 -4
  114. package/lib/server/firefox/ffBrowser.js +11 -3
  115. package/lib/server/firefox/ffConnection.js +1 -1
  116. package/lib/server/firefox/ffExecutionContext.js +25 -17
  117. package/lib/server/firefox/ffNetworkManager.js +2 -2
  118. package/lib/server/firefox/ffPage.js +15 -21
  119. package/lib/server/firefox/firefox.js +7 -9
  120. package/lib/server/frameSelectors.js +1 -1
  121. package/lib/server/frames.js +366 -209
  122. package/lib/server/har/harRecorder.js +4 -4
  123. package/lib/server/har/harTracer.js +7 -8
  124. package/lib/server/harBackend.js +157 -0
  125. package/lib/server/helper.js +2 -2
  126. package/lib/server/index.js +1 -8
  127. package/lib/server/input.js +1 -1
  128. package/lib/server/instrumentation.js +2 -2
  129. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  130. package/lib/server/javascript.js +46 -33
  131. package/lib/server/launchApp.js +2 -2
  132. package/lib/server/localUtils.js +203 -0
  133. package/lib/server/network.js +3 -3
  134. package/lib/server/page.js +41 -22
  135. package/lib/server/pipeTransport.js +1 -1
  136. package/lib/server/playwright.js +5 -5
  137. package/lib/server/progress.js +1 -1
  138. package/lib/server/protocolError.js +1 -1
  139. package/lib/server/recorder/contextRecorder.js +3 -3
  140. package/lib/server/recorder/recorderApp.js +18 -12
  141. package/lib/server/recorder/recorderCollection.js +4 -4
  142. package/lib/server/recorder/throttledFile.js +3 -4
  143. package/lib/server/recorder.js +7 -5
  144. package/lib/server/registry/browserFetcher.js +9 -7
  145. package/lib/server/registry/dependencies.js +15 -15
  146. package/lib/server/registry/index.js +38 -44
  147. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  148. package/lib/server/screenshotter.js +1 -1
  149. package/lib/server/selectors.js +3 -3
  150. package/lib/server/socksClientCertificatesInterceptor.js +9 -9
  151. package/lib/server/socksInterceptor.js +8 -5
  152. package/lib/server/storageScript.js +160 -0
  153. package/lib/{common → server}/timeoutSettings.js +6 -5
  154. package/lib/server/trace/recorder/snapshotter.js +9 -8
  155. package/lib/server/trace/recorder/tracing.js +40 -31
  156. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  157. package/lib/server/trace/viewer/traceViewer.js +13 -5
  158. package/lib/server/transport.js +2 -2
  159. package/lib/{utils → server/utils}/comparators.js +4 -4
  160. package/lib/{utils → server/utils}/crypto.js +4 -4
  161. package/lib/{utils → server/utils}/debug.js +4 -12
  162. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  163. package/lib/{utils → server/utils}/env.js +4 -0
  164. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  165. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  166. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  167. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  168. package/lib/{utils → server/utils}/httpServer.js +8 -12
  169. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  170. package/lib/{utils → server/utils}/network.js +5 -5
  171. package/lib/server/utils/nodePlatform.js +140 -0
  172. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  173. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  174. package/lib/{utils → server/utils}/profiler.js +5 -6
  175. package/lib/{common → server/utils}/socksProxy.js +10 -9
  176. package/lib/{utils → server/utils}/userAgent.js +2 -16
  177. package/lib/{utils → server/utils}/wsServer.js +3 -3
  178. package/lib/{utils → server/utils}/zipFile.js +1 -1
  179. package/lib/{utils → server/utils}/zones.js +9 -24
  180. package/lib/server/webkit/webkit.js +4 -4
  181. package/lib/server/webkit/wkBrowser.js +4 -4
  182. package/lib/server/webkit/wkConnection.js +1 -1
  183. package/lib/server/webkit/wkExecutionContext.js +25 -17
  184. package/lib/server/webkit/wkInput.js +2 -2
  185. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  186. package/lib/server/webkit/wkPage.js +41 -40
  187. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  188. package/lib/server/webkit/wkWorkers.js +2 -2
  189. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  190. package/lib/utils/isomorphic/assert.js +25 -0
  191. package/lib/utils/isomorphic/colors.js +65 -0
  192. package/lib/utils/isomorphic/cssParser.js +1 -1
  193. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  194. package/lib/utils/isomorphic/locatorParser.js +2 -2
  195. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  196. package/lib/utils/isomorphic/mimeType.js +11 -3
  197. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  198. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  199. package/lib/utils/isomorphic/stackTrace.js +169 -0
  200. package/lib/utils/isomorphic/stringUtils.js +1 -1
  201. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  202. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  203. package/lib/utils/isomorphic/traceUtils.js +23 -0
  204. package/lib/{utils/index.js → utils.js} +200 -121
  205. package/lib/utilsBundle.js +1 -25
  206. package/lib/utilsBundleImpl/index.js +119 -121
  207. package/lib/vite/htmlReport/index.html +20 -20
  208. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  209. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  210. package/lib/vite/recorder/index.html +2 -2
  211. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  212. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  213. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  214. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  215. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  216. package/lib/vite/traceViewer/index.html +4 -4
  217. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  218. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  219. package/lib/vite/traceViewer/uiMode.html +4 -4
  220. package/lib/zipBundleImpl.js +4 -4
  221. package/package.json +7 -7
  222. package/types/protocol.d.ts +123 -99
  223. package/types/types.d.ts +110 -38
  224. package/lib/utils/stackTrace.js +0 -134
  225. package/lib/utils/traceUtils.js +0 -44
  226. package/lib/vite/recorder/assets/codeMirrorModule-3Qn3tPnZ.js +0 -24
  227. package/lib/vite/recorder/assets/index-Bek6JFv8.js +0 -184
  228. package/lib/vite/traceViewer/assets/codeMirrorModule-aLkSUGpW.js +0 -24
  229. package/lib/vite/traceViewer/assets/defaultSettingsView-CxUo6zd3.js +0 -243
  230. package/lib/vite/traceViewer/defaultSettingsView.DtIkrKWn.css +0 -1
  231. package/lib/vite/traceViewer/index.Bhu5cv5R.js +0 -2
  232. package/lib/vite/traceViewer/uiMode.BBy7FOVd.js +0 -5
  233. /package/lib/{utils → server/utils}/ascii.js +0 -0
  234. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  238. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  239. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  240. /package/lib/{utils → server/utils}/task.js +0 -0
  241. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  242. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  243. /package/lib/{common → utils/isomorphic}/types.js +0 -0
  244. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  245. /package/lib/vite/recorder/assets/{index-CAQewHss.css → index-eHBmevrY.css} +0 -0
  246. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  247. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  248. /package/lib/vite/traceViewer/{uiMode.Be_ME-Go.css → uiMode.BatfzHMG.css} +0 -0
  249. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -8,10 +8,10 @@ var _fs = _interopRequireDefault(require("fs"));
8
8
  var _path = _interopRequireDefault(require("path"));
9
9
  var _artifact = require("../artifact");
10
10
  var _harTracer = require("./harTracer");
11
+ var _crypto = require("../utils/crypto");
12
+ var _manualPromise = require("../../utils/isomorphic/manualPromise");
11
13
  var _zipBundle = require("../../zipBundle");
12
- var _manualPromise = require("../../utils/manualPromise");
13
- var _utils = require("../../utils");
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
15
  /**
16
16
  * Copyright (c) Microsoft Corporation.
17
17
  *
@@ -36,7 +36,7 @@ class HarRecorder {
36
36
  this._entries = [];
37
37
  this._zipFile = null;
38
38
  this._writtenZipEntries = new Set();
39
- this._artifact = new _artifact.Artifact(context, _path.default.join(context._browser.options.artifactsDir, `${(0, _utils.createGuid)()}.har`));
39
+ this._artifact = new _artifact.Artifact(context, _path.default.join(context._browser.options.artifactsDir, `${(0, _crypto.createGuid)()}.har`));
40
40
  const urlFilterRe = options.urlRegexSource !== undefined && options.urlRegexFlags !== undefined ? new RegExp(options.urlRegexSource, options.urlRegexFlags) : undefined;
41
41
  const expectsZip = options.path.endsWith('.zip');
42
42
  const content = options.content || (expectsZip ? 'attach' : 'embed');
@@ -4,17 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.HarTracer = void 0;
7
+ var _utils = require("../../utils");
8
+ var _eventsHelper = require("../utils/eventsHelper");
9
+ var _manualPromise = require("../../utils/isomorphic/manualPromise");
10
+ var _utilsBundle = require("../../utilsBundle");
7
11
  var _browserContext = require("../browserContext");
8
12
  var _fetch = require("../fetch");
13
+ var _frames = require("../frames");
9
14
  var _helper = require("../helper");
10
15
  var network = _interopRequireWildcard(require("../network"));
11
- var _utils = require("../../utils");
12
- var _eventsHelper = require("../../utils/eventsHelper");
13
- var _utilsBundle = require("../../utilsBundle");
14
- var _manualPromise = require("../../utils/manualPromise");
15
- var _frames = require("../frames");
16
16
  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); }
17
- 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; }
17
+ 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; }
18
18
  /**
19
19
  * Copyright (c) Microsoft Corporation.
20
20
  *
@@ -440,9 +440,8 @@ class HarTracer {
440
440
  return this._postDataForBuffer(postData, contentType, content);
441
441
  }
442
442
  _postDataForBuffer(postData, contentType, content) {
443
- var _contentType;
444
443
  if (!postData) return;
445
- (_contentType = contentType) !== null && _contentType !== void 0 ? _contentType : contentType = 'application/octet-stream';
444
+ contentType !== null && contentType !== void 0 ? contentType : contentType = 'application/octet-stream';
446
445
  const result = {
447
446
  mimeType: contentType,
448
447
  text: '',
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HarBackend = void 0;
7
+ var _fs = _interopRequireDefault(require("fs"));
8
+ var _path = _interopRequireDefault(require("path"));
9
+ var _crypto = require("./utils/crypto");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /**
12
+ * Copyright (c) Microsoft Corporation.
13
+ *
14
+ * Licensed under the Apache License, Version 2.0 (the 'License");
15
+ * you may not use this file except in compliance with the License.
16
+ * You may obtain a copy of the License at
17
+ *
18
+ * http://www.apache.org/licenses/LICENSE-2.0
19
+ *
20
+ * Unless required by applicable law or agreed to in writing, software
21
+ * distributed under the License is distributed on an "AS IS" BASIS,
22
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23
+ * See the License for the specific language governing permissions and
24
+ * limitations under the License.
25
+ */
26
+
27
+ const redirectStatus = [301, 302, 303, 307, 308];
28
+ class HarBackend {
29
+ constructor(harFile, baseDir, zipFile) {
30
+ this.id = void 0;
31
+ this._harFile = void 0;
32
+ this._zipFile = void 0;
33
+ this._baseDir = void 0;
34
+ this.id = (0, _crypto.createGuid)();
35
+ this._harFile = harFile;
36
+ this._baseDir = baseDir;
37
+ this._zipFile = zipFile;
38
+ }
39
+ async lookup(url, method, headers, postData, isNavigationRequest) {
40
+ let entry;
41
+ try {
42
+ entry = await this._harFindResponse(url, method, headers, postData);
43
+ } catch (e) {
44
+ return {
45
+ action: 'error',
46
+ message: 'HAR error: ' + e.message
47
+ };
48
+ }
49
+ if (!entry) return {
50
+ action: 'noentry'
51
+ };
52
+
53
+ // If navigation is being redirected, restart it with the final url to ensure the document's url changes.
54
+ if (entry.request.url !== url && isNavigationRequest) return {
55
+ action: 'redirect',
56
+ redirectURL: entry.request.url
57
+ };
58
+ const response = entry.response;
59
+ try {
60
+ const buffer = await this._loadContent(response.content);
61
+ return {
62
+ action: 'fulfill',
63
+ status: response.status,
64
+ headers: response.headers,
65
+ body: buffer
66
+ };
67
+ } catch (e) {
68
+ return {
69
+ action: 'error',
70
+ message: e.message
71
+ };
72
+ }
73
+ }
74
+ async _loadContent(content) {
75
+ const file = content._file;
76
+ let buffer;
77
+ if (file) {
78
+ if (this._zipFile) buffer = await this._zipFile.read(file);else buffer = await _fs.default.promises.readFile(_path.default.resolve(this._baseDir, file));
79
+ } else {
80
+ buffer = Buffer.from(content.text || '', content.encoding === 'base64' ? 'base64' : 'utf-8');
81
+ }
82
+ return buffer;
83
+ }
84
+ async _harFindResponse(url, method, headers, postData) {
85
+ const harLog = this._harFile.log;
86
+ const visited = new Set();
87
+ while (true) {
88
+ const entries = [];
89
+ for (const candidate of harLog.entries) {
90
+ if (candidate.request.url !== url || candidate.request.method !== method) continue;
91
+ if (method === 'POST' && postData && candidate.request.postData) {
92
+ const buffer = await this._loadContent(candidate.request.postData);
93
+ if (!buffer.equals(postData)) {
94
+ const boundary = multipartBoundary(headers);
95
+ if (!boundary) continue;
96
+ const candidataBoundary = multipartBoundary(candidate.request.headers);
97
+ if (!candidataBoundary) continue;
98
+ // Try to match multipart/form-data ignroing boundary as it changes between requests.
99
+ if (postData.toString().replaceAll(boundary, '') !== buffer.toString().replaceAll(candidataBoundary, '')) continue;
100
+ }
101
+ }
102
+ entries.push(candidate);
103
+ }
104
+ if (!entries.length) return;
105
+ let entry = entries[0];
106
+
107
+ // Disambiguate using headers - then one with most matching headers wins.
108
+ if (entries.length > 1) {
109
+ const list = [];
110
+ for (const candidate of entries) {
111
+ const matchingHeaders = countMatchingHeaders(candidate.request.headers, headers);
112
+ list.push({
113
+ candidate,
114
+ matchingHeaders
115
+ });
116
+ }
117
+ list.sort((a, b) => b.matchingHeaders - a.matchingHeaders);
118
+ entry = list[0].candidate;
119
+ }
120
+ if (visited.has(entry)) throw new Error(`Found redirect cycle for ${url}`);
121
+ visited.add(entry);
122
+
123
+ // Follow redirects.
124
+ const locationHeader = entry.response.headers.find(h => h.name.toLowerCase() === 'location');
125
+ if (redirectStatus.includes(entry.response.status) && locationHeader) {
126
+ const locationURL = new URL(locationHeader.value, url);
127
+ url = locationURL.toString();
128
+ if ((entry.response.status === 301 || entry.response.status === 302) && method === 'POST' || entry.response.status === 303 && !['GET', 'HEAD'].includes(method)) {
129
+ // HTTP-redirect fetch step 13 (https://fetch.spec.whatwg.org/#http-redirect-fetch)
130
+ method = 'GET';
131
+ }
132
+ continue;
133
+ }
134
+ return entry;
135
+ }
136
+ }
137
+ dispose() {
138
+ var _this$_zipFile;
139
+ (_this$_zipFile = this._zipFile) === null || _this$_zipFile === void 0 || _this$_zipFile.close();
140
+ }
141
+ }
142
+ exports.HarBackend = HarBackend;
143
+ function countMatchingHeaders(harHeaders, headers) {
144
+ const set = new Set(headers.map(h => h.name.toLowerCase() + ':' + h.value));
145
+ let matches = 0;
146
+ for (const h of harHeaders) {
147
+ if (set.has(h.name.toLowerCase() + ':' + h.value)) ++matches;
148
+ }
149
+ return matches;
150
+ }
151
+ function multipartBoundary(headers) {
152
+ const contentType = headers.find(h => h.name.toLowerCase() === 'content-type');
153
+ if (!(contentType !== null && contentType !== void 0 && contentType.value.includes('multipart/form-data'))) return undefined;
154
+ const boundary = contentType.value.match(/boundary=(\S+)/);
155
+ if (boundary) return boundary[1];
156
+ return undefined;
157
+ }
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.helper = void 0;
7
- var _debugLogger = require("../utils/debugLogger");
8
- var _eventsHelper = require("../utils/eventsHelper");
7
+ var _debugLogger = require("./utils/debugLogger");
8
+ var _eventsHelper = require("./utils/eventsHelper");
9
9
  /**
10
10
  * Copyright 2017 Google Inc. All rights reserved.
11
11
  * Modifications copyright (c) Microsoft Corporation.
@@ -27,12 +27,6 @@ Object.defineProperty(exports, "RootDispatcher", {
27
27
  return _dispatcher.RootDispatcher;
28
28
  }
29
29
  });
30
- Object.defineProperty(exports, "SocksProxy", {
31
- enumerable: true,
32
- get: function () {
33
- return _socksProxy.SocksProxy;
34
- }
35
- });
36
30
  Object.defineProperty(exports, "createPlaywright", {
37
31
  enumerable: true,
38
32
  get: function () {
@@ -104,5 +98,4 @@ var _dispatcher = require("./dispatchers/dispatcher");
104
98
  var _playwrightDispatcher = require("./dispatchers/playwrightDispatcher");
105
99
  var _playwright = require("./playwright");
106
100
  var _traceViewer = require("./trace/viewer/traceViewer");
107
- var _instrumentation = require("./instrumentation");
108
- var _socksProxy = require("../common/socksProxy");
101
+ var _instrumentation = require("./instrumentation");
@@ -9,7 +9,7 @@ exports.resolveSmartModifierString = resolveSmartModifierString;
9
9
  var _utils = require("../utils");
10
10
  var keyboardLayout = _interopRequireWildcard(require("./usKeyboardLayout"));
11
11
  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); }
12
- 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; }
12
+ 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; }
13
13
  /**
14
14
  * Copyright (c) Microsoft Corporation.
15
15
  *
@@ -7,7 +7,7 @@ exports.SdkObject = void 0;
7
7
  exports.createInstrumentation = createInstrumentation;
8
8
  exports.serverSideCallMetadata = serverSideCallMetadata;
9
9
  var _events = require("events");
10
- var _utils = require("../utils");
10
+ var _crypto = require("./utils/crypto");
11
11
  /**
12
12
  * Copyright (c) Microsoft Corporation. All rights reserved.
13
13
  *
@@ -30,7 +30,7 @@ class SdkObject extends _events.EventEmitter {
30
30
  this.guid = void 0;
31
31
  this.attribution = void 0;
32
32
  this.instrumentation = void 0;
33
- this.guid = guid || `${guidPrefix || ''}@${(0, _utils.createGuid)()}`;
33
+ this.guid = guid || `${guidPrefix || ''}@${(0, _crypto.createGuid)()}`;
34
34
  this.setMaxListeners(0);
35
35
  this.attribution = {
36
36
  ...parent.attribution
@@ -101,8 +101,11 @@ function source() {
101
101
  }
102
102
  function serialize(value, handleSerializer, visitorInfo) {
103
103
  if (value && typeof value === 'object') {
104
+ // eslint-disable-next-line no-restricted-globals
104
105
  if (typeof globalThis.Window === 'function' && value instanceof globalThis.Window) return 'ref: <Window>';
106
+ // eslint-disable-next-line no-restricted-globals
105
107
  if (typeof globalThis.Document === 'function' && value instanceof globalThis.Document) return 'ref: <Document>';
108
+ // eslint-disable-next-line no-restricted-globals
106
109
  if (typeof globalThis.Node === 'function' && value instanceof globalThis.Node) return 'ref: <Node>';
107
110
  }
108
111
  return innerSerialize(value, handleSerializer, visitorInfo);
@@ -10,13 +10,13 @@ exports.isJavaScriptErrorInEvaluate = isJavaScriptErrorInEvaluate;
10
10
  exports.normalizeEvaluationExpression = normalizeEvaluationExpression;
11
11
  exports.parseUnserializableValue = parseUnserializableValue;
12
12
  exports.sparseArrayToString = sparseArrayToString;
13
- var utilityScriptSource = _interopRequireWildcard(require("../generated/utilityScriptSource"));
14
- var _utilityScriptSerializers = require("./isomorphic/utilityScriptSerializers");
15
13
  var _instrumentation = require("./instrumentation");
16
- var _manualPromise = require("../utils/manualPromise");
14
+ var utilityScriptSource = _interopRequireWildcard(require("../generated/utilityScriptSource"));
17
15
  var _utils = require("../utils");
16
+ var _utilityScriptSerializers = require("./isomorphic/utilityScriptSerializers");
17
+ var _manualPromise = require("../utils/isomorphic/manualPromise");
18
18
  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); }
19
- 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; }
19
+ 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; }
20
20
  /**
21
21
  * Copyright (c) Microsoft Corporation.
22
22
  *
@@ -36,12 +36,12 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
36
36
  class ExecutionContext extends _instrumentation.SdkObject {
37
37
  constructor(parent, delegate, worldNameForTest) {
38
38
  super(parent, 'execution-context');
39
- this._delegate = void 0;
39
+ this.delegate = void 0;
40
40
  this._utilityScriptPromise = void 0;
41
41
  this._contextDestroyedScope = new _manualPromise.LongStandingScope();
42
42
  this.worldNameForTest = void 0;
43
43
  this.worldNameForTest = worldNameForTest;
44
- this._delegate = delegate;
44
+ this.delegate = delegate;
45
45
  }
46
46
  contextDestroyed(reason) {
47
47
  this._contextDestroyedScope.close(new Error(reason));
@@ -50,27 +50,25 @@ class ExecutionContext extends _instrumentation.SdkObject {
50
50
  return this._contextDestroyedScope.race(promise);
51
51
  }
52
52
  rawEvaluateJSON(expression) {
53
- return this._raceAgainstContextDestroyed(this._delegate.rawEvaluateJSON(expression));
53
+ return this._raceAgainstContextDestroyed(this.delegate.rawEvaluateJSON(expression));
54
54
  }
55
55
  rawEvaluateHandle(expression) {
56
- return this._raceAgainstContextDestroyed(this._delegate.rawEvaluateHandle(expression));
57
- }
58
- evaluateWithArguments(expression, returnByValue, utilityScript, values, objectIds) {
59
- return this._raceAgainstContextDestroyed(this._delegate.evaluateWithArguments(expression, returnByValue, utilityScript, values, objectIds));
56
+ return this._raceAgainstContextDestroyed(this.delegate.rawEvaluateHandle(this, expression));
60
57
  }
61
- getProperties(context, objectId) {
62
- return this._raceAgainstContextDestroyed(this._delegate.getProperties(context, objectId));
58
+ async evaluateWithArguments(expression, returnByValue, values, handles) {
59
+ const utilityScript = await this._utilityScript();
60
+ return this._raceAgainstContextDestroyed(this.delegate.evaluateWithArguments(expression, returnByValue, utilityScript, values, handles));
63
61
  }
64
- createHandle(remoteObject) {
65
- return this._delegate.createHandle(this, remoteObject);
62
+ getProperties(object) {
63
+ return this._raceAgainstContextDestroyed(this.delegate.getProperties(object));
66
64
  }
67
- releaseHandle(objectId) {
68
- return this._delegate.releaseHandle(objectId);
65
+ releaseHandle(handle) {
66
+ return this.delegate.releaseHandle(handle);
69
67
  }
70
68
  adoptIfNeeded(handle) {
71
69
  return null;
72
70
  }
73
- utilityScript() {
71
+ _utilityScript() {
74
72
  if (!this._utilityScriptPromise) {
75
73
  const source = `
76
74
  (() => {
@@ -78,7 +76,10 @@ class ExecutionContext extends _instrumentation.SdkObject {
78
76
  ${utilityScriptSource.source}
79
77
  return new (module.exports.UtilityScript())(${(0, _utils.isUnderTest)()});
80
78
  })();`;
81
- this._utilityScriptPromise = this._raceAgainstContextDestroyed(this._delegate.rawEvaluateHandle(source).then(objectId => new JSHandle(this, 'object', 'UtilityScript', objectId)));
79
+ this._utilityScriptPromise = this._raceAgainstContextDestroyed(this.delegate.rawEvaluateHandle(this, source)).then(handle => {
80
+ handle._setPreview('UtilityScript');
81
+ return handle;
82
+ });
82
83
  }
83
84
  return this._utilityScriptPromise;
84
85
  }
@@ -111,20 +112,34 @@ class JSHandle extends _instrumentation.SdkObject {
111
112
  async evaluateHandle(pageFunction, arg) {
112
113
  return evaluate(this._context, false /* returnByValue */, pageFunction, this, arg);
113
114
  }
114
- async evaluateExpression(expression, options, arg) {
115
- const value = await evaluateExpression(this._context, expression, {
115
+ async evaluateExpression(expression, options, arg, isolatedContext) {
116
+ let context = this._context;
117
+ if (context.constructor.name === "FrameExecutionContext") {
118
+ const frame = context.frame;
119
+ if (frame) {
120
+ if (isolatedContext) context = await frame._utilityContext();else if (!isolatedContext) context = await frame._mainContext();
121
+ }
122
+ }
123
+ const value = await evaluateExpression(context, expression, {
116
124
  ...options,
117
125
  returnByValue: true
118
126
  }, this, arg);
119
- await this._context.doSlowMo();
127
+ await context.doSlowMo();
120
128
  return value;
121
129
  }
122
- async evaluateExpressionHandle(expression, options, arg) {
123
- const value = await evaluateExpression(this._context, expression, {
130
+ async evaluateExpressionHandle(expression, options, arg, isolatedContext) {
131
+ let context = this._context;
132
+ if (this._context.constructor.name === "FrameExecutionContext") {
133
+ const frame = this._context.frame;
134
+ if (frame) {
135
+ if (isolatedContext) context = await frame._utilityContext();else if (!isolatedContext) context = await frame._mainContext();
136
+ }
137
+ }
138
+ const value = await evaluateExpression(context, expression, {
124
139
  ...options,
125
140
  returnByValue: false
126
141
  }, this, arg);
127
- await this._context.doSlowMo();
142
+ await context.doSlowMo();
128
143
  return value;
129
144
  }
130
145
  async getProperty(propertyName) {
@@ -142,16 +157,15 @@ class JSHandle extends _instrumentation.SdkObject {
142
157
  }
143
158
  async getProperties() {
144
159
  if (!this._objectId) return new Map();
145
- return this._context.getProperties(this._context, this._objectId);
160
+ return this._context.getProperties(this);
146
161
  }
147
162
  rawValue() {
148
163
  return this._value;
149
164
  }
150
165
  async jsonValue() {
151
166
  if (!this._objectId) return this._value;
152
- const utilityScript = await this._context.utilityScript();
153
167
  const script = `(utilityScript, ...args) => utilityScript.jsonValue(...args)`;
154
- return this._context.evaluateWithArguments(script, true, utilityScript, [true], [this._objectId]);
168
+ return this._context.evaluateWithArguments(script, true, [true], [this]);
155
169
  }
156
170
  asElement() {
157
171
  return null;
@@ -160,7 +174,7 @@ class JSHandle extends _instrumentation.SdkObject {
160
174
  if (this._disposed) return;
161
175
  this._disposed = true;
162
176
  if (this._objectId) {
163
- this._context.releaseHandle(this._objectId).catch(e => {});
177
+ this._context.releaseHandle(this).catch(e => {});
164
178
  if (globalThis.leakedJSHandles) globalThis.leakedJSHandles.delete(this);
165
179
  }
166
180
  }
@@ -189,7 +203,6 @@ async function evaluate(context, returnByValue, pageFunction, ...args) {
189
203
  }, ...args);
190
204
  }
191
205
  async function evaluateExpression(context, expression, options, ...args) {
192
- const utilityScript = await context.utilityScript();
193
206
  expression = normalizeEvaluationExpression(expression, options.isFunction);
194
207
  const handles = [];
195
208
  const toDispose = [];
@@ -216,17 +229,17 @@ async function evaluateExpression(context, expression, options, ...args) {
216
229
  fallThrough: handle
217
230
  };
218
231
  }));
219
- const utilityScriptObjectIds = [];
232
+ const utilityScriptObjects = [];
220
233
  for (const handle of await Promise.all(handles)) {
221
234
  if (handle._context !== context) throw new JavaScriptErrorInEvaluate('JSHandles can be evaluated only in the context they were created!');
222
- utilityScriptObjectIds.push(handle._objectId);
235
+ utilityScriptObjects.push(handle);
223
236
  }
224
237
 
225
238
  // See UtilityScript for arguments.
226
239
  const utilityScriptValues = [options.isFunction, options.returnByValue, expression, args.length, ...args];
227
240
  const script = `(utilityScript, ...args) => utilityScript.evaluate(...args)`;
228
241
  try {
229
- return await context.evaluateWithArguments(script, options.returnByValue || false, utilityScript, utilityScriptValues, utilityScriptObjectIds);
242
+ return await context.evaluateWithArguments(script, options.returnByValue || false, utilityScriptValues, utilityScriptObjects);
230
243
  } finally {
231
244
  toDispose.map(handlePromise => handlePromise.then(handle => handle.dispose()));
232
245
  }
@@ -7,10 +7,10 @@ exports.launchApp = launchApp;
7
7
  exports.syncLocalStorageWithSettings = syncLocalStorageWithSettings;
8
8
  var _fs = _interopRequireDefault(require("fs"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
- var _registry = require("./registry");
11
10
  var _utils = require("../utils");
12
11
  var _instrumentation = require("./instrumentation");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _registry = require("./registry");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  /**
15
15
  * Copyright (c) Microsoft Corporation.
16
16
  *