patchright-core 1.50.1 → 1.51.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 (242) hide show
  1. package/ThirdPartyNotices.txt +1 -43
  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/inProcessFactory.js +6 -3
  46. package/lib/outofprocess.js +12 -8
  47. package/lib/protocol/validator.js +64 -13
  48. package/lib/protocol/validatorPrimitives.js +1 -2
  49. package/lib/remote/playwrightConnection.js +18 -10
  50. package/lib/remote/playwrightServer.js +20 -7
  51. package/lib/server/android/android.js +17 -14
  52. package/lib/server/android/backendAdb.js +14 -14
  53. package/lib/server/artifact.js +3 -3
  54. package/lib/server/bidi/bidiBrowser.js +2 -2
  55. package/lib/server/bidi/bidiChromium.js +4 -3
  56. package/lib/server/bidi/bidiConnection.js +1 -1
  57. package/lib/server/bidi/bidiExecutionContext.js +70 -40
  58. package/lib/server/bidi/bidiFirefox.js +4 -3
  59. package/lib/server/bidi/bidiInput.js +5 -8
  60. package/lib/server/bidi/bidiNetworkManager.js +3 -3
  61. package/lib/server/bidi/bidiOverCdp.js +2 -2
  62. package/lib/server/bidi/bidiPage.js +30 -46
  63. package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
  64. package/lib/server/browser.js +2 -2
  65. package/lib/server/browserContext.js +37 -40
  66. package/lib/server/browserType.js +18 -17
  67. package/lib/{utils/sequence.js → server/callLog.js} +18 -3
  68. package/lib/server/chromium/chromium.js +14 -14
  69. package/lib/server/chromium/chromiumSwitches.js +32 -1
  70. package/lib/server/chromium/crBrowser.js +15 -14
  71. package/lib/server/chromium/crConnection.js +2 -2
  72. package/lib/server/chromium/crCoverage.js +1 -1
  73. package/lib/server/chromium/crDevTools.js +1 -1
  74. package/lib/server/chromium/crDragDrop.js +1 -1
  75. package/lib/server/chromium/crExecutionContext.js +25 -17
  76. package/lib/server/chromium/crInput.js +2 -2
  77. package/lib/server/chromium/crNetworkManager.js +73 -26
  78. package/lib/server/chromium/crPage.js +22 -23
  79. package/lib/server/chromium/crPdf.js +1 -1
  80. package/lib/server/chromium/crProtocolHelper.js +3 -3
  81. package/lib/server/chromium/crServiceWorker.js +2 -2
  82. package/lib/server/chromium/videoRecorder.js +2 -2
  83. package/lib/server/clock.js +1 -1
  84. package/lib/server/codegen/javascript.js +1 -1
  85. package/lib/server/codegen/languages.js +2 -2
  86. package/lib/server/debugController.js +3 -3
  87. package/lib/server/deviceDescriptors.js +1 -1
  88. package/lib/server/deviceDescriptorsSource.json +131 -131
  89. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  90. package/lib/server/dispatchers/artifactDispatcher.js +3 -3
  91. package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
  94. package/lib/server/dispatchers/dispatcher.js +27 -25
  95. package/lib/server/dispatchers/electronDispatcher.js +3 -3
  96. package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
  97. package/lib/server/dispatchers/frameDispatcher.js +4 -4
  98. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  99. package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
  100. package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
  101. package/lib/server/dispatchers/networkDispatchers.js +3 -3
  102. package/lib/server/dispatchers/pageDispatcher.js +11 -9
  103. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  104. package/lib/server/dispatchers/streamDispatcher.js +4 -3
  105. package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
  106. package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
  107. package/lib/server/dom.js +18 -12
  108. package/lib/server/download.js +1 -1
  109. package/lib/server/electron/electron.js +17 -16
  110. package/lib/server/errors.js +1 -1
  111. package/lib/server/fetch.js +36 -25
  112. package/lib/server/fileUploadUtils.js +7 -4
  113. package/lib/server/firefox/ffBrowser.js +8 -2
  114. package/lib/server/firefox/ffConnection.js +1 -1
  115. package/lib/server/firefox/ffExecutionContext.js +25 -17
  116. package/lib/server/firefox/ffNetworkManager.js +2 -2
  117. package/lib/server/firefox/ffPage.js +15 -21
  118. package/lib/server/firefox/firefox.js +7 -9
  119. package/lib/server/frameSelectors.js +1 -1
  120. package/lib/server/frames.js +366 -209
  121. package/lib/server/har/harRecorder.js +4 -4
  122. package/lib/server/har/harTracer.js +7 -8
  123. package/lib/server/harBackend.js +157 -0
  124. package/lib/server/helper.js +2 -2
  125. package/lib/server/index.js +1 -8
  126. package/lib/server/input.js +1 -1
  127. package/lib/server/instrumentation.js +2 -2
  128. package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
  129. package/lib/server/javascript.js +46 -33
  130. package/lib/server/launchApp.js +2 -2
  131. package/lib/server/localUtils.js +203 -0
  132. package/lib/server/network.js +3 -3
  133. package/lib/server/page.js +41 -22
  134. package/lib/server/pipeTransport.js +1 -1
  135. package/lib/server/playwright.js +5 -5
  136. package/lib/server/progress.js +1 -1
  137. package/lib/server/protocolError.js +1 -1
  138. package/lib/server/recorder/contextRecorder.js +3 -3
  139. package/lib/server/recorder/recorderApp.js +18 -12
  140. package/lib/server/recorder/recorderCollection.js +3 -3
  141. package/lib/server/recorder/throttledFile.js +3 -4
  142. package/lib/server/recorder.js +7 -5
  143. package/lib/server/registry/browserFetcher.js +9 -7
  144. package/lib/server/registry/dependencies.js +15 -15
  145. package/lib/server/registry/index.js +38 -44
  146. package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
  147. package/lib/server/screenshotter.js +1 -1
  148. package/lib/server/selectors.js +3 -3
  149. package/lib/server/socksClientCertificatesInterceptor.js +8 -8
  150. package/lib/server/socksInterceptor.js +8 -5
  151. package/lib/server/storageScript.js +160 -0
  152. package/lib/{common → server}/timeoutSettings.js +6 -5
  153. package/lib/server/trace/recorder/snapshotter.js +9 -8
  154. package/lib/server/trace/recorder/tracing.js +40 -31
  155. package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
  156. package/lib/server/trace/viewer/traceViewer.js +13 -5
  157. package/lib/server/transport.js +2 -2
  158. package/lib/{utils → server/utils}/comparators.js +4 -4
  159. package/lib/{utils → server/utils}/crypto.js +4 -4
  160. package/lib/{utils → server/utils}/debug.js +4 -12
  161. package/lib/{utils → server/utils}/debugLogger.js +2 -2
  162. package/lib/{utils → server/utils}/env.js +4 -0
  163. package/lib/{utils → server/utils}/expectUtils.js +1 -1
  164. package/lib/{utils → server/utils}/fileUtils.js +4 -5
  165. package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
  166. package/lib/{utils → server/utils}/hostPlatform.js +1 -1
  167. package/lib/{utils → server/utils}/httpServer.js +8 -8
  168. package/lib/{utils → server/utils}/linuxUtils.js +3 -23
  169. package/lib/{utils → server/utils}/network.js +4 -4
  170. package/lib/server/utils/nodePlatform.js +140 -0
  171. package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
  172. package/lib/{utils → server/utils}/processLauncher.js +5 -5
  173. package/lib/{utils → server/utils}/profiler.js +5 -6
  174. package/lib/{common → server/utils}/socksProxy.js +10 -9
  175. package/lib/{utils → server/utils}/userAgent.js +2 -16
  176. package/lib/{utils → server/utils}/wsServer.js +3 -3
  177. package/lib/{utils → server/utils}/zipFile.js +1 -1
  178. package/lib/{utils → server/utils}/zones.js +9 -24
  179. package/lib/server/webkit/webkit.js +4 -4
  180. package/lib/server/webkit/wkBrowser.js +4 -4
  181. package/lib/server/webkit/wkConnection.js +1 -1
  182. package/lib/server/webkit/wkExecutionContext.js +25 -17
  183. package/lib/server/webkit/wkInput.js +2 -2
  184. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  185. package/lib/server/webkit/wkPage.js +41 -40
  186. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  187. package/lib/server/webkit/wkWorkers.js +2 -2
  188. package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
  189. package/lib/utils/isomorphic/assert.js +25 -0
  190. package/lib/utils/isomorphic/colors.js +65 -0
  191. package/lib/utils/isomorphic/cssParser.js +1 -1
  192. package/lib/utils/isomorphic/locatorGenerators.js +13 -1
  193. package/lib/utils/isomorphic/locatorParser.js +2 -2
  194. package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
  195. package/lib/utils/isomorphic/mimeType.js +11 -3
  196. package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
  197. package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
  198. package/lib/utils/isomorphic/stackTrace.js +169 -0
  199. package/lib/utils/isomorphic/stringUtils.js +1 -1
  200. package/lib/utils/{time.js → isomorphic/time.js} +1 -13
  201. package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
  202. package/lib/utils/isomorphic/traceUtils.js +23 -0
  203. package/lib/{utils/index.js → utils.js} +200 -121
  204. package/lib/utilsBundle.js +1 -25
  205. package/lib/utilsBundleImpl/index.js +114 -116
  206. package/lib/vite/htmlReport/index.html +20 -20
  207. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
  208. package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
  209. package/lib/vite/recorder/index.html +1 -1
  210. package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
  211. package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
  212. package/lib/vite/traceViewer/assets/{xtermModule-c-SNdYZy.js → xtermModule-BoAIEibi.js} +7 -7
  213. package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
  214. package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
  215. package/lib/vite/traceViewer/index.html +3 -3
  216. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  217. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
  218. package/lib/vite/traceViewer/uiMode.html +3 -3
  219. package/lib/zipBundleImpl.js +4 -4
  220. package/package.json +7 -7
  221. package/types/protocol.d.ts +123 -99
  222. package/types/types.d.ts +91 -37
  223. package/lib/utils/stackTrace.js +0 -134
  224. package/lib/utils/traceUtils.js +0 -44
  225. package/lib/vite/recorder/assets/codeMirrorModule-CNAqJrkA.js +0 -24
  226. package/lib/vite/recorder/assets/index-DGS0JLxS.js +0 -184
  227. package/lib/vite/traceViewer/assets/codeMirrorModule-D55P_UuL.js +0 -24
  228. package/lib/vite/traceViewer/assets/defaultSettingsView-B-uNoFsX.js +0 -243
  229. package/lib/vite/traceViewer/defaultSettingsView.2xeEXCXv.css +0 -1
  230. package/lib/vite/traceViewer/index.BfvuujqP.js +0 -2
  231. package/lib/vite/traceViewer/uiMode.CStJu6jo.js +0 -5
  232. /package/lib/{utils → server/utils}/ascii.js +0 -0
  233. /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
  234. /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
  235. /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
  236. /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
  237. /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
  238. /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
  239. /package/lib/{utils → server/utils}/task.js +0 -0
  240. /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
  241. /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
  242. /package/lib/{common → utils/isomorphic}/types.js +0 -0
