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
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.connectBidiOverCdp = connectBidiOverCdp;
7
7
  var bidiMapper = _interopRequireWildcard(require("chromium-bidi/lib/cjs/bidiMapper/BidiMapper"));
8
8
  var bidiCdpConnection = _interopRequireWildcard(require("chromium-bidi/lib/cjs/cdp/CdpConnection"));
9
- var _debugLogger = require("../../utils/debugLogger");
9
+ var _debugLogger = require("../utils/debugLogger");
10
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; }
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 && {}.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
12
  /**
13
13
  * Copyright (c) Microsoft Corporation.
14
14
  *
@@ -4,19 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BidiPage = void 0;
7
- var _eventsHelper = require("../../utils/eventsHelper");
8
7
  var _utils = require("../../utils");
9
- var dom = _interopRequireWildcard(require("../dom"));
8
+ var _eventsHelper = require("../utils/eventsHelper");
9
+ var _browserContext = require("../browserContext");
10
10
  var dialog = _interopRequireWildcard(require("../dialog"));
11
+ var dom = _interopRequireWildcard(require("../dom"));
11
12
  var _page = require("../page");
12
- var _bidiInput = require("./bidiInput");
13
- var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
14
13
  var _bidiExecutionContext = require("./bidiExecutionContext");
14
+ var _bidiInput = require("./bidiInput");
15
15
  var _bidiNetworkManager = require("./bidiNetworkManager");
16
- var _browserContext = require("../browserContext");
17
16
  var _bidiPdf = require("./bidiPdf");
17
+ var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
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
  *
@@ -101,7 +101,6 @@ class BidiPage {
101
101
  if (realmInfo.type !== 'window') return;
102
102
  const frame = this._page._frameManager.frame(realmInfo.context);
103
103
  if (!frame) return;
104
- const delegate = new _bidiExecutionContext.BidiExecutionContext(this._session, realmInfo);
105
104
  let worldName;
106
105
  if (!realmInfo.sandbox) {
107
106
  worldName = 'main';
@@ -112,8 +111,8 @@ class BidiPage {
112
111
  } else {
113
112
  return;
114
113
  }
114
+ const delegate = new _bidiExecutionContext.BidiExecutionContext(this._session, realmInfo);
115
115
  const context = new dom.FrameExecutionContext(delegate, frame, worldName);
116
- context[contextDelegateSymbol] = delegate;
117
116
  frame._contextCreated(worldName, context);
118
117
  this._realmToContext.set(realmInfo.realm, context);
119
118
  }
@@ -202,10 +201,7 @@ class BidiPage {
202
201
  lineNumber: 1,
203
202
  columnNumber: 1
204
203
  };
205
- this._page._addConsoleMessage(entry.method, entry.args.map(arg => context.createHandle({
206
- objectId: arg.handle,
207
- ...arg
208
- })), location, params.text || undefined);
204
+ this._page._addConsoleMessage(entry.method, entry.args.map(arg => (0, _bidiExecutionContext.createHandle)(context, arg)), location, params.text || undefined);
209
205
  }
210
206
  async navigateFrame(frame, url, referrer) {
211
207
  const {
@@ -352,21 +348,20 @@ class BidiPage {
352
348
  }
353
349
  async getContentFrame(handle) {
354
350
  const executionContext = toBidiExecutionContext(handle._context);
355
- const contentWindow = await executionContext.rawCallFunction('e => e.contentWindow', {
356
- handle: handle._objectId
357
- });
358
- if (contentWindow.type === 'window') {
359
- const frameId = contentWindow.value.context;
360
- const result = this._page._frameManager.frame(frameId);
361
- return result;
362
- }
363
- return null;
351
+ const frameId = await executionContext.contentFrameIdForFrame(handle);
352
+ if (!frameId) return null;
353
+ return this._page._frameManager.frame(frameId);
364
354
  }
365
355
  async getOwnerFrame(handle) {
366
- throw new Error('Method not implemented.');
367
- }
368
- isElementHandle(remoteObject) {
369
- return remoteObject.type === 'node';
356
+ // TODO: switch to utility world?
357
+ const windowHandle = await handle.evaluateHandle(node => {
358
+ var _node$ownerDocument;
359
+ const doc = (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 ? _node$ownerDocument : node;
360
+ return doc.defaultView;
361
+ });
362
+ if (!windowHandle) return null;
363
+ const executionContext = toBidiExecutionContext(handle._context);
364
+ return executionContext.frameIdForWindowHandle(windowHandle);
370
365
  }
371
366
  async getBoundingBox(handle) {
372
367
  const box = await handle.evaluate(element => {
@@ -449,29 +444,19 @@ class BidiPage {
449
444
  }));
450
445
  return quads;
451
446
  }
452
- async setInputFiles(handle, files) {
453
- throw new Error('Method not implemented.');
454
- }
455
447
  async setInputFilePaths(handle, paths) {
456
- throw new Error('Method not implemented.');
448
+ const fromContext = toBidiExecutionContext(handle._context);
449
+ await this._session.send('input.setFiles', {
450
+ context: this._session.sessionId,
451
+ element: await fromContext.nodeIdForElementHandle(handle),
452
+ files: paths
453
+ });
457
454
  }
458
455
  async adoptElementHandle(handle, to) {
459
456
  const fromContext = toBidiExecutionContext(handle._context);
460
- const shared = await fromContext.rawCallFunction('x => x', {
461
- handle: handle._objectId
462
- });
463
- // TODO: store sharedId in the handle.
464
- if (!('sharedId' in shared)) throw new Error('Element is not a node');
465
- const sharedId = shared.sharedId;
457
+ const nodeId = await fromContext.nodeIdForElementHandle(handle);
466
458
  const executionContext = toBidiExecutionContext(to);
467
- const result = await executionContext.rawCallFunction('x => x', {
468
- sharedId
469
- });
470
- if ('handle' in result) return to.createHandle({
471
- objectId: result.handle,
472
- ...result
473
- });
474
- throw new Error('Failed to adopt element handle.');
459
+ return await executionContext.remoteObjectForNodeId(to, nodeId);
475
460
  }
476
461
  async getAccessibilityTree(needle) {
477
462
  throw new Error('Method not implemented.');
@@ -513,6 +498,5 @@ function addMainBinding(callback) {
513
498
  globalThis['__playwright__binding__'] = callback;
514
499
  }
515
500
  function toBidiExecutionContext(executionContext) {
516
- return executionContext[contextDelegateSymbol];
517
- }
518
- const contextDelegateSymbol = Symbol('delegate');
501
+ return executionContext.delegate;
502
+ }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.createProfile = createProfile;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
8
  var _path = _interopRequireDefault(require("path"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
10
  /**
11
11
  * @license
12
12
  * Copyright 2023 Google Inc.
@@ -47,6 +47,13 @@ function defaultProfilePreferences(extraPrefs) {
47
47
  // console
48
48
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
49
49
  'browser.dom.window.dump.enabled': true,
50
+ // Make sure newtab weather doesn't hit the network to retrieve weather data.
51
+ 'browser.newtabpage.activity-stream.discoverystream.region-weather-config': '',
52
+ // Make sure newtab wallpapers don't hit the network to retrieve wallpaper data.
53
+ 'browser.newtabpage.activity-stream.newtabWallpapers.enabled': false,
54
+ 'browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled': false,
55
+ // Make sure Topsites doesn't hit the network to retrieve sponsored tiles.
56
+ 'browser.newtabpage.activity-stream.showSponsoredTopSites': false,
50
57
  // Disable topstories
51
58
  'browser.newtabpage.activity-stream.feeds.system.topstories': false,
52
59
  // Always display a blank page
@@ -112,6 +119,13 @@ function defaultProfilePreferences(extraPrefs) {
112
119
  // Disable slow script dialogues
113
120
  'dom.max_chrome_script_run_time': 0,
114
121
  'dom.max_script_run_time': 0,
122
+ // Disable background timer throttling to allow tests to run in parallel
123
+ // without a decrease in performance.
124
+ 'dom.min_background_timeout_value': 0,
125
+ 'dom.min_background_timeout_value_without_budget_throttling': 0,
126
+ 'dom.timeout.enable_budget_timer_throttling': false,
127
+ // Disable HTTPS-First upgrades
128
+ 'dom.security.https_first': false,
115
129
  // Only load extensions from the application and user profile
116
130
  // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
117
131
  'extensions.autoDisableScopes': 0,
@@ -141,10 +155,14 @@ function defaultProfilePreferences(extraPrefs) {
141
155
  'hangmonitor.timeout': 0,
142
156
  // Show chrome errors and warnings in the error console
143
157
  'javascript.options.showInConsole': true,
158
+ // Do not throttle rendering (requestAnimationFrame) in background tabs
159
+ 'layout.testing.top-level-always-active': true,
144
160
  // Disable download and usage of OpenH264: and Widevine plugins
145
161
  'media.gmp-manager.updateEnabled': false,
146
162
  // Disable the GFX sanity window
147
163
  'media.sanity-test.disabled': true,
164
+ // Disable connectivity service pings
165
+ 'network.connectivity-service.enabled': false,
148
166
  // Disable experimental feature that is only available in Nightly
149
167
  'network.cookie.sameSite.laxByDefault': false,
150
168
  // Do not prompt for temporary redirects
@@ -169,8 +187,6 @@ function defaultProfilePreferences(extraPrefs) {
169
187
  'security.fileuri.strict_origin_policy': false,
170
188
  // Do not wait for the notification button security delay
171
189
  'security.notification_enable_delay': 0,
172
- // Ensure blocklist updates do not hit the network
173
- 'services.settings.server': `http://${server}/dummy/blocklist/`,
174
190
  // Do not automatically fill sign-in forms with known usernames and
175
191
  // passwords
176
192
  'signon.autofillForms': false,
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Browser = void 0;
7
+ var _artifact = require("./artifact");
7
8
  var _browserContext = require("./browserContext");
8
- var _page = require("./page");
9
9
  var _download = require("./download");
10
10
  var _instrumentation = require("./instrumentation");
11
- var _artifact = require("./artifact");
11
+ var _page = require("./page");
12
12
  var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
13
13
  /**
14
14
  * Copyright (c) Microsoft Corporation.
@@ -9,26 +9,29 @@ exports.normalizeProxySettings = normalizeProxySettings;
9
9
  exports.validateBrowserContextOptions = validateBrowserContextOptions;
10
10
  exports.verifyClientCertificates = verifyClientCertificates;
11
11
  exports.verifyGeolocation = verifyGeolocation;
12
- var _timeoutSettings = require("../common/timeoutSettings");
13
- var _utils = require("../utils");
14
- var _fileUtils = require("../utils/fileUtils");
15
- var _helper = require("./helper");
16
- var network = _interopRequireWildcard(require("./network"));
17
- var _page6 = require("./page");
18
- var _path = _interopRequireDefault(require("path"));
19
12
  var _fs = _interopRequireDefault(require("fs"));
20
- var _instrumentation = require("./instrumentation");
13
+ var _path = _interopRequireDefault(require("path"));
14
+ var _timeoutSettings = require("./timeoutSettings");
15
+ var _crypto = require("./utils/crypto");
16
+ var _debug = require("./utils/debug");
17
+ var _clock = require("./clock");
21
18
  var _debugger = require("./debugger");
22
- var _tracing = require("./trace/recorder/tracing");
19
+ var _fetch = require("./fetch");
20
+ var _fileUtils = require("./utils/fileUtils");
23
21
  var _harRecorder = require("./har/harRecorder");
22
+ var _helper = require("./helper");
23
+ var _instrumentation = require("./instrumentation");
24
+ var utilityScriptSerializers = _interopRequireWildcard(require("./isomorphic/utilityScriptSerializers"));
25
+ var network = _interopRequireWildcard(require("./network"));
26
+ var _page6 = require("./page");
24
27
  var _recorder = require("./recorder");
25
- var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
26
- var _fetch = require("./fetch");
27
- var _clock = require("./clock");
28
28
  var _recorderApp = require("./recorder/recorderApp");
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+ var storageScript = _interopRequireWildcard(require("./storageScript"));
30
+ var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
31
+ var _tracing = require("./trace/recorder/tracing");
30
32
  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); }
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 && 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
+ 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; }
34
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
32
35
  /**
33
36
  * Copyright 2017 Google Inc. All rights reserved.
34
37
  * Modifications copyright (c) Microsoft Corporation.
@@ -102,7 +105,7 @@ class BrowserContext extends _instrumentation.SdkObject {
102
105
  this._debugger = new _debugger.Debugger(this);
103
106
 
104
107
  // When PWDEBUG=1, show inspector for each context.
105
- if ((0, _utils.debugMode)() === 'inspector') await _recorder.Recorder.show(this, _recorderApp.RecorderApp.factory(this), {
108
+ if ((0, _debug.debugMode)() === 'inspector') await _recorder.Recorder.show(this, _recorderApp.RecorderApp.factory(this), {
106
109
  pauseOnNextStatement: true
107
110
  });
108
111
 
@@ -111,7 +114,7 @@ class BrowserContext extends _instrumentation.SdkObject {
111
114
  this._debugger.on(_debugger.Debugger.Events.PausedStateChanged, () => {
112
115
  if (this._debugger.isPaused()) _recorder.Recorder.showInspectorNoReply(this, _recorderApp.RecorderApp.factory(this));
113
116
  });
114
- if ((0, _utils.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);
117
+ if ((0, _debug.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);
115
118
  if (this._options.serviceWorkers === 'block') await this.addInitScript(`navigator.serviceWorker.register = async () => { };`);
116
119
  if (this._options.permissions) await this.grantPermissions(this._options.permissions);
117
120
  }
@@ -399,24 +402,25 @@ class BrowserContext extends _instrumentation.SdkObject {
399
402
  addVisitedOrigin(origin) {
400
403
  this._origins.add(origin);
401
404
  }
402
- async storageState() {
405
+ async storageState(indexedDB = false) {
403
406
  const result = {
404
407
  cookies: await this.cookies(),
405
408
  origins: []
406
409
  };
407
410
  const originsToSave = new Set(this._origins);
411
+ const collectScript = `(${storageScript.collect})((${utilityScriptSerializers.source})(), ${this._browser.options.name === 'firefox'}, ${indexedDB})`;
408
412
 
409
413
  // First try collecting storage stage from existing pages.
410
414
  for (const page of this.pages()) {
411
415
  const origin = page.mainFrame().origin();
412
416
  if (!origin || !originsToSave.has(origin)) continue;
413
417
  try {
414
- const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(`({
415
- localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
416
- })`, 'utility');
417
- if (storage.localStorage.length) result.origins.push({
418
+ var _storage$indexedDB;
419
+ const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(collectScript, 'utility');
420
+ if (storage.localStorage.length || (_storage$indexedDB = storage.indexedDB) !== null && _storage$indexedDB !== void 0 && _storage$indexedDB.length) result.origins.push({
418
421
  origin,
419
- localStorage: storage.localStorage
422
+ localStorage: storage.localStorage,
423
+ indexedDB: storage.indexedDB
420
424
  });
421
425
  originsToSave.delete(origin);
422
426
  } catch {
@@ -435,19 +439,17 @@ class BrowserContext extends _instrumentation.SdkObject {
435
439
  return true;
436
440
  });
437
441
  for (const origin of originsToSave) {
438
- const originStorage = {
439
- origin,
440
- localStorage: []
441
- };
442
+ var _storage$indexedDB2;
442
443
  const frame = page.mainFrame();
443
444
  await frame.goto(internalMetadata, origin);
444
- const storage = await frame.evaluateExpression(`({
445
- localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
446
- })`, {
445
+ const storage = await frame.evaluateExpression(collectScript, {
447
446
  world: 'utility'
448
447
  });
449
- originStorage.localStorage = storage.localStorage;
450
- if (storage.localStorage.length) result.origins.push(originStorage);
448
+ if (storage.localStorage.length || (_storage$indexedDB2 = storage.indexedDB) !== null && _storage$indexedDB2 !== void 0 && _storage$indexedDB2.length) result.origins.push({
449
+ origin,
450
+ localStorage: storage.localStorage,
451
+ indexedDB: storage.indexedDB
452
+ });
451
453
  }
452
454
  await page.close(internalMetadata);
453
455
  }
@@ -505,14 +507,9 @@ class BrowserContext extends _instrumentation.SdkObject {
505
507
  for (const originState of state.origins) {
506
508
  const frame = page.mainFrame();
507
509
  await frame.goto(metadata, originState.origin);
508
- await frame.evaluateExpression(`
509
- originState => {
510
- for (const { name, value } of (originState.localStorage || []))
511
- localStorage.setItem(name, value);
512
- }`, {
513
- isFunction: true,
510
+ await frame.evaluateExpression(`(${storageScript.restore})(${JSON.stringify(originState)}, (${utilityScriptSerializers.source})())`, {
514
511
  world: 'utility'
515
- }, originState);
512
+ });
516
513
  }
517
514
  await page.close(internalMetadata);
518
515
  }
@@ -533,7 +530,7 @@ class BrowserContext extends _instrumentation.SdkObject {
533
530
  await Promise.all(this.pages().map(page => page.safeNonStallingEvaluateInAllFrames(expression, world, options)));
534
531
  }
535
532
  async _harStart(page, options) {
536
- const harId = (0, _utils.createGuid)();
533
+ const harId = (0, _crypto.createGuid)();
537
534
  this._harRecorders.set(harId, new _harRecorder.HarRecorder(this, page, options));
538
535
  return harId;
539
536
  }
@@ -658,7 +655,7 @@ function normalizeProxySettings(proxy) {
658
655
  bypass
659
656
  };
660
657
  }
661
- const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'screen', 'userAgent', 'viewport'];
658
+ const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'contrast', 'screen', 'userAgent', 'viewport'];
662
659
  const defaultNewContextParamValues = {
663
660
  noDefaultViewport: false,
664
661
  ignoreHTTPSErrors: false,
@@ -5,25 +5,25 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.kNoXServerRunningError = exports.BrowserType = exports.BrowserReadyState = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
- var os = _interopRequireWildcard(require("os"));
8
+ var _os = _interopRequireDefault(require("os"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
10
  var _browserContext = require("./browserContext");
11
- var _registry = require("./registry");
12
- var _transport = require("./transport");
13
- var _processLauncher = require("../utils/processLauncher");
14
- var _pipeTransport = require("./pipeTransport");
15
- var _progress = require("./progress");
16
- var _timeoutSettings = require("../common/timeoutSettings");
17
- var _utils = require("../utils");
18
- var _fileUtils = require("../utils/fileUtils");
11
+ var _timeoutSettings = require("./timeoutSettings");
12
+ var _debug = require("./utils/debug");
13
+ var _assert = require("../utils/isomorphic/assert");
14
+ var _manualPromise = require("../utils/isomorphic/manualPromise");
15
+ var _fileUtils = require("./utils/fileUtils");
19
16
  var _helper = require("./helper");
20
- var _debugLogger = require("../utils/debugLogger");
21
17
  var _instrumentation = require("./instrumentation");
18
+ var _pipeTransport = require("./pipeTransport");
19
+ var _processLauncher = require("./utils/processLauncher");
20
+ var _progress = require("./progress");
22
21
  var _protocolError = require("./protocolError");
22
+ var _registry = require("./registry");
23
23
  var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
24
- 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); }
25
- 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; }
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+ var _transport = require("./transport");
25
+ var _debugLogger = require("./utils/debugLogger");
26
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
27
  /**
28
28
  * Copyright (c) Microsoft Corporation.
29
29
  *
@@ -43,7 +43,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
43
43
  const kNoXServerRunningError = exports.kNoXServerRunningError = 'Looks like you launched a headed browser without having a XServer running.\n' + 'Set either \'headless: true\' or use \'xvfb-run <your-playwright-app>\' before running Playwright.\n\n<3 Playwright Team';
44
44
  class BrowserReadyState {
45
45
  constructor() {
46
- this._wsEndpoint = new _utils.ManualPromise();
46
+ this._wsEndpoint = new _manualPromise.ManualPromise();
47
47
  }
48
48
  onBrowserExit() {
49
49
  // Unblock launch when browser prematurely exits.
@@ -178,16 +178,17 @@ class BrowserType extends _instrumentation.SdkObject {
178
178
  const env = options.env ? (0, _processLauncher.envArrayToObject)(options.env) : process.env;
179
179
  await this._createArtifactDirs(options);
180
180
  const tempDirectories = [];
181
- const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(os.tmpdir(), 'playwright-artifacts-'));
181
+ const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), 'playwright-artifacts-'));
182
182
  tempDirectories.push(artifactsDir);
183
183
  if (userDataDir) {
184
+ (0, _assert.assert)(_path.default.isAbsolute(userDataDir), 'userDataDir must be an absolute path');
184
185
  // Firefox bails if the profile directory does not exist, Chrome creates it. We ensure consistent behavior here.
185
186
  if (!(await (0, _fileUtils.existsAsync)(userDataDir))) await _fs.default.promises.mkdir(userDataDir, {
186
187
  recursive: true,
187
188
  mode: 0o700
188
189
  });
189
190
  } else {
190
- userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(os.tmpdir(), `playwright_${this._name}dev_profile-`));
191
+ userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), `playwright_${this._name}dev_profile-`));
191
192
  tempDirectories.push(userDataDir);
192
193
  }
193
194
  await this.prepareUserDataDir(options, userDataDir);
@@ -293,7 +294,7 @@ class BrowserType extends _instrumentation.SdkObject {
293
294
  downloadsPath,
294
295
  proxy
295
296
  } = options;
296
- if ((0, _utils.debugMode)()) headless = false;
297
+ if ((0, _debug.debugMode)()) headless = false;
297
298
  if (downloadsPath && !_path.default.isAbsolute(downloadsPath)) downloadsPath = _path.default.join(process.cwd(), downloadsPath);
298
299
  if (this.attribution.playwright.options.socksProxyPort) proxy = {
299
300
  server: `socks5://127.0.0.1:${this.attribution.playwright.options.socksProxyPort}`
@@ -3,11 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.findRepeatedSubsequences = findRepeatedSubsequences;
6
+ exports.compressCallLog = compressCallLog;
7
+ exports.findRepeatedSubsequencesForTest = void 0;
7
8
  /**
8
9
  * Copyright (c) Microsoft Corporation.
9
10
  *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * Licensed under the Apache License, Version 2.0 (the 'License");
11
12
  * you may not use this file except in compliance with the License.
12
13
  * You may obtain a copy of the License at
13
14
  *
@@ -20,6 +21,19 @@ exports.findRepeatedSubsequences = findRepeatedSubsequences;
20
21
  * limitations under the License.
21
22
  */
