patchright-core 1.51.2 → 1.52.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 (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 +54 -69
  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 +375 -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 +288 -403
  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 +77 -111
  170. package/lib/server/frames.js +741 -891
  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 +329 -426
  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 +90 -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-DVQi6prl.js} +1 -1
  285. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-DpJ-EmBQ.js → codeMirrorModule-dvXVzLxY.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.ChIUCJnj.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.html +3 -3
  294. package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
  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-DTenqiGw.js +0 -259
  302. package/lib/vite/traceViewer/index.CUq7VgrV.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +0 -5
@@ -1,45 +1,75 @@
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 recorder_exports = {};
30
+ __export(recorder_exports, {
31
+ Recorder: () => Recorder
5
32
  });
6
- exports.Recorder = void 0;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
9
- var _utils = require("../utils");
10
- var _browserContext = require("./browserContext");
11
- var _debugger = require("./debugger");
12
- var _contextRecorder = require("./recorder/contextRecorder");
13
- var _recorderUtils = require("./recorder/recorderUtils");
14
- var _locatorParser = require("../utils/isomorphic/locatorParser");
15
- var _selectorParser = require("../utils/isomorphic/selectorParser");
16
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
- /**
20
- * Copyright (c) Microsoft Corporation.
21
- *
22
- * Licensed under the Apache License, Version 2.0 (the "License");
23
- * you may not use this file except in compliance with the License.
24
- * You may obtain a copy of the License at
25
- *
26
- * http://www.apache.org/licenses/LICENSE-2.0
27
- *
28
- * Unless required by applicable law or agreed to in writing, software
29
- * distributed under the License is distributed on an "AS IS" BASIS,
30
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31
- * See the License for the specific language governing permissions and
32
- * limitations under the License.
33
- */
34
-
35
- const recorderSymbol = Symbol('recorderSymbol');
33
+ module.exports = __toCommonJS(recorder_exports);
34
+ var import_fs = __toESM(require("fs"));
35
+ var consoleApiSource = __toESM(require("../generated/consoleApiSource"));
36
+ var import_utils = require("../utils");
37
+ var import_browserContext = require("./browserContext");
38
+ var import_debugger = require("./debugger");
39
+ var import_contextRecorder = require("./recorder/contextRecorder");
40
+ var import_recorderUtils = require("./recorder/recorderUtils");
41
+ var import_locatorParser = require("../utils/isomorphic/locatorParser");
42
+ var import_selectorParser = require("../utils/isomorphic/selectorParser");
43
+ const recorderSymbol = Symbol("recorderSymbol");
36
44
  class Recorder {
45
+ constructor(context, params) {
46
+ this._highlightedElement = {};
47
+ this._overlayState = { offsetX: 0 };
48
+ this._recorderApp = null;
49
+ this._currentCallsMetadata = /* @__PURE__ */ new Map();
50
+ this._recorderSources = [];
51
+ this._userSources = /* @__PURE__ */ new Map();
52
+ this._omitCallTracking = false;
53
+ this._mode = params.mode || "none";
54
+ this.handleSIGINT = params.handleSIGINT;
55
+ this._contextRecorder = new import_contextRecorder.ContextRecorder(context, params, {});
56
+ this._context = context;
57
+ this._omitCallTracking = !!params.omitCallTracking;
58
+ this._debugger = context.debugger();
59
+ context.instrumentation.addListener(this, context);
60
+ this._currentLanguage = this._contextRecorder.languageName();
61
+ if ((0, import_utils.isUnderTest)()) {
62
+ this._overlayState.offsetX = 200;
63
+ }
64
+ }
37
65
  static async showInspector(context, params, recorderAppFactory) {
38
- if ((0, _utils.isUnderTest)()) params.language = process.env.TEST_INSPECTOR_LANGUAGE;
66
+ if ((0, import_utils.isUnderTest)())
67
+ params.language = process.env.TEST_INSPECTOR_LANGUAGE;
39
68
  return await Recorder.show(context, recorderAppFactory, params);
40
69
  }
41
70
  static showInspectorNoReply(context, recorderAppFactory) {
42
- Recorder.showInspector(context, {}, recorderAppFactory).catch(() => {});
71
+ Recorder.showInspector(context, {}, recorderAppFactory).catch(() => {
72
+ });
43
73
  }
44
74
  static show(context, recorderAppFactory, params) {
45
75
  let recorderPromise = context[recorderSymbol];
@@ -55,91 +85,68 @@ class Recorder {
55
85
  await recorder._install(recorderApp);
56
86
  return recorder;
57
87
  }
58
- constructor(context, params) {
59
- this.handleSIGINT = void 0;
60
- this._context = void 0;
61
- this._mode = void 0;
62
- this._highlightedElement = {};
63
- this._overlayState = {
64
- offsetX: 0
65
- };
66
- this._recorderApp = null;
67
- this._currentCallsMetadata = new Map();
68
- this._recorderSources = [];
69
- this._userSources = new Map();
70
- this._debugger = void 0;
71
- this._contextRecorder = void 0;
72
- this._omitCallTracking = false;
73
- this._currentLanguage = void 0;
74
- this._mode = params.mode || 'none';
75
- this.handleSIGINT = params.handleSIGINT;
76
- this._contextRecorder = new _contextRecorder.ContextRecorder(context, params, {});
77
- this._context = context;
78
- this._omitCallTracking = !!params.omitCallTracking;
79
- this._debugger = context.debugger();
80
- context.instrumentation.addListener(this, context);
81
- this._currentLanguage = this._contextRecorder.languageName();
82
- if ((0, _utils.isUnderTest)()) {
83
- // Most of our tests put elements at the top left, so get out of the way.
84
- this._overlayState.offsetX = 200;
85
- }
86
- }
87
88
  async _install(recorderApp) {
88
89
  this._recorderApp = recorderApp;
89
- recorderApp.once('close', () => {
90
+ recorderApp.once("close", () => {
90
91
  this._debugger.resume(false);
91
92
  this._recorderApp = null;
92
93
  });
93
- recorderApp.on('event', data => {
94
- if (data.event === 'setMode') {
94
+ recorderApp.on("event", (data) => {
95
+ if (data.event === "setMode") {
95
96
  this.setMode(data.params.mode);
96
97
  return;
97
98
  }
98
- if (data.event === 'highlightRequested') {
99
- if (data.params.selector) this.setHighlightedSelector(this._currentLanguage, data.params.selector);
100
- if (data.params.ariaTemplate) this.setHighlightedAriaTemplate(data.params.ariaTemplate);
99
+ if (data.event === "highlightRequested") {
100
+ if (data.params.selector)
101
+ this.setHighlightedSelector(this._currentLanguage, data.params.selector);
102
+ if (data.params.ariaTemplate)
103
+ this.setHighlightedAriaTemplate(data.params.ariaTemplate);
101
104
  return;
102
105
  }
103
- if (data.event === 'step') {
106
+ if (data.event === "step") {
104
107
  this._debugger.resume(true);
105
108
  return;
106
109
  }
107
- if (data.event === 'fileChanged') {
110
+ if (data.event === "fileChanged") {
108
111
  this._currentLanguage = this._contextRecorder.languageName(data.params.file);
109
112
  this._refreshOverlay();
110
113
  return;
111
114
  }
112
- if (data.event === 'resume') {
115
+ if (data.event === "resume") {
113
116
  this._debugger.resume(false);
114
117
  return;
115
118
  }
116
- if (data.event === 'pause') {
119
+ if (data.event === "pause") {
117
120
  this._debugger.pauseOnNextStatement();
118
121
  return;
119
122
  }
120
- if (data.event === 'clear') {
123
+ if (data.event === "clear") {
121
124
  this._contextRecorder.clearScript();
122
125
  return;
123
126
  }
124
- if (data.event === 'runTask') {
127
+ if (data.event === "runTask") {
125
128
  this._contextRecorder.runTask(data.params.task);
126
129
  return;
127
130
  }
128
131
  });
129
- await Promise.all([recorderApp.setMode(this._mode), recorderApp.setPaused(this._debugger.isPaused()), this._pushAllSources()]);
130
- this._context.once(_browserContext.BrowserContext.Events.Close, () => {
131
- var _this$_recorderApp;
132
+ await Promise.all([
133
+ recorderApp.setMode(this._mode),
134
+ recorderApp.setPaused(this._debugger.isPaused()),
135
+ this._pushAllSources()
136
+ ]);
137
+ this._context.once(import_browserContext.BrowserContext.Events.Close, () => {
132
138
  this._contextRecorder.dispose();
133
139
  this._context.instrumentation.removeListener(this);
134
- (_this$_recorderApp = this._recorderApp) === null || _this$_recorderApp === void 0 || _this$_recorderApp.close().catch(() => {});
140
+ this._recorderApp?.close().catch(() => {
141
+ });
135
142
  });
136
- this._contextRecorder.on(_contextRecorder.ContextRecorder.Events.Change, data => {
143
+ this._contextRecorder.on(import_contextRecorder.ContextRecorder.Events.Change, (data) => {
137
144
  this._recorderSources = data.sources;
138
145
  recorderApp.setActions(data.actions, data.sources);
139
- recorderApp.setRunningFile(undefined);
146
+ recorderApp.setRunningFile(void 0);
140
147
  this._pushAllSources();
141
148
  });
142
- await this._context.exposeBinding('__pw_recorderState', false, async source => {
149
+ await this._context.exposeBinding("__pw_recorderState", false, async (source) => {
143
150
  let actionSelector;
144
151
  let actionPoint;
145
152
  const hasActiveScreenshotCommand = [...this._currentCallsMetadata.keys()].some(isScreenshotCommand);
@@ -163,59 +170,50 @@ class Recorder {
163
170
  };
164
171
  return uiState;
165
172
  });
166
- await this._context.exposeBinding('__pw_recorderElementPicked', false, async ({
167
- frame
168
- }, elementInfo) => {
169
- var _this$_recorderApp2;
170
- const selectorChain = await (0, _contextRecorder.generateFrameSelector)(frame);
171
- await ((_this$_recorderApp2 = this._recorderApp) === null || _this$_recorderApp2 === void 0 ? void 0 : _this$_recorderApp2.elementPicked({
172
- selector: (0, _recorderUtils.buildFullSelector)(selectorChain, elementInfo.selector),
173
- ariaSnapshot: elementInfo.ariaSnapshot
174
- }, true));
173
+ await this._context.exposeBinding("__pw_recorderElementPicked", false, async ({ frame }, elementInfo) => {
174
+ const selectorChain = await (0, import_contextRecorder.generateFrameSelector)(frame);
175
+ await this._recorderApp?.elementPicked({ selector: (0, import_recorderUtils.buildFullSelector)(selectorChain, elementInfo.selector), ariaSnapshot: elementInfo.ariaSnapshot }, true);
175
176
  });
176
- await this._context.exposeBinding('__pw_recorderSetMode', false, async ({
177
- frame
178
- }, mode) => {
179
- if (frame.parentFrame()) return;
177
+ await this._context.exposeBinding("__pw_recorderSetMode", false, async ({ frame }, mode) => {
178
+ if (frame.parentFrame())
179
+ return;
180
180
  this.setMode(mode);
181
181
  });
182
- await this._context.exposeBinding('__pw_recorderSetOverlayState', false, async ({
183
- frame
184
- }, state) => {
185
- if (frame.parentFrame()) return;
182
+ await this._context.exposeBinding("__pw_recorderSetOverlayState", false, async ({ frame }, state) => {
183
+ if (frame.parentFrame())
184
+ return;
186
185
  this._overlayState = state;
187
186
  });
188
- await this._context.exposeBinding('__pw_resume', false, () => {
187
+ await this._context.exposeBinding("__pw_resume", false, () => {
189
188
  this._debugger.resume(false);
190
189
  });
191
190
  await this._context.extendInjectedScript(consoleApiSource.source);
192
191
  await this._contextRecorder.install();
193
- if (this._debugger.isPaused()) this._pausedStateChanged();
194
- this._debugger.on(_debugger.Debugger.Events.PausedStateChanged, () => this._pausedStateChanged());
192
+ if (this._debugger.isPaused())
193
+ this._pausedStateChanged();
194
+ this._debugger.on(import_debugger.Debugger.Events.PausedStateChanged, () => this._pausedStateChanged());
195
195
  this._context.recorderAppForTest = this._recorderApp;
196
196
  }
197
197
  _pausedStateChanged() {
198
- var _this$_recorderApp3;
199
- // If we are called upon page.pause, we don't have metadatas, populate them.
200
- for (const {
201
- metadata,
202
- sdkObject
203
- } of this._debugger.pausedDetails()) {
204
- if (!this._currentCallsMetadata.has(metadata)) this.onBeforeCall(sdkObject, metadata);
198
+ for (const { metadata, sdkObject } of this._debugger.pausedDetails()) {
199
+ if (!this._currentCallsMetadata.has(metadata))
200
+ this.onBeforeCall(sdkObject, metadata);
205
201
  }
206
- (_this$_recorderApp3 = this._recorderApp) === null || _this$_recorderApp3 === void 0 || _this$_recorderApp3.setPaused(this._debugger.isPaused());
202
+ this._recorderApp?.setPaused(this._debugger.isPaused());
207
203
  this._updateUserSources();
208
204
  this.updateCallLog([...this._currentCallsMetadata.keys()]);
209
205
  }
210
206
  setMode(mode) {
211
- var _this$_recorderApp4;
212
- if (this._mode === mode) return;
207
+ if (this._mode === mode)
208
+ return;
213
209
  this._highlightedElement = {};
214
210
  this._mode = mode;
215
- (_this$_recorderApp4 = this._recorderApp) === null || _this$_recorderApp4 === void 0 || _this$_recorderApp4.setMode(this._mode);
211
+ this._recorderApp?.setMode(this._mode);
216
212
  this._contextRecorder.setEnabled(this._isRecording());
217
213
  this._debugger.setMuted(this._isRecording());
218
- if (this._mode !== 'none' && this._mode !== 'standby' && this._context.pages().length === 1) this._context.pages()[0].bringToFront().catch(() => {});
214
+ if (this._mode !== "none" && this._mode !== "standby" && this._context.pages().length === 1)
215
+ this._context.pages()[0].bringToFront().catch(() => {
216
+ });
219
217
  this._refreshOverlay();
220
218
  }
221
219
  resume() {
@@ -225,15 +223,11 @@ class Recorder {
225
223
  return this._mode;
226
224
  }
227
225
  setHighlightedSelector(language, selector) {
228
- this._highlightedElement = {
229
- selector: (0, _locatorParser.locatorOrSelectorAsSelector)(language, selector, this._context.selectors().testIdAttributeName())
230
- };
226
+ this._highlightedElement = { selector: (0, import_locatorParser.locatorOrSelectorAsSelector)(language, selector, this._context.selectors().testIdAttributeName()) };
231
227
  this._refreshOverlay();
232
228
  }
233
229
  setHighlightedAriaTemplate(ariaTemplate) {
234
- this._highlightedElement = {
235
- ariaTemplate
236
- };
230
+ this._highlightedElement = { ariaTemplate };
237
231
  this._refreshOverlay();
238
232
  }
239
233
  hideHighlightedSelector() {
@@ -241,23 +235,20 @@ class Recorder {
241
235
  this._refreshOverlay();
242
236
  }
243
237
  async _scopeHighlightedSelectorToFrame(frame) {
244
- if (!this._highlightedElement.selector) return;
238
+ if (!this._highlightedElement.selector)
239
+ return;
245
240
  try {
246
241
  const mainFrame = frame._page.mainFrame();
247
242
  const resolved = await mainFrame.selectors.resolveFrameForSelector(this._highlightedElement.selector);
248
- // selector couldn't be found, don't highlight anything
249
- if (!resolved) return '';
250
-
251
- // selector points to no specific frame, highlight in all frames
252
- if ((resolved === null || resolved === void 0 ? void 0 : resolved.frame) === mainFrame) return (0, _selectorParser.stringifySelector)(resolved.info.parsed);
253
-
254
- // selector points to this frame, highlight it
255
- if ((resolved === null || resolved === void 0 ? void 0 : resolved.frame) === frame) return (0, _selectorParser.stringifySelector)(resolved.info.parsed);
256
-
257
- // selector points to a different frame, highlight nothing
258
- return '';
243
+ if (!resolved)
244
+ return "";
245
+ if (resolved?.frame === mainFrame)
246
+ return (0, import_selectorParser.stringifySelector)(resolved.info.parsed);
247
+ if (resolved?.frame === frame)
248
+ return (0, import_selectorParser.stringifySelector)(resolved.info.parsed);
249
+ return "";
259
250
  } catch {
260
- return '';
251
+ return "";
261
252
  }
262
253
  }
263
254
  setOutput(codegenId, outputFile) {
@@ -265,105 +256,105 @@ class Recorder {
265
256
  }
266
257
  _refreshOverlay() {
267
258
  for (const page of this._context.pages()) {
268
- for (const frame of page.frames()) frame.evaluateExpression('window.__pw_refreshOverlay()').catch(() => {});
259
+ for (const frame of page.frames())
260
+ frame.evaluateExpression("window.__pw_refreshOverlay()").catch(() => {
261
+ });
269
262
  }
270
263
  }
271
264
  async onBeforeCall(sdkObject, metadata) {
272
- if (this._omitCallTracking || this._isRecording()) return;
265
+ if (this._omitCallTracking || this._isRecording())
266
+ return;
273
267
  this._currentCallsMetadata.set(metadata, sdkObject);
274
268
  this._updateUserSources();
275
269
  this.updateCallLog([metadata]);
276
- if (isScreenshotCommand(metadata)) this.hideHighlightedSelector();else if (metadata.params && metadata.params.selector) this._highlightedElement = {
277
- selector: metadata.params.selector
278
- };
270
+ if (isScreenshotCommand(metadata))
271
+ this.hideHighlightedSelector();
272
+ else if (metadata.params && metadata.params.selector)
273
+ this._highlightedElement = { selector: metadata.params.selector };
279
274
  }
280
275
  async onAfterCall(sdkObject, metadata) {
281
- if (this._omitCallTracking || this._isRecording()) return;
282
- if (!metadata.error) this._currentCallsMetadata.delete(metadata);
276
+ if (this._omitCallTracking || this._isRecording())
277
+ return;
278
+ if (!metadata.error)
279
+ this._currentCallsMetadata.delete(metadata);
283
280
  this._updateUserSources();
284
281
  this.updateCallLog([metadata]);
285
282
  }
286
283
  _updateUserSources() {
287
- var _this$_recorderApp5;
288
- // Remove old decorations.
289
284
  for (const source of this._userSources.values()) {
290
285
  source.highlight = [];
291
- source.revealLine = undefined;
286
+ source.revealLine = void 0;
292
287
  }
293
-
294
- // Apply new decorations.
295
- let fileToSelect = undefined;
288
+ let fileToSelect = void 0;
296
289
  for (const metadata of this._currentCallsMetadata.keys()) {
297
- if (!metadata.location) continue;
298
- const {
299
- file,
300
- line
301
- } = metadata.location;
290
+ if (!metadata.location)
291
+ continue;
292
+ const { file, line } = metadata.location;
302
293
  let source = this._userSources.get(file);
303
294
  if (!source) {
304
- source = {
305
- isRecorded: false,
306
- label: file,
307
- id: file,
308
- text: this._readSource(file),
309
- highlight: [],
310
- language: languageForFile(file)
311
- };
295
+ source = { isRecorded: false, label: file, id: file, text: this._readSource(file), highlight: [], language: languageForFile(file) };
312
296
  this._userSources.set(file, source);
313
297
  }
314
298
  if (line) {
315
299
  const paused = this._debugger.isPaused(metadata);
316
- source.highlight.push({
317
- line,
318
- type: metadata.error ? 'error' : paused ? 'paused' : 'running'
319
- });
300
+ source.highlight.push({ line, type: metadata.error ? "error" : paused ? "paused" : "running" });
320
301
  source.revealLine = line;
321
302
  fileToSelect = source.id;
322
303
  }
323
304
  }
324
305
  this._pushAllSources();
325
- if (fileToSelect) (_this$_recorderApp5 = this._recorderApp) === null || _this$_recorderApp5 === void 0 || _this$_recorderApp5.setRunningFile(fileToSelect);
306
+ if (fileToSelect)
307
+ this._recorderApp?.setRunningFile(fileToSelect);
326
308
  }
327
309
  _pushAllSources() {
328
- var _this$_recorderApp6;
329
310
  const primaryPage = this._context.pages()[0];
330
- (_this$_recorderApp6 = this._recorderApp) === null || _this$_recorderApp6 === void 0 || _this$_recorderApp6.setSources([...this._recorderSources, ...this._userSources.values()], primaryPage === null || primaryPage === void 0 ? void 0 : primaryPage.mainFrame().url());
311
+ this._recorderApp?.setSources([...this._recorderSources, ...this._userSources.values()], primaryPage?.mainFrame().url());
312
+ }
313
+ async onBeforeInputAction(sdkObject, metadata) {
331
314
  }
332
- async onBeforeInputAction(sdkObject, metadata) {}
333
315
  async onCallLog(sdkObject, metadata, logName, message) {
334
316
  this.updateCallLog([metadata]);
335
317
  }
336
318
  updateCallLog(metadatas) {
337
- var _this$_recorderApp7;
338
- if (this._isRecording()) return;
319
+ if (this._isRecording())
320
+ return;
339
321
  const logs = [];
340
322
  for (const metadata of metadatas) {
341
- if (!metadata.method || metadata.internal) continue;
342
- let status = 'done';
343
- if (this._currentCallsMetadata.has(metadata)) status = 'in-progress';
344
- if (this._debugger.isPaused(metadata)) status = 'paused';
345
- logs.push((0, _recorderUtils.metadataToCallLog)(metadata, status));
323
+ if (!metadata.method || metadata.internal)
324
+ continue;
325
+ let status = "done";
326
+ if (this._currentCallsMetadata.has(metadata))
327
+ status = "in-progress";
328
+ if (this._debugger.isPaused(metadata))
329
+ status = "paused";
330
+ logs.push((0, import_recorderUtils.metadataToCallLog)(metadata, status));
346
331
  }
347
- (_this$_recorderApp7 = this._recorderApp) === null || _this$_recorderApp7 === void 0 || _this$_recorderApp7.updateCallLogs(logs);
332
+ this._recorderApp?.updateCallLogs(logs);
348
333
  }
349
334
  _isRecording() {
350
- return ['recording', 'assertingText', 'assertingVisibility', 'assertingValue', 'assertingSnapshot'].includes(this._mode);
335
+ return ["recording", "assertingText", "assertingVisibility", "assertingValue", "assertingSnapshot"].includes(this._mode);
351
336
  }
352
337
  _readSource(fileName) {
353
338
  try {
354
- return _fs.default.readFileSync(fileName, 'utf-8');
339
+ return import_fs.default.readFileSync(fileName, "utf-8");
355
340
  } catch (e) {
356
- return '// No source available';
341
+ return "// No source available";
357
342
  }
358
343
  }
359
344
  }
360
- exports.Recorder = Recorder;
361
345
  function isScreenshotCommand(metadata) {
362
- return metadata.method.toLowerCase().includes('screenshot');
346
+ return metadata.method.toLowerCase().includes("screenshot");
363
347
  }
364
348
  function languageForFile(file) {
365
- if (file.endsWith('.py')) return 'python';
366
- if (file.endsWith('.java')) return 'java';
367
- if (file.endsWith('.cs')) return 'csharp';
368
- return 'javascript';
369
- }
349
+ if (file.endsWith(".py"))
350
+ return "python";
351
+ if (file.endsWith(".java"))
352
+ return "java";
353
+ if (file.endsWith(".cs"))
354
+ return "csharp";
355
+ return "javascript";
356
+ }
357
+ // Annotate the CommonJS export names for ESM import in node:
358
+ 0 && (module.exports = {
359
+ Recorder
360
+ });