patchright-core 1.51.3 → 1.52.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 (303) hide show
  1. package/browsers.json +15 -13
  2. package/lib/androidServerImpl.js +42 -48
  3. package/lib/browserServerImpl.js +54 -67
  4. package/lib/cli/driver.js +71 -69
  5. package/lib/cli/program.js +312 -328
  6. package/lib/cli/programWithTestStub.js +51 -45
  7. package/lib/client/accessibility.js +31 -32
  8. package/lib/client/android.js +141 -228
  9. package/lib/client/api.js +135 -283
  10. package/lib/client/artifact.js +39 -36
  11. package/lib/client/browser.js +57 -61
  12. package/lib/client/browserContext.js +297 -326
  13. package/lib/client/browserType.js +92 -106
  14. package/lib/client/cdpSession.js +29 -31
  15. package/lib/client/channelOwner.js +82 -95
  16. package/lib/client/clientHelper.js +46 -38
  17. package/lib/client/clientInstrumentation.js +40 -37
  18. package/lib/client/clientStackTrace.js +41 -37
  19. package/lib/client/clock.js +36 -36
  20. package/lib/client/connection.js +190 -212
  21. package/lib/client/consoleMessage.js +31 -28
  22. package/lib/client/coverage.js +25 -22
  23. package/lib/client/dialog.js +30 -31
  24. package/lib/client/download.js +25 -25
  25. package/lib/client/electron.js +73 -75
  26. package/lib/client/elementHandle.js +111 -147
  27. package/lib/client/errors.js +53 -53
  28. package/lib/client/eventEmitter.js +124 -121
  29. package/lib/client/events.js +72 -68
  30. package/lib/client/fetch.js +135 -158
  31. package/lib/client/fileChooser.js +25 -24
  32. package/lib/client/fileUtils.js +31 -28
  33. package/lib/client/frame.js +187 -306
  34. package/lib/client/harRouter.js +42 -52
  35. package/lib/client/input.js +40 -69
  36. package/lib/client/jsHandle.js +56 -71
  37. package/lib/client/jsonPipe.js +27 -23
  38. package/lib/client/localUtils.js +29 -28
  39. package/lib/client/locator.js +161 -245
  40. package/lib/client/network.js +277 -295
  41. package/lib/client/page.js +270 -318
  42. package/lib/client/platform.js +46 -43
  43. package/lib/client/playwright.js +51 -66
  44. package/lib/client/selectors.js +48 -46
  45. package/lib/client/stream.js +29 -25
  46. package/lib/client/timeoutSettings.js +49 -39
  47. package/lib/client/tracing.js +48 -84
  48. package/lib/client/types.js +26 -22
  49. package/lib/client/video.js +35 -27
  50. package/lib/client/waiter.js +69 -88
  51. package/lib/client/webError.js +25 -23
  52. package/lib/client/webSocket.js +61 -56
  53. package/lib/client/worker.js +48 -58
  54. package/lib/client/writableStream.js +27 -23
  55. package/lib/generated/clockSource.js +26 -5
  56. package/lib/generated/consoleApiSource.js +26 -5
  57. package/lib/generated/injectedScriptSource.js +26 -5
  58. package/lib/generated/pollingRecorderSource.js +26 -5
  59. package/lib/generated/utilityScriptSource.js +26 -5
  60. package/lib/generated/webSocketMockSource.js +371 -4
  61. package/lib/inProcessFactory.js +53 -53
  62. package/lib/inprocess.js +2 -19
  63. package/lib/outofprocess.js +53 -46
  64. package/lib/protocol/debug.js +209 -25
  65. package/lib/protocol/serializers.js +153 -134
  66. package/lib/protocol/validator.js +2714 -2714
  67. package/lib/protocol/validatorPrimitives.js +114 -73
  68. package/lib/remote/playwrightConnection.js +140 -157
  69. package/lib/remote/playwrightServer.js +99 -84
  70. package/lib/server/accessibility.js +44 -37
  71. package/lib/server/android/android.js +216 -209
  72. package/lib/server/android/backendAdb.js +89 -82
  73. package/lib/server/artifact.js +78 -55
  74. package/lib/server/bidi/bidiBrowser.js +221 -155
  75. package/lib/server/bidi/bidiChromium.js +106 -79
  76. package/lib/server/bidi/bidiConnection.js +66 -83
  77. package/lib/server/bidi/bidiExecutionContext.js +128 -113
  78. package/lib/server/bidi/bidiFirefox.js +76 -69
  79. package/lib/server/bidi/bidiInput.js +86 -97
  80. package/lib/server/bidi/bidiNetworkManager.js +137 -154
  81. package/lib/server/bidi/bidiOverCdp.js +57 -58
  82. package/lib/server/bidi/bidiPage.js +247 -219
  83. package/lib/server/bidi/bidiPdf.js +52 -86
  84. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  85. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  86. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  87. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  88. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  89. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  90. package/lib/server/browser.js +76 -84
  91. package/lib/server/browserContext.js +321 -346
  92. package/lib/server/browserType.js +169 -182
  93. package/lib/server/callLog.js +47 -44
  94. package/lib/server/chromium/chromium.js +212 -190
  95. package/lib/server/chromium/chromiumSwitches.js +86 -64
  96. package/lib/server/chromium/crAccessibility.js +157 -131
  97. package/lib/server/chromium/crBrowser.js +253 -273
  98. package/lib/server/chromium/crConnection.js +91 -116
  99. package/lib/server/chromium/crCoverage.js +113 -127
  100. package/lib/server/chromium/crDevTools.js +59 -51
  101. package/lib/server/chromium/crDragDrop.js +62 -79
  102. package/lib/server/chromium/crExecutionContext.js +88 -83
  103. package/lib/server/chromium/crInput.js +97 -95
  104. package/lib/server/chromium/crNetworkManager.js +284 -404
  105. package/lib/server/chromium/crPage.js +522 -608
  106. package/lib/server/chromium/crPdf.js +54 -86
  107. package/lib/server/chromium/crProtocolHelper.js +92 -80
  108. package/lib/server/chromium/crServiceWorker.js +82 -67
  109. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  110. package/lib/server/chromium/protocol.d.js +16 -0
  111. package/lib/server/chromium/videoRecorder.js +65 -99
  112. package/lib/server/clock.js +62 -50
  113. package/lib/server/codegen/csharp.js +185 -160
  114. package/lib/server/codegen/java.js +155 -128
  115. package/lib/server/codegen/javascript.js +163 -148
  116. package/lib/server/codegen/jsonl.js +32 -28
  117. package/lib/server/codegen/language.js +75 -52
  118. package/lib/server/codegen/languages.js +65 -27
  119. package/lib/server/codegen/python.js +140 -125
  120. package/lib/server/codegen/types.js +15 -4
  121. package/lib/server/console.js +28 -32
  122. package/lib/server/cookieStore.js +105 -86
  123. package/lib/server/debugController.js +97 -124
  124. package/lib/server/debugger.js +82 -78
  125. package/lib/server/deviceDescriptors.js +37 -24
  126. package/lib/server/deviceDescriptorsSource.json +50 -50
  127. package/lib/server/dialog.js +36 -35
  128. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  129. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  130. package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
  131. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  132. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  133. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  134. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
  135. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  136. package/lib/server/dispatchers/dispatcher.js +169 -220
  137. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  138. package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
  139. package/lib/server/dispatchers/frameDispatcher.js +99 -163
  140. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  141. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  142. package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
  143. package/lib/server/dispatchers/networkDispatchers.js +90 -107
  144. package/lib/server/dispatchers/pageDispatcher.js +128 -169
  145. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  146. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  147. package/lib/server/dispatchers/streamDispatcher.js +42 -45
  148. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  149. package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
  150. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
  151. package/lib/server/dom.js +413 -443
  152. package/lib/server/download.js +45 -35
  153. package/lib/server/electron/electron.js +156 -176
  154. package/lib/server/electron/loader.js +8 -36
  155. package/lib/server/errors.js +47 -46
  156. package/lib/server/fetch.js +289 -323
  157. package/lib/server/fileChooser.js +25 -24
  158. package/lib/server/fileUploadUtils.js +65 -59
  159. package/lib/server/firefox/ffAccessibility.js +153 -131
  160. package/lib/server/firefox/ffBrowser.js +213 -277
  161. package/lib/server/firefox/ffConnection.js +63 -84
  162. package/lib/server/firefox/ffExecutionContext.js +91 -73
  163. package/lib/server/firefox/ffInput.js +67 -69
  164. package/lib/server/firefox/ffNetworkManager.js +131 -110
  165. package/lib/server/firefox/ffPage.js +236 -273
  166. package/lib/server/firefox/firefox.js +76 -67
  167. package/lib/server/firefox/protocol.d.js +16 -0
  168. package/lib/server/formData.js +107 -35
  169. package/lib/server/frameSelectors.js +221 -112
  170. package/lib/server/frames.js +731 -894
  171. package/lib/server/har/harRecorder.js +85 -77
  172. package/lib/server/har/harTracer.js +287 -222
  173. package/lib/server/harBackend.js +80 -80
  174. package/lib/server/helper.js +56 -59
  175. package/lib/server/index.js +59 -99
  176. package/lib/server/input.js +134 -163
  177. package/lib/server/instrumentation.js +49 -44
  178. package/lib/server/javascript.js +143 -134
  179. package/lib/server/launchApp.js +92 -73
  180. package/lib/server/localUtils.js +130 -122
  181. package/lib/server/macEditingCommands.js +141 -137
  182. package/lib/server/network.js +262 -296
  183. package/lib/server/page.js +326 -423
  184. package/lib/server/pageBinding.js +88 -0
  185. package/lib/server/pipeTransport.js +49 -45
  186. package/lib/server/playwright.js +60 -67
  187. package/lib/server/progress.js +56 -51
  188. package/lib/server/protocolError.js +34 -31
  189. package/lib/server/recorder/chat.js +70 -86
  190. package/lib/server/recorder/contextRecorder.js +134 -138
  191. package/lib/server/recorder/recorderApp.js +127 -136
  192. package/lib/server/recorder/recorderCollection.js +56 -44
  193. package/lib/server/recorder/recorderFrontend.js +15 -4
  194. package/lib/server/recorder/recorderRunner.js +79 -103
  195. package/lib/server/recorder/recorderUtils.js +56 -45
  196. package/lib/server/recorder/throttledFile.js +42 -30
  197. package/lib/server/recorder.js +177 -186
  198. package/lib/server/registry/browserFetcher.js +106 -101
  199. package/lib/server/registry/dependencies.js +245 -196
  200. package/lib/server/registry/index.js +904 -792
  201. package/lib/server/registry/nativeDeps.js +1073 -464
  202. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  203. package/lib/server/screenshotter.js +166 -182
  204. package/lib/server/selectors.js +85 -46
  205. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  206. package/lib/server/socksInterceptor.js +62 -70
  207. package/lib/server/storageScript.js +94 -100
  208. package/lib/server/timeoutSettings.js +58 -43
  209. package/lib/server/trace/recorder/snapshotter.js +70 -89
  210. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  211. package/lib/server/trace/recorder/tracing.js +321 -333
  212. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  213. package/lib/server/trace/viewer/traceViewer.js +168 -146
  214. package/lib/server/transport.js +124 -133
  215. package/lib/server/types.js +26 -22
  216. package/lib/server/usKeyboardLayout.js +135 -545
  217. package/lib/server/utils/ascii.js +39 -26
  218. package/lib/server/utils/comparators.js +105 -103
  219. package/lib/server/utils/crypto.js +157 -112
  220. package/lib/server/utils/debug.js +37 -28
  221. package/lib/server/utils/debugLogger.js +69 -48
  222. package/lib/server/utils/env.js +52 -37
  223. package/lib/server/utils/eventsHelper.js +29 -28
  224. package/lib/server/utils/expectUtils.js +31 -26
  225. package/lib/server/utils/fileUtils.js +123 -136
  226. package/lib/server/utils/happyEyeballs.js +138 -123
  227. package/lib/server/utils/hostPlatform.js +84 -120
  228. package/lib/server/utils/httpServer.js +106 -121
  229. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  230. package/lib/server/utils/image_tools/compare.js +44 -43
  231. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  232. package/lib/server/utils/image_tools/stats.js +40 -40
  233. package/lib/server/utils/linuxUtils.js +50 -37
  234. package/lib/server/utils/network.js +143 -86
  235. package/lib/server/utils/nodePlatform.js +87 -79
  236. package/lib/server/utils/pipeTransport.js +44 -42
  237. package/lib/server/utils/processLauncher.js +111 -121
  238. package/lib/server/utils/profiler.js +52 -39
  239. package/lib/server/utils/socksProxy.js +280 -339
  240. package/lib/server/utils/spawnAsync.js +37 -41
  241. package/lib/server/utils/task.js +31 -38
  242. package/lib/server/utils/userAgent.js +73 -66
  243. package/lib/server/utils/wsServer.js +73 -69
  244. package/lib/server/utils/zipFile.js +36 -37
  245. package/lib/server/utils/zones.js +37 -34
  246. package/lib/server/webkit/protocol.d.js +16 -0
  247. package/lib/server/webkit/webkit.js +76 -63
  248. package/lib/server/webkit/wkAccessibility.js +161 -118
  249. package/lib/server/webkit/wkBrowser.js +159 -176
  250. package/lib/server/webkit/wkConnection.js +59 -83
  251. package/lib/server/webkit/wkExecutionContext.js +84 -70
  252. package/lib/server/webkit/wkInput.js +82 -80
  253. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  254. package/lib/server/webkit/wkPage.js +525 -619
  255. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  256. package/lib/server/webkit/wkWorkers.js +77 -77
  257. package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
  258. package/lib/utils/isomorphic/assert.js +28 -22
  259. package/lib/utils/isomorphic/builtins.js +86 -0
  260. package/lib/utils/isomorphic/colors.js +66 -59
  261. package/lib/utils/isomorphic/cssParser.js +121 -125
  262. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  263. package/lib/utils/isomorphic/headers.js +38 -37
  264. package/lib/utils/isomorphic/locatorGenerators.js +340 -357
  265. package/lib/utils/isomorphic/locatorParser.js +96 -105
  266. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  267. package/lib/utils/isomorphic/manualPromise.js +47 -39
  268. package/lib/utils/isomorphic/mimeType.js +448 -25
  269. package/lib/utils/isomorphic/multimap.js +35 -27
  270. package/lib/utils/isomorphic/rtti.js +35 -33
  271. package/lib/utils/isomorphic/selectorParser.js +183 -193
  272. package/lib/utils/isomorphic/semaphore.js +27 -24
  273. package/lib/utils/isomorphic/stackTrace.js +87 -98
  274. package/lib/utils/isomorphic/stringUtils.js +113 -106
  275. package/lib/utils/isomorphic/time.js +41 -22
  276. package/lib/utils/isomorphic/timeoutRunner.js +55 -54
  277. package/lib/utils/isomorphic/traceUtils.js +38 -41
  278. package/lib/utils/isomorphic/types.js +15 -4
  279. package/lib/utils/isomorphic/urlMatch.js +112 -67
  280. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  281. package/lib/utils.js +97 -443
  282. package/lib/utilsBundle.js +101 -52
  283. package/lib/vite/htmlReport/index.html +21 -15
  284. package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-CXVeovup.js} +1 -1
  285. package/lib/vite/recorder/assets/index-BsWQsSGl.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-_GLjJL-7.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.cFZzK9RN.js +2 -0
  291. package/lib/vite/traceViewer/index.html +3 -3
  292. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  293. package/lib/vite/traceViewer/uiMode.XVPIqBeS.js +5 -0
  294. package/lib/vite/traceViewer/uiMode.html +3 -3
  295. package/lib/zipBundle.js +32 -23
  296. package/package.json +1 -1
  297. package/types/protocol.d.ts +436 -17
  298. package/types/types.d.ts +35 -16
  299. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  300. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  301. package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,23 +1,46 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var firefoxPrefs_exports = {};