@@ -6,13 +6,15 @@ 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
- var _elementHandle = require("./elementHandle");
12
9
  var _jsHandle = require("./jsHandle");
13
- var _stringUtils = require("../utils/isomorphic/stringUtils");
10
+ var _elementHandle = require("./elementHandle");
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
+ // undetected-undetected_playwright-patch - custom imports
17
+
16
18
  /**
17
19
  * Copyright (c) Microsoft Corporation.
18
20
  *
@@ -28,9 +30,7 @@ let _util$inspect$custom;
28
30
  * See the License for the specific language governing permissions and
29
31
  * limitations under the License.
30
32
  */
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;
33
+
34
34
  class Locator {
35
35
  constructor(frame, selector, options) {
36
36
  this._frame = void 0;
@@ -49,12 +49,14 @@ class Locator {
49
49
  if (locator._frame !== frame) throw new Error(`Inner "hasNot" locator must belong to the same frame.`);
50
50
  this._selector += ` >> internal:has-not=` + JSON.stringify(locator._selector);
51
51
  }
52
+ if ((options === null || options === void 0 ? void 0 : options.visible) !== undefined) this._selector += ` >> visible=${options.visible ? 'true' : 'false'}`;
53
+ if (this._frame._platform.inspectCustom) this[this._frame._platform.inspectCustom] = () => this._inspect();
52
54
  }
53
55
  async _withElement(task, timeout) {
54
56
  timeout = this._frame.page()._timeoutSettings.timeout({
55
57
  timeout
56
58
  });
57
- const deadline = timeout ? (0, _utils.monotonicTime)() + timeout : 0;
59
+ const deadline = timeout ? (0, _time.monotonicTime)() + timeout : 0;
58
60
  return await this._frame._wrapApiCall(async () => {
59
61
  const result = await this._frame._channel.waitForSelector({
60
62
  selector: this._selector,
@@ -65,7 +67,7 @@ class Locator {
65
67
  const handle = _elementHandle.ElementHandle.fromNullable(result.element);
66
68
  if (!handle) throw new Error(`Could not resolve ${this._selector} to DOM Element`);
67
69
  try {
68
- return await task(handle, deadline ? deadline - (0, _utils.monotonicTime)() : 0);
70
+ return await task(handle, deadline ? deadline - (0, _time.monotonicTime)() : 0);
69
71
  } finally {
70
72
  await handle.dispose();
71
73
  }
@@ -110,14 +112,24 @@ class Locator {
110
112
  ...options
111
113
  });
112
114
  }
113
- async evaluate(pageFunction, arg, options) {
114
- return await this._withElement(h => h.evaluate(pageFunction, arg), options === null || options === void 0 ? void 0 : options.timeout);
115
+ async evaluate(pageFunction, arg, options, isolatedContext = true) {
116
+ return await this._withElement(async h => (0, _jsHandle.parseResult)((await h._channel.evaluateExpression({
117
+ expression: String(pageFunction),
118
+ isFunction: typeof pageFunction === "function",
119
+ arg: (0, _jsHandle.serializeArgument)(arg),
120
+ isolatedContext: isolatedContext
121
+ })).value), options === null || options === void 0 ? void 0 : options.timeout);
115
122
  }
116
123
  async evaluateAll(pageFunction, arg) {
117
124
  return await this._frame.$$eval(this._selector, pageFunction, arg);
118
125
  }
119
- async evaluateHandle(pageFunction, arg, options) {
120
- return await this._withElement(h => h.evaluateHandle(pageFunction, arg), options === null || options === void 0 ? void 0 : options.timeout);
126
+ async evaluateHandle(pageFunction, arg, options, isolatedContext = true) {
127
+ return await this._withElement(async h => _jsHandle.JSHandle.from((await h._channel.evaluateExpressionHandle({
128
+ expression: String(pageFunction),
129
+ isFunction: typeof pageFunction === "function",
130
+ arg: (0, _jsHandle.serializeArgument)(arg),
131
+ isolatedContext: isolatedContext
132
+ })).handle), options === null || options === void 0 ? void 0 : options.timeout);
121
133
  }
122
134
  async fill(value, options = {}) {
123
135
  return await this._frame.fill(this._selector, value, {
@@ -136,7 +148,7 @@ class Locator {
136
148
  return await this._frame._highlight(this._selector);
137
149
  }
138
150
  locator(selectorOrLocator, options) {
139
- if ((0, _utils.isString)(selectorOrLocator)) return new Locator(this._frame, this._selector + ' >> ' + selectorOrLocator, options);
151
+ if ((0, _rtti.isString)(selectorOrLocator)) return new Locator(this._frame, this._selector + ' >> ' + selectorOrLocator, options);
140
152
  if (selectorOrLocator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);
141
153
  return new Locator(this._frame, this._selector + ' >> internal:chain=' + JSON.stringify(selectorOrLocator._selector), options);
142
154
  }
@@ -213,6 +225,9 @@ class Locator {
213
225
  async count() {
214
226
  return await this._frame._queryCount(this._selector);
215
227
  }
228
+ async _generateLocatorString() {
229
+ return await this._withElement(h => h._generateLocatorString());
230
+ }
216
231
  async getAttribute(name, options) {
217
232
  return await this._frame.getAttribute(this._selector, name, {
218
233
  strict: true,
@@ -286,14 +301,18 @@ class Locator {
286
301
  });
287
302
  }
288
303
  async screenshot(options = {}) {
304
+ const mask = options.mask;
289
305
  return await this._withElement((h, timeout) => h.screenshot({
290
306
  ...options,
307
+ mask,
291
308
  timeout
292
309
  }), options.timeout);
293
310
  }
294
311
  async ariaSnapshot(options) {
295
312
  const result = await this._frame._channel.ariaSnapshot({
296
313
  ...options,
314
+ id: options === null || options === void 0 ? void 0 : options._id,
315
+ mode: options === null || options === void 0 ? void 0 : options._mode,
297
316
  selector: this._selector
298
317
  });
299
318
  return result.snapshot;
@@ -381,11 +400,11 @@ class Locator {
381
400
  if (result.received !== undefined) result.received = (0, _jsHandle.parseResult)(result.received);
382
401
  return result;
383
402
  }
384
- [_util$inspect$custom]() {
403
+ _inspect() {
385
404
  return this.toString();
386
405
  }
387
406
  toString() {
388
- return (0, _utils.asLocator)('javascript', this._selector);
407
+ return (0, _locatorGenerators.asLocator)('javascript', this._selector);
389
408
  }
390
409
  }
391
410
  exports.Locator = Locator;
@@ -397,7 +416,7 @@ class FrameLocator {
397
416
  this._frameSelector = selector;
398
417
  }
399
418
  locator(selectorOrLocator, options) {
400
- if ((0, _utils.isString)(selectorOrLocator)) return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator, options);
419
+ if ((0, _rtti.isString)(selectorOrLocator)) return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator, options);
401
420
  if (selectorOrLocator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);
402
421
  return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator._selector, options);
403
422
  }
@@ -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;
@@ -88,7 +90,7 @@ class Request extends _channelOwner.ChannelOwner {
88
90
  const contentType = this.headers()['content-type'];
89
91
  if (contentType !== null && contentType !== void 0 && contentType.includes('application/x-www-form-urlencoded')) {
90
92
  const entries = {};
91
- const parsed = new _url.URLSearchParams(postData);
93
+ const parsed = new URLSearchParams(postData);
92
94
  for (const [k, v] of parsed.entries()) entries[k] = v;
93
95
  return entries;
94
96
  }
@@ -134,7 +136,7 @@ class Request extends _channelOwner.ChannelOwner {
134
136
  }
135
137
  frame() {
136
138
  if (!this._initializer.frame) {
137
- (0, _utils.assert)(this.serviceWorker());
139
+ (0, _assert.assert)(this.serviceWorker());
138
140
  throw new Error('Service Worker requests do not have an associated frame.');
139
141
  }
140
142
  const frame = _frame.Frame.from(this._initializer.frame);
@@ -184,7 +186,7 @@ class Request extends _channelOwner.ChannelOwner {
184
186
  if (overrides.url) this._fallbackOverrides.url = overrides.url;
185
187
  if (overrides.method) this._fallbackOverrides.method = overrides.method;
186
188
  if (overrides.headers) this._fallbackOverrides.headers = overrides.headers;
187
- 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');
188
190
  }
189
191
  _fallbackOverridesForContinue() {
190
192
  return this._fallbackOverrides;
@@ -272,13 +274,12 @@ class Route extends _channelOwner.ChannelOwner {
272
274
  body
273
275
  } = options;
274
276
  if (options.json !== undefined) {
275
- (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');
276
278
  body = JSON.stringify(options.json);
277
279
  }
278
280
  if (options.response instanceof _fetch.APIResponse) {
279
- var _statusOption, _headersOption;
280
- (_statusOption = statusOption) !== null && _statusOption !== void 0 ? _statusOption : statusOption = options.response.status();
281
- (_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();
282
283
  if (body === undefined && options.path === undefined) {
283
284
  if (options.response._request._connection === this._connection) fetchResponseUid = options.response._fetchUid();else body = await options.response.body();
284
285
  }
@@ -286,11 +287,11 @@ class Route extends _channelOwner.ChannelOwner {
286
287
  let isBase64 = false;
287
288
  let length = 0;
288
289
  if (options.path) {
289
- const buffer = await _fs.default.promises.readFile(options.path);
290
+ const buffer = await this._platform.fs().promises.readFile(options.path);
290
291
  body = buffer.toString('base64');
291
292
  isBase64 = true;
292
293
  length = buffer.length;
293
- } else if ((0, _utils.isString)(body)) {
294
+ } else if ((0, _rtti.isString)(body)) {
294
295
  isBase64 = false;
295
296
  length = Buffer.byteLength(body);
296
297
  } else if (body) {
@@ -300,11 +301,11 @@ class Route extends _channelOwner.ChannelOwner {
300
301
  }
301
302
  const headers = {};
302
303
  for (const header of Object.keys(headersOption || {})) headers[header.toLowerCase()] = String(headersOption[header]);
303
- 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';
304
305
  if (length && !('content-length' in headers)) headers['content-length'] = String(length);
305
306
  await this._raceWithTargetClose(this._channel.fulfill({
306
307
  status: statusOption || 200,
307
- headers: (0, _utils.headersObjectToArray)(headers),
308
+ headers: (0, _headers.headersObjectToArray)(headers),
308
309
  body,
309
310
  isBase64,
310
311
  fetchResponseUid
@@ -329,14 +330,13 @@ class Route extends _channelOwner.ChannelOwner {
329
330
  return await this._raceWithTargetClose(this._channel.continue({
330
331
  url: options.url,
331
332
  method: options.method,
332
- headers: options.headers ? (0, _utils.headersObjectToArray)(options.headers) : undefined,
333
+ headers: options.headers ? (0, _headers.headersObjectToArray)(options.headers) : undefined,
333
334
  postData: options.postDataBuffer,
334
335
  isFallback
335
336
  }));
336
337
  }
337
338
  }
338
339
  exports.Route = Route;
339
- _Symbol$asyncDispose = Symbol.asyncDispose;
340
340
  class WebSocketRoute extends _channelOwner.ChannelOwner {
341
341
  static from(route) {
342
342
  return route._object;
@@ -370,7 +370,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
370
370
  }).catch(() => {});
371
371
  },
372
372
  send: message => {
373
- if ((0, _utils.isString)(message)) this._channel.sendToServer({
373
+ if ((0, _rtti.isString)(message)) this._channel.sendToServer({
374
374
  message,
375
375
  isBase64: false
376
376
  }).catch(() => {});else this._channel.sendToServer({
@@ -439,7 +439,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
439
439
  return this._server;
440
440
  }
441
441
  send(message) {
442
- if ((0, _utils.isString)(message)) this._channel.sendToPage({
442
+ if ((0, _rtti.isString)(message)) this._channel.sendToPage({
443
443
  message,
444
444
  isBase64: false
445
445
  }).catch(() => {});else this._channel.sendToPage({
@@ -453,7 +453,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
453
453
  onClose(handler) {
454
454
  this._onPageClose = handler;
455
455
  }
456
- async [_Symbol$asyncDispose]() {
456
+ async [Symbol.asyncDispose]() {
457
457
  await this.close();
458
458
  }
459
459
  async _afterHandle() {
@@ -476,9 +476,9 @@ class WebSocketRouteHandler {
476
476
  const patterns = [];
477
477
  let all = false;
478
478
  for (const handler of handlers) {
479
- if ((0, _utils.isString)(handler.url)) patterns.push({
479
+ if ((0, _rtti.isString)(handler.url)) patterns.push({
480
480
  glob: handler.url
481
- });else if ((0, _utils.isRegExp)(handler.url)) patterns.push({
481
+ });else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
482
482
  regexSource: handler.url.source,
483
483
  regexFlags: handler.url.flags
484
484
  });else all = true;
@@ -489,7 +489,7 @@ class WebSocketRouteHandler {
489
489
  return patterns;
490
490
  }
491
491
  matches(wsURL) {
492
- return (0, _utils.urlMatches)(this._baseURL, wsURL, this.url);
492
+ return (0, _urlMatch.urlMatches)(this._baseURL, wsURL, this.url);
493
493
  }
494
494
  async handle(webSocketRoute) {
495
495
  const handler = this.handler;
@@ -644,11 +644,11 @@ exports.WebSocket = WebSocket;
644
644
  function validateHeaders(headers) {
645
645
  for (const key of Object.keys(headers)) {
646
646
  const value = headers[key];
647
- 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.`);
648
648
  }
649
649
  }
650
650
  class RouteHandler {
651
- constructor(baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
651
+ constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
652
652
  this.handledCount = 0;
653
653
  this._baseURL = void 0;
654
654
  this._times = void 0;
@@ -656,20 +656,20 @@ class RouteHandler {
656
656
  this.handler = void 0;
657
657
  this._ignoreException = false;
658
658
  this._activeInvocations = new Set();
659
- this._svedZone = void 0;
659
+ this._savedZone = void 0;
660
660
  this._baseURL = baseURL;
661
661
  this._times = times;
662
662
  this.url = url;
663
663
  this.handler = handler;
664
- this._svedZone = _utils.zones.current().without('apiZone');
664
+ this._savedZone = platform.zones.current().pop();
665
665
  }
666
666
  static prepareInterceptionPatterns(handlers) {
667
667
  const patterns = [];
668
668
  let all = false;
669
669
  for (const handler of handlers) {
670
- if ((0, _utils.isString)(handler.url)) patterns.push({
670
+ if ((0, _rtti.isString)(handler.url)) patterns.push({
671
671
  glob: handler.url
672
- });else if ((0, _utils.isRegExp)(handler.url)) patterns.push({
672
+ });else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
673
673
  regexSource: handler.url.source,
674
674
  regexFlags: handler.url.flags
675
675
  });else all = true;
@@ -680,10 +680,10 @@ class RouteHandler {
680
680
  return patterns;
681
681
  }
682
682
  matches(requestURL) {
683
- return (0, _utils.urlMatches)(this._baseURL, requestURL, this.url);
683
+ return (0, _urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
684
684
  }
685
685
  async handle(route) {
686
- return await this._svedZone.run(async () => this._handleImpl(route));
686
+ return await this._savedZone.run(async () => this._handleImpl(route));
687
687
  }
688
688
  async _handleImpl(route) {
689
689
  const handlerInvocation = {
@@ -699,7 +699,7 @@ class RouteHandler {
699
699
  if ((0, _errors.isTargetClosedError)(e)) {
700
700
  // We are failing in the handler because the target close closed.
701
701
  // Give user a hint!
702
- (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.`);
703
703
  }
704
704
  throw e;
705
705
  } finally {
@@ -745,7 +745,7 @@ class RawHeaders {
745
745
  }
746
746
  constructor(headers) {
747
747
  this._headersArray = void 0;
748
- this._headersMap = new _utils.MultiMap();
748
+ this._headersMap = new _multimap.MultiMap();
749
749
  this._headersArray = headers;
750
750
  for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);
751
751
  }