22
23
 
24
+ function compressCallLog(log) {
25
+ const lines = [];
26
+ for (const block of findRepeatedSubsequences(log)) {
27
+ for (let i = 0; i < block.sequence.length; i++) {
28
+ const line = block.sequence[i];
29
+ const leadingWhitespace = line.match(/^\s*/);
30
+ const whitespacePrefix = ' ' + (leadingWhitespace === null || leadingWhitespace === void 0 ? void 0 : leadingWhitespace[0]) || '';
31
+ const countPrefix = `${block.count} × `;
32
+ if (block.count > 1 && i === 0) lines.push(whitespacePrefix + countPrefix + line.trim());else if (block.count > 1) lines.push(whitespacePrefix + ' '.repeat(countPrefix.length - 2) + '- ' + line.trim());else lines.push(whitespacePrefix + '- ' + line.trim());
33
+ }
34
+ }
35
+ return lines;
36
+ }
23
37
  function findRepeatedSubsequences(s) {
24
38
  const n = s.length;
25
39
  const result = [];
@@ -61,4 +75,5 @@ function findRepeatedSubsequences(s) {
61
75
  i += maxRepeatLength * maxRepeatCount; // Move index forward
62
76
  }
63
77
  return result;
64
- }
78
+ }
79
+ const findRepeatedSubsequencesForTest = exports.findRepeatedSubsequencesForTest = findRepeatedSubsequences;
@@ -7,27 +7,27 @@ exports.Chromium = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
8
  var _os = _interopRequireDefault(require("os"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
+ var _chromiumSwitches = require("./chromiumSwitches");
10
11
  var _crBrowser = require("./crBrowser");
11
- var _processLauncher = require("../../utils/processLauncher");
12
12
  var _crConnection = require("./crConnection");
13
+ var _timeoutSettings = require("../timeoutSettings");
14
+ var _utils = require("../../utils");
15
+ var _ascii = require("../utils/ascii");
16
+ var _debugLogger = require("../utils/debugLogger");
17
+ var _manualPromise = require("../../utils/isomorphic/manualPromise");
18
+ var _network = require("../utils/network");
19
+ var _userAgent = require("../utils/userAgent");
20
+ var _browserContext = require("../browserContext");
13
21
  var _browserType = require("../browserType");
22
+ var _helper = require("../helper");
23
+ var _registry = require("../registry");
14
24
  var _transport = require("../transport");
15
25
  var _crDevTools = require("./crDevTools");
16
26
  var _browser = require("../browser");
17
- var _network = require("../../utils/network");
18
- var _userAgent = require("../../utils/userAgent");
19
- var _ascii = require("../../utils/ascii");
20
- var _utils = require("../../utils");
21
- var _fileUtils = require("../../utils/fileUtils");
22
- var _debugLogger = require("../../utils/debugLogger");
27
+ var _fileUtils = require("../utils/fileUtils");
28
+ var _processLauncher = require("../utils/processLauncher");
23
29
  var _progress = require("../progress");
24
- var _timeoutSettings = require("../../common/timeoutSettings");
25
- var _helper = require("../helper");
26
- var _registry = require("../registry");
27
- var _manualPromise = require("../../utils/manualPromise");
28
- var _browserContext = require("../browserContext");
29
- var _chromiumSwitches = require("./chromiumSwitches");
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
31
31
  /**
32
32
  * Copyright 2017 Google Inc. All rights reserved.
33
33
  * Modifications copyright (c) Microsoft Corporation.
@@ -23,13 +23,44 @@ exports.chromiumSwitches = void 0;
23
23
 
24
24
  // No dependencies as it is used from the Electron loader.
25
25
 
26
+ const disabledFeatures = [
27
+ // See https://github.com/microsoft/playwright/pull/10380
28
+ 'AcceptCHFrame',
29
+ // See https://github.com/microsoft/playwright/pull/10679
30
+ 'AutoExpandDetailsElement',
31
+ // See https://github.com/microsoft/playwright/issues/14047
32
+ 'AvoidUnnecessaryBeforeUnloadCheckSync',
33
+ // See https://github.com/microsoft/playwright/pull/12992
34
+ 'CertificateTransparencyComponentUpdater',
35
+ // This makes Page.frameScheduledNavigation arrive much later after a click,
36
+ // making our navigation auto-wait after click not working.
37
+ // Can be removed once we deperecate noWaitAfter.
38
+ // See https://github.com/microsoft/playwright/pull/34372.
39
+ 'DeferRendererTasksAfterInput', 'DestroyProfileOnBrowserClose',
40
+ // See https://github.com/microsoft/playwright/pull/13854
41
+ 'DialMediaRouteProvider',
42
+ // Chromium is disabling manifest version 2. Allow testing it as long as Chromium can actually run it.
43
+ // Disabled in https://chromium-review.googlesource.com/c/chromium/src/+/6265903.
44
+ 'ExtensionManifestV2Disabled', 'GlobalMediaControls',
45
+ // See https://github.com/microsoft/playwright/pull/27605
46
+ 'HttpsUpgrades', 'ImprovedCookieControls', 'LazyFrameLoading',
47
+ // Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
48
+ 'LensOverlay',
49
+ // See https://github.com/microsoft/playwright/pull/8162
50
+ 'MediaRouter',
51
+ // See https://github.com/microsoft/playwright/issues/28023
52
+ 'PaintHolding',
53
+ // See https://github.com/microsoft/playwright/issues/32230
54
+ 'ThirdPartyStoragePartitioning',
55
+ // See https://github.com/microsoft/playwright/issues/16126
56
+ 'Translate'];
26
57
  const chromiumSwitches = exports.chromiumSwitches = ['--disable-field-trial-config',
27
58
  // https://source.chromium.org/chromium/chromium/src/+/main:testing/variations/README.md
28
59
  '--disable-background-networking', '--disable-background-timer-throttling', '--disable-backgrounding-occluded-windows',
29
60
  // Avoids surprises like main request not being intercepted during page.goBack().
30
61
  '--disable-breakpad',
31
62
  // Avoids unneeded network activity after startup.
32
- '--no-default-browser-check', '--disable-dev-shm-usage', '--disable-hang-monitor', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--no-first-run', '--password-store=basic', '--use-mock-keychain',
63
+ '--no-default-browser-check', '--disable-dev-shm-usage', '--disable-features=' + disabledFeatures.join(','), '--disable-hang-monitor', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--no-first-run', '--password-store=basic', '--use-mock-keychain',
33
64
  // See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
34
65
  '--no-service-autorun', '--export-tagged-pdf',
35
66
  // https://chromium-review.googlesource.com/c/chromium/src/+/4853540