30
+ __export(firefoxPrefs_exports, {
31
+ createProfile: () => createProfile
5
32
  });
6
- exports.createProfile = createProfile;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _path = _interopRequireDefault(require("path"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
33
+ module.exports = __toCommonJS(firefoxPrefs_exports);
34
+ var import_fs = __toESM(require("fs"));
35
+ var import_path = __toESM(require("path"));
10
36
  /**
11
37
  * @license
12
38
  * Copyright 2023 Google Inc.
13
39
  * SPDX-License-Identifier: Apache-2.0
14
40
  */
15
-
16
- /* eslint-disable curly, indent */
17
-
18
41
  async function createProfile(options) {
19
- if (!_fs.default.existsSync(options.path)) {
20
- await _fs.default.promises.mkdir(options.path, {
42
+ if (!import_fs.default.existsSync(options.path)) {
43
+ await import_fs.default.promises.mkdir(options.path, {
21
44
  recursive: true
22
45
  });
23
46
  }
@@ -30,208 +53,207 @@ async function createProfile(options) {
30
53
  });
31
54
  }
32
55
  function defaultProfilePreferences(extraPrefs) {
33
- const server = 'dummy.test';
56
+ const server = "dummy.test";
34
57
  const defaultPrefs = {
35
58
  // Make sure Shield doesn't hit the network.
36
- 'app.normandy.api_url': '',
59
+ "app.normandy.api_url": "",
37
60
  // Disable Firefox old build background check
38
- 'app.update.checkInstallTime': false,
61
+ "app.update.checkInstallTime": false,
39
62
  // Disable automatically upgrading Firefox
40
- 'app.update.disabledForTesting': true,
63
+ "app.update.disabledForTesting": true,
41
64
  // Increase the APZ content response timeout to 1 minute
42
- 'apz.content_response_timeout': 60000,
65
+ "apz.content_response_timeout": 6e4,
43
66
  // Prevent various error message on the console
44
67
  // jest-puppeteer asserts that no error message is emitted by the console
45
- 'browser.contentblocking.features.standard': '-tp,tpPrivate,cookieBehavior0,-cm,-fp',
68
+ "browser.contentblocking.features.standard": "-tp,tpPrivate,cookieBehavior0,-cm,-fp",
46
69
  // Enable the dump function: which sends messages to the system
47
70
  // console
48
71
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
49
- 'browser.dom.window.dump.enabled': true,
72
+ "browser.dom.window.dump.enabled": true,
50
73
  // Make sure newtab weather doesn't hit the network to retrieve weather data.
51
- 'browser.newtabpage.activity-stream.discoverystream.region-weather-config': '',
74
+ "browser.newtabpage.activity-stream.discoverystream.region-weather-config": "",
52
75
  // 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,
76
+ "browser.newtabpage.activity-stream.newtabWallpapers.enabled": false,
77
+ "browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled": false,
55
78
  // Make sure Topsites doesn't hit the network to retrieve sponsored tiles.
56
- 'browser.newtabpage.activity-stream.showSponsoredTopSites': false,
79
+ "browser.newtabpage.activity-stream.showSponsoredTopSites": false,
57
80
  // Disable topstories
58
- 'browser.newtabpage.activity-stream.feeds.system.topstories': false,
81
+ "browser.newtabpage.activity-stream.feeds.system.topstories": false,
59
82
  // Always display a blank page
60
- 'browser.newtabpage.enabled': false,
83
+ "browser.newtabpage.enabled": false,
61
84
  // Background thumbnails in particular cause grief: and disabling
62
85
  // thumbnails in general cannot hurt
63
- 'browser.pagethumbnails.capturing_disabled': true,
86
+ "browser.pagethumbnails.capturing_disabled": true,
64
87
  // Disable safebrowsing components.
65
- 'browser.safebrowsing.blockedURIs.enabled': false,
66
- 'browser.safebrowsing.downloads.enabled': false,
67
- 'browser.safebrowsing.malware.enabled': false,
68
- 'browser.safebrowsing.phishing.enabled': false,
88
+ "browser.safebrowsing.blockedURIs.enabled": false,
89
+ "browser.safebrowsing.downloads.enabled": false,
90
+ "browser.safebrowsing.malware.enabled": false,
91
+ "browser.safebrowsing.phishing.enabled": false,
69
92
  // Disable updates to search engines.
70
- 'browser.search.update': false,
93
+ "browser.search.update": false,
71
94
  // Do not restore the last open set of tabs if the browser has crashed
72
- 'browser.sessionstore.resume_from_crash': false,
95
+ "browser.sessionstore.resume_from_crash": false,
73
96
  // Skip check for default browser on startup
74
- 'browser.shell.checkDefaultBrowser': false,
97
+ "browser.shell.checkDefaultBrowser": false,
75
98
  // Disable newtabpage
76
- 'browser.startup.homepage': 'about:blank',
99
+ "browser.startup.homepage": "about:blank",
77
100
  // Do not redirect user when a milstone upgrade of Firefox is detected
78
- 'browser.startup.homepage_override.mstone': 'ignore',
101
+ "browser.startup.homepage_override.mstone": "ignore",
79
102
  // Start with a blank page about:blank
80
- 'browser.startup.page': 0,
103
+ "browser.startup.page": 0,
81
104
  // Do not allow background tabs to be zombified on Android: otherwise for
82
105
  // tests that open additional tabs: the test harness tab itself might get
83
106
  // unloaded
84
- 'browser.tabs.disableBackgroundZombification': false,
107
+ "browser.tabs.disableBackgroundZombification": false,
85
108
  // Do not warn when closing all other open tabs
86
- 'browser.tabs.warnOnCloseOtherTabs': false,
109
+ "browser.tabs.warnOnCloseOtherTabs": false,
87
110
  // Do not warn when multiple tabs will be opened
88
- 'browser.tabs.warnOnOpen': false,
111
+ "browser.tabs.warnOnOpen": false,
89
112
  // Do not automatically offer translations, as tests do not expect this.
90
- 'browser.translations.automaticallyPopup': false,
113
+ "browser.translations.automaticallyPopup": false,
91
114
  // Disable the UI tour.
92
- 'browser.uitour.enabled': false,
115
+ "browser.uitour.enabled": false,
93
116
  // Turn off search suggestions in the location bar so as not to trigger
94
117
  // network connections.
95
- 'browser.urlbar.suggest.searches': false,
118
+ "browser.urlbar.suggest.searches": false,
96
119
  // Disable first run splash page on Windows 10
97
- 'browser.usedOnWindows10.introURL': '',
120
+ "browser.usedOnWindows10.introURL": "",
98
121
  // Do not warn on quitting Firefox
99
- 'browser.warnOnQuit': false,
122
+ "browser.warnOnQuit": false,
100
123
  // Defensively disable data reporting systems
101
- 'datareporting.healthreport.documentServerURI': `http://${server}/dummy/healthreport/`,
102
- 'datareporting.healthreport.logging.consoleEnabled': false,
103
- 'datareporting.healthreport.service.enabled': false,
104
- 'datareporting.healthreport.service.firstRun': false,
105
- 'datareporting.healthreport.uploadEnabled': false,
124
+ "datareporting.healthreport.documentServerURI": `http://${server}/dummy/healthreport/`,
125
+ "datareporting.healthreport.logging.consoleEnabled": false,
126
+ "datareporting.healthreport.service.enabled": false,
127
+ "datareporting.healthreport.service.firstRun": false,
128
+ "datareporting.healthreport.uploadEnabled": false,
106
129
  // Do not show datareporting policy notifications which can interfere with tests
107
- 'datareporting.policy.dataSubmissionEnabled': false,
108
- 'datareporting.policy.dataSubmissionPolicyBypassNotification': true,
130
+ "datareporting.policy.dataSubmissionEnabled": false,
131
+ "datareporting.policy.dataSubmissionPolicyBypassNotification": true,
109
132
  // DevTools JSONViewer sometimes fails to load dependencies with its require.js.
110
133
  // This doesn't affect Puppeteer but spams console (Bug 1424372)
111
- 'devtools.jsonview.enabled': false,
134
+ "devtools.jsonview.enabled": false,
112
135
  // Disable popup-blocker
113
- 'dom.disable_open_during_load': false,
136
+ "dom.disable_open_during_load": false,
114
137
  // Enable the support for File object creation in the content process
115
138
  // Required for |Page.setFileInputFiles| protocol method.
116
- 'dom.file.createInChild': true,
139
+ "dom.file.createInChild": true,
117
140
  // Disable the ProcessHangMonitor
118
- 'dom.ipc.reportProcessHangs': false,
141
+ "dom.ipc.reportProcessHangs": false,
119
142
  // Disable slow script dialogues
120
- 'dom.max_chrome_script_run_time': 0,
121
- 'dom.max_script_run_time': 0,
143
+ "dom.max_chrome_script_run_time": 0,
144
+ "dom.max_script_run_time": 0,
122
145
  // Disable background timer throttling to allow tests to run in parallel
123
146
  // 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,
147
+ "dom.min_background_timeout_value": 0,
148
+ "dom.min_background_timeout_value_without_budget_throttling": 0,
149
+ "dom.timeout.enable_budget_timer_throttling": false,
127
150
  // Disable HTTPS-First upgrades
128
- 'dom.security.https_first': false,
151
+ "dom.security.https_first": false,
129
152
  // Only load extensions from the application and user profile
130
153
  // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
131
- 'extensions.autoDisableScopes': 0,
132
- 'extensions.enabledScopes': 5,
154
+ "extensions.autoDisableScopes": 0,
155
+ "extensions.enabledScopes": 5,
133
156
  // Disable metadata caching for installed add-ons by default
134
- 'extensions.getAddons.cache.enabled': false,
157
+ "extensions.getAddons.cache.enabled": false,
135
158
  // Disable installing any distribution extensions or add-ons.
136
- 'extensions.installDistroAddons': false,
159
+ "extensions.installDistroAddons": false,
137
160
  // Disabled screenshots extension
138
- 'extensions.screenshots.disabled': true,
161
+ "extensions.screenshots.disabled": true,
139
162
  // Turn off extension updates so they do not bother tests
140
- 'extensions.update.enabled': false,
163
+ "extensions.update.enabled": false,
141
164
  // Turn off extension updates so they do not bother tests
142
- 'extensions.update.notifyUser': false,
165
+ "extensions.update.notifyUser": false,
143
166
  // Make sure opening about:addons will not hit the network
144
- 'extensions.webservice.discoverURL': `http://${server}/dummy/discoveryURL`,
167
+ "extensions.webservice.discoverURL": `http://${server}/dummy/discoveryURL`,
145
168
  // Allow the application to have focus even it runs in the background
146
- 'focusmanager.testmode': true,
169
+ "focusmanager.testmode": true,
147
170
  // Disable useragent updates
148
- 'general.useragent.updates.enabled': false,
171
+ "general.useragent.updates.enabled": false,
149
172
  // Always use network provider for geolocation tests so we bypass the
150
173
  // macOS dialog raised by the corelocation provider
151
- 'geo.provider.testing': true,
174
+ "geo.provider.testing": true,
152
175
  // Do not scan Wifi
153
- 'geo.wifi.scan': false,
176
+ "geo.wifi.scan": false,
154
177
  // No hang monitor
155
- 'hangmonitor.timeout': 0,
178
+ "hangmonitor.timeout": 0,
156
179
  // Show chrome errors and warnings in the error console
157
- 'javascript.options.showInConsole': true,
180
+ "javascript.options.showInConsole": true,
158
181
  // Do not throttle rendering (requestAnimationFrame) in background tabs
159
- 'layout.testing.top-level-always-active': true,
182
+ "layout.testing.top-level-always-active": true,
160
183
  // Disable download and usage of OpenH264: and Widevine plugins
161
- 'media.gmp-manager.updateEnabled': false,
184
+ "media.gmp-manager.updateEnabled": false,
162
185
  // Disable the GFX sanity window
163
- 'media.sanity-test.disabled': true,
186
+ "media.sanity-test.disabled": true,
164
187
  // Disable connectivity service pings
165
- 'network.connectivity-service.enabled': false,
188
+ "network.connectivity-service.enabled": false,
166
189
  // Disable experimental feature that is only available in Nightly
167
- 'network.cookie.sameSite.laxByDefault': false,
190
+ "network.cookie.sameSite.laxByDefault": false,
168
191
  // Do not prompt for temporary redirects
169
- 'network.http.prompt-temp-redirect': false,
192
+ "network.http.prompt-temp-redirect": false,
170
193
  // Disable speculative connections so they are not reported as leaking
171
194
  // when they are hanging around
172
- 'network.http.speculative-parallel-limit': 0,
195
+ "network.http.speculative-parallel-limit": 0,
173
196
  // Do not automatically switch between offline and online
174
- 'network.manage-offline-status': false,
197
+ "network.manage-offline-status": false,
175
198
  // Make sure SNTP requests do not hit the network
176
- 'network.sntp.pools': server,
199
+ "network.sntp.pools": server,
177
200
  // Disable Flash.
178
- 'plugin.state.flash': 0,
179
- 'privacy.trackingprotection.enabled': false,
201
+ "plugin.state.flash": 0,
202
+ "privacy.trackingprotection.enabled": false,
180
203
  // Can be removed once Firefox 89 is no longer supported
181
204
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1710839
182
- 'remote.enabled': true,
205
+ "remote.enabled": true,
183
206
  // Don't do network connections for mitm priming
184
- 'security.certerrors.mitm.priming.enabled': false,
207
+ "security.certerrors.mitm.priming.enabled": false,
185
208
  // Local documents have access to all other local documents,
186
209
  // including directory listings
187
- 'security.fileuri.strict_origin_policy': false,
210
+ "security.fileuri.strict_origin_policy": false,
188
211
  // Do not wait for the notification button security delay
189
- 'security.notification_enable_delay': 0,
212
+ "security.notification_enable_delay": 0,
190
213
  // Do not automatically fill sign-in forms with known usernames and
191
214
  // passwords
192
- 'signon.autofillForms': false,
215
+ "signon.autofillForms": false,
193
216
  // Disable password capture, so that tests that include forms are not
194
217
  // influenced by the presence of the persistent doorhanger notification
195
- 'signon.rememberSignons': false,
218
+ "signon.rememberSignons": false,
196
219
  // Disable first-run welcome page
197
- 'startup.homepage_welcome_url': 'about:blank',
220
+ "startup.homepage_welcome_url": "about:blank",
198
221
  // Disable first-run welcome page
199
- 'startup.homepage_welcome_url.additional': '',
222
+ "startup.homepage_welcome_url.additional": "",
200
223
  // Disable browser animations (tabs, fullscreen, sliding alerts)
201
- 'toolkit.cosmeticAnimations.enabled': false,
224
+ "toolkit.cosmeticAnimations.enabled": false,
202
225
  // Prevent starting into safe mode after application crashes
203
- 'toolkit.startup.max_resumed_crashes': -1
226
+ "toolkit.startup.max_resumed_crashes": -1
204
227
  };
205
228
  return Object.assign(defaultPrefs, extraPrefs);
206
229
  }
207
-
208
- /**
209
- * Populates the user.js file with custom preferences as needed to allow
210
- * Firefox's CDP support to properly function. These preferences will be
211
- * automatically copied over to prefs.js during startup of Firefox. To be
212
- * able to restore the original values of preferences a backup of prefs.js
213
- * will be created.
214
- *
215
- * @param prefs - List of preferences to add.
216
- * @param profilePath - Firefox profile to write the preferences to.
217
- */
218
230
  async function writePreferences(options) {
219
- const prefsPath = _path.default.join(options.path, 'prefs.js');
231
+ const prefsPath = import_path.default.join(options.path, "prefs.js");
220
232
  const lines = Object.entries(options.preferences).map(([key, value]) => {
221
233
  return `user_pref(${JSON.stringify(key)}, ${JSON.stringify(value)});`;
222
234
  });
223
-
224
- // Use allSettled to prevent corruption
225
- const result = await Promise.allSettled([_fs.default.promises.writeFile(_path.default.join(options.path, 'user.js'), lines.join('\n')),
226
- // Create a backup of the preferences file if it already exitsts.
227
- _fs.default.promises.access(prefsPath, _fs.default.constants.F_OK).then(async () => {
228
- await _fs.default.promises.copyFile(prefsPath, _path.default.join(options.path, 'prefs.js.playwright'));
229
- },
230
- // Swallow only if file does not exist
231
- () => {})]);
235
+ const result = await Promise.allSettled([
236
+ import_fs.default.promises.writeFile(import_path.default.join(options.path, "user.js"), lines.join("\n")),
237
+ // Create a backup of the preferences file if it already exitsts.
238
+ import_fs.default.promises.access(prefsPath, import_fs.default.constants.F_OK).then(
239
+ async () => {
240
+ await import_fs.default.promises.copyFile(
241
+ prefsPath,
242
+ import_path.default.join(options.path, "prefs.js.playwright")
243
+ );
244
+ },
245
+ // Swallow only if file does not exist
246
+ () => {
247
+ }
248
+ )
249
+ ]);
232
250
  for (const command of result) {
233
- if (command.status === 'rejected') {
251
+ if (command.status === "rejected") {
234
252
  throw command.reason;
235
253
  }
236
254
  }
237
- }
255
+ }
256
+ // Annotate the CommonJS export names for ESM import in node:
257
+ 0 && (module.exports = {
258
+ createProfile
259
+ });
@@ -1,55 +1,55 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var browser_exports = {};
20
+ __export(browser_exports, {
21
+ Browser: () => Browser
5
22
  });
6
- exports.Browser = void 0;
7
- var _artifact = require("./artifact");
8
- var _browserContext = require("./browserContext");
9
- var _download = require("./download");
10
- var _instrumentation = require("./instrumentation");
11
- var _page = require("./page");
12
- var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
13
- /**
14
- * Copyright (c) Microsoft Corporation.
15
- *
16
- * Licensed under the Apache License, Version 2.0 (the "License");
17
- * you may not use this file except in compliance with the License.
18
- * You may obtain a copy of the License at
19
- *
20
- * http://www.apache.org/licenses/LICENSE-2.0
21
- *
22
- * Unless required by applicable law or agreed to in writing, software
23
- * distributed under the License is distributed on an "AS IS" BASIS,
24
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
- * See the License for the specific language governing permissions and
26
- * limitations under the License.
27
- */
28
-
29
- class Browser extends _instrumentation.SdkObject {
23
+ module.exports = __toCommonJS(browser_exports);
24
+ var import_artifact = require("./artifact");
25
+ var import_browserContext = require("./browserContext");
26
+ var import_download = require("./download");
27
+ var import_instrumentation = require("./instrumentation");
28
+ var import_page = require("./page");
29
+ var import_socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
30
+ class Browser extends import_instrumentation.SdkObject {
30
31
  constructor(parent, options) {
31
- super(parent, 'browser');
32
- this.options = void 0;
33
- this._downloads = new Map();
32
+ super(parent, "browser");
33
+ this._downloads = /* @__PURE__ */ new Map();
34
34
  this._defaultContext = null;
35
35
  this._startedClosing = false;
36
- this._idToVideo = new Map();
37
- this._contextForReuse = void 0;
38
- this._closeReason = void 0;
36
+ this._idToVideo = /* @__PURE__ */ new Map();
39
37
  this._isCollocatedWithServer = true;
40
38
  this.attribution.browser = this;
41
39
  this.options = options;
42
40
  this.instrumentation.onBrowserOpen(this);
43
41
  }
42
+ static {
43
+ this.Events = {
44
+ Disconnected: "disconnected"
45
+ };
46
+ }
44
47
  async newContext(metadata, options) {
45
- var _options$clientCertif;
46
- (0, _browserContext.validateBrowserContextOptions)(options, this.options);
48
+ (0, import_browserContext.validateBrowserContextOptions)(options, this.options);
47
49
  let clientCertificatesProxy;
48
- if ((_options$clientCertif = options.clientCertificates) !== null && _options$clientCertif !== void 0 && _options$clientCertif.length) {
49
- clientCertificatesProxy = new _socksClientCertificatesInterceptor.ClientCertificatesProxy(options);
50
- options = {
51
- ...options
52
- };
50
+ if (options.clientCertificates?.length) {
51
+ clientCertificatesProxy = new import_socksClientCertificatesInterceptor.ClientCertificatesProxy(options);
52
+ options = { ...options };
53
53
  options.proxyOverride = await clientCertificatesProxy.listen();
54
54
  options.internalIgnoreHTTPSErrors = true;
55
55
  }
@@ -57,92 +57,84 @@ class Browser extends _instrumentation.SdkObject {
57
57
  try {
58
58
  context = await this.doCreateNewContext(options);
59
59
  } catch (error) {
60
- var _clientCertificatesPr;
61
- await ((_clientCertificatesPr = clientCertificatesProxy) === null || _clientCertificatesPr === void 0 ? void 0 : _clientCertificatesPr.close());
60
+ await clientCertificatesProxy?.close();
62
61
  throw error;
63
62
  }
64
63
  context._clientCertificatesProxy = clientCertificatesProxy;
65
- if (options.storageState) await context.setStorageState(metadata, options.storageState);
64
+ if (options.storageState)
65
+ await context.setStorageState(metadata, options.storageState);
66
66
  return context;
67
67
  }
68
68
  async newContextForReuse(params, metadata) {
69
- const hash = _browserContext.BrowserContext.reusableContextHash(params);
69
+ const hash = import_browserContext.BrowserContext.reusableContextHash(params);
70
70
  if (!this._contextForReuse || hash !== this._contextForReuse.hash || !this._contextForReuse.context.canResetForReuse()) {
71
- if (this._contextForReuse) await this._contextForReuse.context.close({
72
- reason: 'Context reused'
73
- });
74
- this._contextForReuse = {
75
- context: await this.newContext(metadata, params),
76
- hash
77
- };
78
- return {
79
- context: this._contextForReuse.context,
80
- needsReset: false
81
- };
71
+ if (this._contextForReuse)
72
+ await this._contextForReuse.context.close({ reason: "Context reused" });
73
+ this._contextForReuse = { context: await this.newContext(metadata, params), hash };
74
+ return { context: this._contextForReuse.context, needsReset: false };
82
75
  }
83
- await this._contextForReuse.context.stopPendingOperations('Context recreated');
84
- return {
85
- context: this._contextForReuse.context,
86
- needsReset: true
87
- };
76
+ await this._contextForReuse.context.stopPendingOperations("Context recreated");
77
+ return { context: this._contextForReuse.context, needsReset: true };
88
78
  }
89
79
  async stopPendingOperations(reason) {
90
- var _this$_contextForReus;
91
- await ((_this$_contextForReus = this._contextForReuse) === null || _this$_contextForReus === void 0 || (_this$_contextForReus = _this$_contextForReus.context) === null || _this$_contextForReus === void 0 ? void 0 : _this$_contextForReus.stopPendingOperations(reason));
80
+ await this._contextForReuse?.context?.stopPendingOperations(reason);
92
81
  }
93
82
  _downloadCreated(page, uuid, url, suggestedFilename) {
94
- const download = new _download.Download(page, this.options.downloadsPath || '', uuid, url, suggestedFilename);
83
+ const download = new import_download.Download(page, this.options.downloadsPath || "", uuid, url, suggestedFilename);
95
84
  this._downloads.set(uuid, download);
96
85
  }
97
86
  _downloadFilenameSuggested(uuid, suggestedFilename) {
98
87
  const download = this._downloads.get(uuid);
99
- if (!download) return;
88
+ if (!download)
89
+ return;
100
90
  download._filenameSuggested(suggestedFilename);
101
91
  }
102
92
  _downloadFinished(uuid, error) {
103
93
  const download = this._downloads.get(uuid);
104
- if (!download) return;
105
- download.artifact.reportFinished(error ? new Error(error) : undefined);
94
+ if (!download)
95
+ return;
96
+ download.artifact.reportFinished(error ? new Error(error) : void 0);
106
97
  this._downloads.delete(uuid);
107
98
  }
108
99
  _videoStarted(context, videoId, path, pageOrError) {
109
- const artifact = new _artifact.Artifact(context, path);
110
- this._idToVideo.set(videoId, {
111
- context,
112
- artifact
113
- });
114
- pageOrError.then(page => {
115
- if (page instanceof _page.Page) {
100
+ const artifact = new import_artifact.Artifact(context, path);
101
+ this._idToVideo.set(videoId, { context, artifact });
102
+ pageOrError.then((page) => {
103
+ if (page instanceof import_page.Page) {
116
104
  page._video = artifact;
117
- page.emitOnContext(_browserContext.BrowserContext.Events.VideoStarted, artifact);
118
- page.emit(_page.Page.Events.Video, artifact);
105
+ page.emitOnContext(import_browserContext.BrowserContext.Events.VideoStarted, artifact);
106
+ page.emit(import_page.Page.Events.Video, artifact);
119
107
  }
120
108
  });
121
109
  }
122
110
  _takeVideo(videoId) {
123
111
  const video = this._idToVideo.get(videoId);
124
112
  this._idToVideo.delete(videoId);
125
- return video === null || video === void 0 ? void 0 : video.artifact;
113
+ return video?.artifact;
126
114
  }
127
115
  _didClose() {
128
- for (const context of this.contexts()) context._browserClosed();
129
- if (this._defaultContext) this._defaultContext._browserClosed();
116
+ for (const context of this.contexts())
117
+ context._browserClosed();
118
+ if (this._defaultContext)
119
+ this._defaultContext._browserClosed();
130
120
  this.emit(Browser.Events.Disconnected);
131
121
  this.instrumentation.onBrowserClose(this);
132
122
  }
133
123
  async close(options) {
134
124
  if (!this._startedClosing) {
135
- if (options.reason) this._closeReason = options.reason;
125
+ if (options.reason)
126
+ this._closeReason = options.reason;
136
127
  this._startedClosing = true;
137
128
  await this.options.browserProcess.close();
138
129
  }
139
- if (this.isConnected()) await new Promise(x => this.once(Browser.Events.Disconnected, x));
130
+ if (this.isConnected())
131
+ await new Promise((x) => this.once(Browser.Events.Disconnected, x));
140
132
  }
141
133
  async killForTests() {
142
134
  await this.options.browserProcess.kill();
143
135
  }
144
136
  }
145
- exports.Browser = Browser;
146
- Browser.Events = {
147
- Disconnected: 'disconnected'
148
- };
137
+ // Annotate the CommonJS export names for ESM import in node:
138
+ 0 && (module.exports = {
139
+ Browser
140
+ });