patchright-bun-core 1.58.2 → 1.59.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 (272) hide show
  1. package/ThirdPartyNotices.txt +126 -650
  2. package/browsers.json +16 -14
  3. package/lib/bootstrap.js +77 -0
  4. package/lib/cli/browserActions.js +308 -0
  5. package/lib/cli/driver.js +3 -2
  6. package/lib/cli/installActions.js +171 -0
  7. package/lib/cli/program.js +47 -411
  8. package/lib/client/android.js +4 -4
  9. package/lib/client/api.js +3 -3
  10. package/lib/client/browser.js +8 -0
  11. package/lib/client/browserContext.js +18 -37
  12. package/lib/client/browserType.js +19 -51
  13. package/lib/client/cdpSession.js +6 -2
  14. package/lib/client/channelOwner.js +1 -1
  15. package/lib/client/{webSocket.js → connect.js} +57 -7
  16. package/lib/client/connection.js +8 -4
  17. package/lib/client/consoleMessage.js +3 -0
  18. package/lib/client/debugger.js +57 -0
  19. package/lib/client/dialog.js +8 -1
  20. package/lib/client/disposable.js +76 -0
  21. package/lib/client/electron.js +1 -0
  22. package/lib/client/elementHandle.js +1 -4
  23. package/lib/client/events.js +3 -3
  24. package/lib/client/fetch.js +0 -1
  25. package/lib/client/frame.js +0 -5
  26. package/lib/client/harRouter.js +13 -1
  27. package/lib/client/jsHandle.js +0 -4
  28. package/lib/client/locator.js +5 -7
  29. package/lib/client/network.js +14 -11
  30. package/lib/client/page.js +34 -48
  31. package/lib/client/platform.js +0 -3
  32. package/lib/client/screencast.js +88 -0
  33. package/lib/client/selectors.js +3 -1
  34. package/lib/client/tracing.js +11 -4
  35. package/lib/client/video.js +13 -20
  36. package/lib/generated/bindingsControllerSource.js +1 -1
  37. package/lib/generated/clockSource.js +1 -1
  38. package/lib/generated/injectedScriptSource.js +1 -1
  39. package/lib/generated/pollingRecorderSource.js +1 -1
  40. package/lib/generated/storageScriptSource.js +1 -1
  41. package/lib/generated/utilityScriptSource.js +1 -1
  42. package/lib/mcpBundle.js +0 -6
  43. package/lib/mcpBundleImpl.js +91 -0
  44. package/lib/protocol/validator.js +216 -118
  45. package/lib/protocol/validatorPrimitives.js +1 -1
  46. package/lib/remote/playwrightConnection.js +10 -8
  47. package/lib/remote/playwrightPipeServer.js +100 -0
  48. package/lib/remote/playwrightServer.js +13 -8
  49. package/lib/remote/playwrightWebSocketServer.js +73 -0
  50. package/lib/remote/serverTransport.js +96 -0
  51. package/lib/server/android/android.js +2 -2
  52. package/lib/server/bidi/bidiBrowser.js +30 -8
  53. package/lib/server/bidi/bidiChromium.js +18 -5
  54. package/lib/server/bidi/bidiNetworkManager.js +39 -11
  55. package/lib/server/bidi/bidiPage.js +31 -15
  56. package/lib/server/bidi/third_party/firefoxPrefs.js +3 -1
  57. package/lib/server/browser.js +84 -21
  58. package/lib/server/browserContext.js +97 -58
  59. package/lib/server/browserType.js +14 -12
  60. package/lib/server/chromium/chromium.js +15 -13
  61. package/lib/server/chromium/crBrowser.js +18 -10
  62. package/lib/server/chromium/crNetworkManager.js +4 -4
  63. package/lib/server/chromium/crPage.js +26 -64
  64. package/lib/server/chromium/crServiceWorker.js +5 -4
  65. package/lib/server/clock.js +33 -33
  66. package/lib/server/console.js +5 -1
  67. package/lib/server/debugController.js +12 -6
  68. package/lib/server/debugger.js +40 -47
  69. package/lib/server/deviceDescriptorsSource.json +137 -137
  70. package/lib/server/dispatchers/browserContextDispatcher.js +27 -30
  71. package/lib/server/dispatchers/browserDispatcher.js +11 -5
  72. package/lib/server/dispatchers/browserTypeDispatcher.js +7 -0
  73. package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -1
  74. package/lib/server/dispatchers/debuggerDispatcher.js +84 -0
  75. package/lib/server/dispatchers/dispatcher.js +1 -1
  76. package/lib/server/dispatchers/disposableDispatcher.js +39 -0
  77. package/lib/server/dispatchers/electronDispatcher.js +2 -1
  78. package/lib/server/dispatchers/frameDispatcher.js +3 -3
  79. package/lib/server/dispatchers/localUtilsDispatcher.js +37 -1
  80. package/lib/server/dispatchers/networkDispatchers.js +6 -5
  81. package/lib/server/dispatchers/pageDispatcher.js +101 -38
  82. package/lib/server/dispatchers/webSocketRouteDispatcher.js +4 -5
  83. package/lib/server/disposable.js +41 -0
  84. package/lib/server/dom.js +44 -26
  85. package/lib/server/download.js +3 -2
  86. package/lib/server/electron/electron.js +12 -7
  87. package/lib/server/firefox/ffBrowser.js +9 -19
  88. package/lib/server/firefox/ffInput.js +21 -5
  89. package/lib/server/firefox/ffNetworkManager.js +2 -2
  90. package/lib/server/firefox/ffPage.js +24 -27
  91. package/lib/server/frames.js +40 -11
  92. package/lib/server/har/harRecorder.js +2 -2
  93. package/lib/server/har/harTracer.js +5 -4
  94. package/lib/server/input.js +49 -4
  95. package/lib/server/instrumentation.js +5 -0
  96. package/lib/server/launchApp.js +0 -1
  97. package/lib/server/localUtils.js +6 -6
  98. package/lib/server/network.js +9 -8
  99. package/lib/server/overlay.js +138 -0
  100. package/lib/server/page.js +111 -51
  101. package/lib/server/progress.js +6 -0
  102. package/lib/server/recorder/recorderApp.js +9 -8
  103. package/lib/server/recorder.js +76 -40
  104. package/lib/server/registry/index.js +54 -81
  105. package/lib/server/registry/nativeDeps.js +1 -0
  106. package/lib/server/screencast.js +90 -143
  107. package/lib/server/trace/recorder/snapshotter.js +2 -2
  108. package/lib/server/trace/recorder/tracing.js +87 -36
  109. package/lib/server/trace/viewer/traceViewer.js +3 -4
  110. package/lib/server/usKeyboardLayout.js +7 -0
  111. package/lib/server/utils/comparators.js +1 -1
  112. package/lib/server/utils/disposable.js +32 -0
  113. package/lib/server/utils/eventsHelper.js +3 -1
  114. package/lib/server/utils/fileUtils.js +16 -2
  115. package/lib/server/utils/happyEyeballs.js +15 -12
  116. package/lib/server/utils/hostPlatform.js +0 -15
  117. package/lib/server/utils/httpServer.js +5 -3
  118. package/lib/server/utils/network.js +2 -1
  119. package/lib/server/utils/nodePlatform.js +0 -6
  120. package/lib/server/utils/processLauncher.js +8 -6
  121. package/lib/server/utils/zipFile.js +2 -2
  122. package/lib/server/videoRecorder.js +82 -12
  123. package/lib/server/webkit/wkBrowser.js +1 -6
  124. package/lib/server/webkit/wkPage.js +27 -25
  125. package/lib/server/webkit/wkWorkers.js +2 -1
  126. package/lib/serverRegistry.js +156 -0
  127. package/lib/tools/backend/browserBackend.js +79 -0
  128. package/lib/tools/backend/common.js +63 -0
  129. package/lib/tools/backend/config.js +41 -0
  130. package/lib/tools/backend/console.js +66 -0
  131. package/lib/tools/backend/context.js +296 -0
  132. package/lib/tools/backend/cookies.js +152 -0
  133. package/lib/tools/backend/devtools.js +69 -0
  134. package/lib/tools/backend/dialogs.js +59 -0
  135. package/lib/tools/backend/evaluate.js +64 -0
  136. package/lib/tools/backend/files.js +60 -0
  137. package/lib/tools/backend/form.js +64 -0
  138. package/lib/tools/backend/keyboard.js +155 -0
  139. package/lib/tools/backend/logFile.js +95 -0
  140. package/lib/tools/backend/mouse.js +168 -0
  141. package/lib/tools/backend/navigate.js +106 -0
  142. package/lib/tools/backend/network.js +135 -0
  143. package/lib/tools/backend/pdf.js +48 -0
  144. package/lib/tools/backend/response.js +305 -0
  145. package/lib/tools/backend/route.js +140 -0
  146. package/lib/tools/backend/runCode.js +77 -0
  147. package/lib/tools/backend/screenshot.js +88 -0
  148. package/lib/tools/backend/sessionLog.js +74 -0
  149. package/lib/tools/backend/snapshot.js +208 -0
  150. package/lib/tools/backend/storage.js +68 -0
  151. package/lib/tools/backend/tab.js +445 -0
  152. package/lib/tools/backend/tabs.js +67 -0
  153. package/lib/tools/backend/tool.js +47 -0
  154. package/lib/tools/backend/tools.js +102 -0
  155. package/lib/tools/backend/tracing.js +78 -0
  156. package/lib/tools/backend/utils.js +83 -0
  157. package/lib/tools/backend/verify.js +151 -0
  158. package/lib/tools/backend/video.js +98 -0
  159. package/lib/tools/backend/wait.js +63 -0
  160. package/lib/tools/backend/webstorage.js +223 -0
  161. package/lib/tools/cli-client/cli.js +6 -0
  162. package/lib/tools/cli-client/help.json +399 -0
  163. package/lib/tools/cli-client/minimist.js +128 -0
  164. package/lib/tools/cli-client/program.js +350 -0
  165. package/lib/tools/cli-client/registry.js +176 -0
  166. package/lib/tools/cli-client/session.js +289 -0
  167. package/lib/tools/cli-client/skill/SKILL.md +328 -0
  168. package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
  169. package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
  170. package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
  171. package/lib/tools/cli-client/skill/references/running-code.md +231 -0
  172. package/lib/tools/cli-client/skill/references/session-management.md +169 -0
  173. package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
  174. package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
  175. package/lib/tools/cli-client/skill/references/tracing.md +139 -0
  176. package/lib/tools/cli-client/skill/references/video-recording.md +143 -0
  177. package/lib/tools/cli-daemon/command.js +73 -0
  178. package/lib/tools/cli-daemon/commands.js +956 -0
  179. package/lib/tools/cli-daemon/daemon.js +157 -0
  180. package/lib/tools/cli-daemon/helpGenerator.js +177 -0
  181. package/lib/tools/cli-daemon/program.js +129 -0
  182. package/lib/tools/dashboard/appIcon.png +0 -0
  183. package/lib/tools/dashboard/dashboardApp.js +284 -0
  184. package/lib/tools/dashboard/dashboardController.js +296 -0
  185. package/lib/tools/exports.js +60 -0
  186. package/lib/tools/mcp/browserFactory.js +233 -0
  187. package/lib/tools/mcp/cdpRelay.js +352 -0
  188. package/lib/tools/mcp/cli-stub.js +7 -0
  189. package/lib/tools/mcp/config.d.js +16 -0
  190. package/lib/tools/mcp/config.js +446 -0
  191. package/lib/tools/mcp/configIni.js +189 -0
  192. package/lib/tools/mcp/extensionContextFactory.js +55 -0
  193. package/lib/tools/mcp/index.js +62 -0
  194. package/lib/tools/mcp/log.js +35 -0
  195. package/lib/tools/mcp/program.js +107 -0
  196. package/lib/tools/mcp/protocol.js +28 -0
  197. package/lib/tools/mcp/watchdog.js +44 -0
  198. package/lib/tools/trace/SKILL.md +171 -0
  199. package/lib/{server/trace/viewer/traceParser.js → tools/trace/installSkill.js} +15 -39
  200. package/lib/tools/trace/traceActions.js +142 -0
  201. package/lib/tools/trace/traceAttachments.js +69 -0
  202. package/lib/tools/trace/traceCli.js +87 -0
  203. package/lib/tools/trace/traceConsole.js +97 -0
  204. package/lib/tools/trace/traceErrors.js +55 -0
  205. package/lib/tools/trace/traceOpen.js +69 -0
  206. package/lib/tools/trace/traceParser.js +96 -0
  207. package/lib/tools/trace/traceRequests.js +182 -0
  208. package/lib/tools/trace/traceScreenshot.js +68 -0
  209. package/lib/tools/trace/traceSnapshot.js +149 -0
  210. package/lib/tools/trace/traceUtils.js +153 -0
  211. package/lib/tools/utils/connect.js +32 -0
  212. package/lib/tools/utils/mcp/http.js +152 -0
  213. package/lib/tools/utils/mcp/server.js +230 -0
  214. package/lib/tools/utils/mcp/tool.js +47 -0
  215. package/lib/tools/utils/socketConnection.js +108 -0
  216. package/lib/utils/isomorphic/formatUtils.js +64 -0
  217. package/lib/utils/isomorphic/jsonSchema.js +89 -0
  218. package/lib/utils/isomorphic/mimeType.js +7 -2
  219. package/lib/utils/isomorphic/protocolFormatter.js +2 -2
  220. package/lib/utils/isomorphic/protocolMetainfo.js +127 -106
  221. package/lib/utils/isomorphic/stringUtils.js +3 -3
  222. package/lib/utils/isomorphic/timeoutRunner.js +3 -3
  223. package/lib/utils/isomorphic/trace/snapshotRenderer.js +35 -42
  224. package/lib/utils/isomorphic/trace/traceLoader.js +15 -14
  225. package/lib/utils/isomorphic/trace/traceModel.js +3 -2
  226. package/lib/utils/isomorphic/trace/traceModernizer.js +1 -0
  227. package/lib/utils/isomorphic/urlMatch.js +54 -1
  228. package/lib/utils/isomorphic/utilityScriptSerializers.js +11 -0
  229. package/lib/utils.js +6 -2
  230. package/lib/utilsBundle.js +3 -21
  231. package/lib/utilsBundleImpl/index.js +132 -133
  232. package/lib/vite/dashboard/assets/index-BAOybkp8.js +50 -0
  233. package/lib/vite/dashboard/assets/index-CZAYOG76.css +1 -0
  234. package/lib/vite/dashboard/index.html +28 -0
  235. package/lib/vite/htmlReport/index.html +2 -70
  236. package/lib/vite/htmlReport/report.css +1 -0
  237. package/lib/vite/htmlReport/report.js +72 -0
  238. package/lib/vite/recorder/assets/{codeMirrorModule-DadYNm1I.js → codeMirrorModule-C8KMvO9L.js} +20 -20
  239. package/lib/vite/recorder/assets/index-CqAYX1I3.js +193 -0
  240. package/lib/vite/recorder/index.html +1 -1
  241. package/lib/vite/traceViewer/assets/{codeMirrorModule-a5XoALAZ.js → codeMirrorModule-DS0FLvoc.js} +20 -20
  242. package/lib/vite/traceViewer/assets/defaultSettingsView-GTWI-W_B.js +262 -0
  243. package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
  244. package/lib/vite/traceViewer/{index.BVu7tZDe.css → index.CzXZzn5A.css} +1 -1
  245. package/lib/vite/traceViewer/{index.BDwrLSGN.js → index.Dtstcb7U.js} +1 -1
  246. package/lib/vite/traceViewer/index.html +4 -4
  247. package/lib/vite/traceViewer/sw.bundle.js +4 -4
  248. package/lib/vite/traceViewer/uiMode.Vipi55dB.js +6 -0
  249. package/lib/vite/traceViewer/uiMode.html +3 -3
  250. package/lib/zipBundleImpl.js +2 -2
  251. package/lib/zodBundle.js +39 -0
  252. package/lib/zodBundleImpl.js +40 -0
  253. package/package.json +6 -1
  254. package/types/protocol.d.ts +947 -51
  255. package/types/types.d.ts +854 -74
  256. package/lib/client/pageAgent.js +0 -64
  257. package/lib/mcpBundleImpl/index.js +0 -147
  258. package/lib/server/agent/actionRunner.js +0 -335
  259. package/lib/server/agent/actions.js +0 -128
  260. package/lib/server/agent/codegen.js +0 -111
  261. package/lib/server/agent/context.js +0 -150
  262. package/lib/server/agent/expectTools.js +0 -156
  263. package/lib/server/agent/pageAgent.js +0 -204
  264. package/lib/server/agent/performTools.js +0 -262
  265. package/lib/server/agent/tool.js +0 -109
  266. package/lib/server/dispatchers/pageAgentDispatcher.js +0 -96
  267. package/lib/vite/recorder/assets/index-BhTWtUlo.js +0 -193
  268. package/lib/vite/traceViewer/assets/defaultSettingsView-CJSZINFr.js +0 -266
  269. package/lib/vite/traceViewer/defaultSettingsView.7ch9cixO.css +0 -1
  270. package/lib/vite/traceViewer/uiMode.CQJ9SCIQ.js +0 -5
  271. /package/lib/{server/utils → utils/isomorphic}/imageUtils.js +0 -0
  272. /package/lib/utils/isomorphic/{traceUtils.js → trace/traceUtils.js} +0 -0
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var protocolMetainfo_exports = {};
20
20
  __export(protocolMetainfo_exports, {
21
+ getMetainfo: () => getMetainfo,
21
22
  methodMetainfo: () => methodMetainfo
22
23
  });
23
24
  module.exports = __toCommonJS(protocolMetainfo_exports);
@@ -25,7 +26,7 @@ const methodMetainfo = /* @__PURE__ */ new Map([
25
26
  ["APIRequestContext.fetch", { title: '{method} "{url}"' }],
26
27
  ["APIRequestContext.fetchResponseBody", { title: "Get response body", group: "getter" }],
27
28
  ["APIRequestContext.fetchLog", { internal: true }],
28
- ["APIRequestContext.storageState", { title: "Get storage state" }],
29
+ ["APIRequestContext.storageState", { title: "Get storage state", group: "configuration" }],
29
30
  ["APIRequestContext.disposeAPIResponse", { internal: true }],
30
31
  ["APIRequestContext.dispose", { internal: true }],
31
32
  ["LocalUtils.zip", { internal: true }],
@@ -55,7 +56,10 @@ const methodMetainfo = /* @__PURE__ */ new Map([
55
56
  ["BrowserType.launch", { title: "Launch browser" }],
56
57
  ["BrowserType.launchPersistentContext", { title: "Launch persistent context" }],
57
58
  ["BrowserType.connectOverCDP", { title: "Connect over CDP" }],
58
- ["Browser.close", { title: "Close browser", pausesBeforeAction: true }],
59
+ ["BrowserType.connectOverCDPTransport", { title: "Connect over CDP transport" }],
60
+ ["Browser.startServer", { title: "Start server" }],
61
+ ["Browser.stopServer", { title: "Stop server" }],
62
+ ["Browser.close", { title: "Close browser", pause: true }],
59
63
  ["Browser.killForTests", { internal: true }],
60
64
  ["Browser.defaultUserAgentForTest", { internal: true }],
61
65
  ["Browser.newContext", { title: "Create context" }],
@@ -69,14 +73,14 @@ const methodMetainfo = /* @__PURE__ */ new Map([
69
73
  ["Page.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
70
74
  ["Worker.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
71
75
  ["WebSocket.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
76
+ ["Debugger.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
72
77
  ["ElectronApplication.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
73
78
  ["AndroidDevice.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
74
- ["PageAgent.waitForEventInfo", { title: 'Wait for event "{info.event}"', snapshot: true }],
75
79
  ["BrowserContext.addCookies", { title: "Add cookies", group: "configuration" }],
76
80
  ["BrowserContext.addInitScript", { title: "Add init script", group: "configuration" }],
77
81
  ["BrowserContext.clearCookies", { title: "Clear cookies", group: "configuration" }],
78
82
  ["BrowserContext.clearPermissions", { title: "Clear permissions", group: "configuration" }],
79
- ["BrowserContext.close", { title: "Close context", pausesBeforeAction: true }],
83
+ ["BrowserContext.close", { title: "Close context", pause: true }],
80
84
  ["BrowserContext.cookies", { title: "Get cookies", group: "getter" }],
81
85
  ["BrowserContext.exposeBinding", { title: "Expose binding", group: "configuration" }],
82
86
  ["BrowserContext.grantPermissions", { title: "Grant permissions", group: "configuration" }],
@@ -89,7 +93,8 @@ const methodMetainfo = /* @__PURE__ */ new Map([
89
93
  ["BrowserContext.setNetworkInterceptionPatterns", { title: "Route requests", group: "route" }],
90
94
  ["BrowserContext.setWebSocketInterceptionPatterns", { title: "Route WebSockets", group: "route" }],
91
95
  ["BrowserContext.setOffline", { title: "Set offline mode" }],
92
- ["BrowserContext.storageState", { title: "Get storage state" }],
96
+ ["BrowserContext.storageState", { title: "Get storage state", group: "configuration" }],
97
+ ["BrowserContext.setStorageState", { title: "Set storage state", group: "configuration" }],
93
98
  ["BrowserContext.pause", { title: "Pause" }],
94
99
  ["BrowserContext.enableRecorder", { internal: true }],
95
100
  ["BrowserContext.disableRecorder", { internal: true }],
@@ -107,142 +112,154 @@ const methodMetainfo = /* @__PURE__ */ new Map([
107
112
  ["BrowserContext.clockSetFixedTime", { title: 'Set fixed time "{timeNumber|timeString}"' }],
108
113
  ["BrowserContext.clockSetSystemTime", { title: 'Set system time "{timeNumber|timeString}"' }],
109
114
  ["Page.addInitScript", { title: "Add init script", group: "configuration" }],
110
- ["Page.close", { title: "Close page", pausesBeforeAction: true }],
115
+ ["Page.close", { title: "Close page", pause: true }],
116
+ ["Page.clearConsoleMessages", { title: "Clear console messages" }],
111
117
  ["Page.consoleMessages", { title: "Get console messages", group: "getter" }],
112
- ["Page.emulateMedia", { title: "Emulate media", snapshot: true, pausesBeforeAction: true }],
118
+ ["Page.emulateMedia", { title: "Emulate media", snapshot: true, pause: true }],
113
119
  ["Page.exposeBinding", { title: "Expose binding", group: "configuration" }],
114
- ["Page.goBack", { title: "Go back", slowMo: true, snapshot: true, pausesBeforeAction: true }],
115
- ["Page.goForward", { title: "Go forward", slowMo: true, snapshot: true, pausesBeforeAction: true }],
120
+ ["Page.goBack", { title: "Go back", slowMo: true, snapshot: true, pause: true }],
121
+ ["Page.goForward", { title: "Go forward", slowMo: true, snapshot: true, pause: true }],
116
122
  ["Page.requestGC", { title: "Request garbage collection", group: "configuration" }],
117
123
  ["Page.registerLocatorHandler", { title: "Register locator handler" }],
118
124
  ["Page.resolveLocatorHandlerNoReply", { internal: true }],
119
125
  ["Page.unregisterLocatorHandler", { title: "Unregister locator handler" }],
120
- ["Page.reload", { title: "Reload", slowMo: true, snapshot: true, pausesBeforeAction: true }],
121
- ["Page.expectScreenshot", { title: "Expect screenshot", snapshot: true, pausesBeforeAction: true }],
122
- ["Page.screenshot", { title: "Screenshot", snapshot: true, pausesBeforeAction: true }],
126
+ ["Page.reload", { title: "Reload", slowMo: true, snapshot: true, pause: true }],
127
+ ["Page.expectScreenshot", { title: "Expect screenshot", snapshot: true, pause: true }],
128
+ ["Page.screenshot", { title: "Screenshot", snapshot: true, pause: true }],
123
129
  ["Page.setExtraHTTPHeaders", { title: "Set extra HTTP headers", group: "configuration" }],
124
130
  ["Page.setNetworkInterceptionPatterns", { title: "Route requests", group: "route" }],
125
131
  ["Page.setWebSocketInterceptionPatterns", { title: "Route WebSockets", group: "route" }],
126
- ["Page.setViewportSize", { title: "Set viewport size", snapshot: true, pausesBeforeAction: true }],
127
- ["Page.keyboardDown", { title: 'Key down "{key}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
128
- ["Page.keyboardUp", { title: 'Key up "{key}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
129
- ["Page.keyboardInsertText", { title: 'Insert "{text}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
130
- ["Page.keyboardType", { title: 'Type "{text}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
131
- ["Page.keyboardPress", { title: 'Press "{key}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
132
- ["Page.mouseMove", { title: "Mouse move", slowMo: true, snapshot: true, pausesBeforeAction: true }],
133
- ["Page.mouseDown", { title: "Mouse down", slowMo: true, snapshot: true, pausesBeforeAction: true }],
134
- ["Page.mouseUp", { title: "Mouse up", slowMo: true, snapshot: true, pausesBeforeAction: true }],
135
- ["Page.mouseClick", { title: "Click", slowMo: true, snapshot: true, pausesBeforeAction: true }],
136
- ["Page.mouseWheel", { title: "Mouse wheel", slowMo: true, snapshot: true, pausesBeforeAction: true }],
137
- ["Page.touchscreenTap", { title: "Tap", slowMo: true, snapshot: true, pausesBeforeAction: true }],
132
+ ["Page.setViewportSize", { title: "Set viewport size", snapshot: true, pause: true }],
133
+ ["Page.keyboardDown", { title: 'Key down "{key}"', slowMo: true, snapshot: true, pause: true, input: true }],
134
+ ["Page.keyboardUp", { title: 'Key up "{key}"', slowMo: true, snapshot: true, pause: true, input: true }],
135
+ ["Page.keyboardInsertText", { title: 'Insert "{text}"', slowMo: true, snapshot: true, pause: true, input: true }],
136
+ ["Page.keyboardType", { title: 'Type "{text}"', slowMo: true, snapshot: true, pause: true, input: true }],
137
+ ["Page.keyboardPress", { title: 'Press "{key}"', slowMo: true, snapshot: true, pause: true, input: true }],
138
+ ["Page.mouseMove", { title: "Mouse move", slowMo: true, snapshot: true, pause: true, input: true }],
139
+ ["Page.mouseDown", { title: "Mouse down", slowMo: true, snapshot: true, pause: true, input: true }],
140
+ ["Page.mouseUp", { title: "Mouse up", slowMo: true, snapshot: true, pause: true, input: true }],
141
+ ["Page.mouseClick", { title: "Click", slowMo: true, snapshot: true, pause: true, input: true }],
142
+ ["Page.mouseWheel", { title: "Mouse wheel", slowMo: true, snapshot: true, pause: true, input: true }],
143
+ ["Page.touchscreenTap", { title: "Tap", slowMo: true, snapshot: true, pause: true, input: true }],
144
+ ["Page.clearPageErrors", { title: "Clear page errors" }],
138
145
  ["Page.pageErrors", { title: "Get page errors", group: "getter" }],
139
146
  ["Page.pdf", { title: "PDF" }],
140
147
  ["Page.requests", { title: "Get network requests", group: "getter" }],
141
- ["Page.snapshotForAI", { internal: true }],
142
148
  ["Page.startJSCoverage", { title: "Start JS coverage", group: "configuration" }],
143
149
  ["Page.stopJSCoverage", { title: "Stop JS coverage", group: "configuration" }],
144
150
  ["Page.startCSSCoverage", { title: "Start CSS coverage", group: "configuration" }],
145
151
  ["Page.stopCSSCoverage", { title: "Stop CSS coverage", group: "configuration" }],
146
152
  ["Page.bringToFront", { title: "Bring to front" }],
153
+ ["Page.pickLocator", { title: "Pick locator", group: "configuration" }],
154
+ ["Page.cancelPickLocator", { title: "Cancel pick locator", group: "configuration" }],
155
+ ["Page.screencastShowOverlay", { title: "Show overlay", group: "configuration" }],
156
+ ["Page.screencastRemoveOverlay", { title: "Remove overlay", group: "configuration" }],
157
+ ["Page.screencastChapter", { title: "Show chapter overlay", group: "configuration" }],
158
+ ["Page.screencastSetOverlayVisible", { title: "Set overlay visibility", group: "configuration" }],
159
+ ["Page.screencastShowActions", { title: "Show actions", group: "configuration" }],
160
+ ["Page.screencastHideActions", { title: "Remove actions", group: "configuration" }],
161
+ ["Page.screencastStart", { title: "Start screencast", group: "configuration" }],
162
+ ["Page.screencastStop", { title: "Stop screencast", group: "configuration" }],
147
163
  ["Page.updateSubscription", { internal: true }],
148
- ["Page.agent", { internal: true }],
149
- ["Frame.evalOnSelector", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
150
- ["Frame.evalOnSelectorAll", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
151
- ["Frame.addScriptTag", { title: "Add script tag", snapshot: true, pausesBeforeAction: true }],
152
- ["Frame.addStyleTag", { title: "Add style tag", snapshot: true, pausesBeforeAction: true }],
153
- ["Frame.ariaSnapshot", { title: "Aria snapshot", snapshot: true, pausesBeforeAction: true }],
154
- ["Frame.blur", { title: "Blur", slowMo: true, snapshot: true, pausesBeforeAction: true }],
155
- ["Frame.check", { title: "Check", slowMo: true, snapshot: true, pausesBeforeInput: true }],
156
- ["Frame.click", { title: "Click", slowMo: true, snapshot: true, pausesBeforeInput: true }],
157
- ["Frame.content", { title: "Get content", snapshot: true, pausesBeforeAction: true }],
158
- ["Frame.dragAndDrop", { title: "Drag and drop", slowMo: true, snapshot: true, pausesBeforeInput: true }],
159
- ["Frame.dblclick", { title: "Double click", slowMo: true, snapshot: true, pausesBeforeInput: true }],
160
- ["Frame.dispatchEvent", { title: 'Dispatch "{type}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
161
- ["Frame.evaluateExpression", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
162
- ["Frame.evaluateExpressionHandle", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
163
- ["Frame.fill", { title: 'Fill "{value}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
164
- ["Frame.focus", { title: "Focus", slowMo: true, snapshot: true, pausesBeforeAction: true }],
164
+ ["Page.setDockTile", { internal: true }],
165
+ ["Frame.evalOnSelector", { title: "Evaluate", snapshot: true, pause: true }],
166
+ ["Frame.evalOnSelectorAll", { title: "Evaluate", snapshot: true, pause: true }],
167
+ ["Frame.addScriptTag", { title: "Add script tag", snapshot: true, pause: true }],
168
+ ["Frame.addStyleTag", { title: "Add style tag", snapshot: true, pause: true }],
169
+ ["Frame.ariaSnapshot", { title: "Aria snapshot", group: "getter" }],
170
+ ["Frame.blur", { title: "Blur", slowMo: true, snapshot: true, pause: true }],
171
+ ["Frame.check", { title: "Check", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
172
+ ["Frame.click", { title: "Click", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
173
+ ["Frame.content", { title: "Get content", snapshot: true, pause: true }],
174
+ ["Frame.dragAndDrop", { title: "Drag and drop", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
175
+ ["Frame.dblclick", { title: "Double click", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
176
+ ["Frame.dispatchEvent", { title: 'Dispatch "{type}"', slowMo: true, snapshot: true, pause: true }],
177
+ ["Frame.evaluateExpression", { title: "Evaluate", snapshot: true, pause: true }],
178
+ ["Frame.evaluateExpressionHandle", { title: "Evaluate", snapshot: true, pause: true }],
179
+ ["Frame.fill", { title: 'Fill "{value}"', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
180
+ ["Frame.focus", { title: "Focus", slowMo: true, snapshot: true, pause: true }],
165
181
  ["Frame.frameElement", { title: "Get frame element", group: "getter" }],
166
182
  ["Frame.resolveSelector", { internal: true }],
167
183
  ["Frame.highlight", { title: "Highlight element", group: "configuration" }],
168
- ["Frame.getAttribute", { title: 'Get attribute "{name}"', snapshot: true, pausesBeforeAction: true, group: "getter" }],
169
- ["Frame.goto", { title: 'Navigate to "{url}"', slowMo: true, snapshot: true, pausesBeforeAction: true }],
170
- ["Frame.hover", { title: "Hover", slowMo: true, snapshot: true, pausesBeforeInput: true }],
171
- ["Frame.innerHTML", { title: "Get HTML", snapshot: true, pausesBeforeAction: true, group: "getter" }],
172
- ["Frame.innerText", { title: "Get inner text", snapshot: true, pausesBeforeAction: true, group: "getter" }],
173
- ["Frame.inputValue", { title: "Get input value", snapshot: true, pausesBeforeAction: true, group: "getter" }],
174
- ["Frame.isChecked", { title: "Is checked", snapshot: true, pausesBeforeAction: true, group: "getter" }],
175
- ["Frame.isDisabled", { title: "Is disabled", snapshot: true, pausesBeforeAction: true, group: "getter" }],
176
- ["Frame.isEnabled", { title: "Is enabled", snapshot: true, pausesBeforeAction: true, group: "getter" }],
177
- ["Frame.isHidden", { title: "Is hidden", snapshot: true, pausesBeforeAction: true, group: "getter" }],
178
- ["Frame.isVisible", { title: "Is visible", snapshot: true, pausesBeforeAction: true, group: "getter" }],
179
- ["Frame.isEditable", { title: "Is editable", snapshot: true, pausesBeforeAction: true, group: "getter" }],
180
- ["Frame.press", { title: 'Press "{key}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
184
+ ["Frame.getAttribute", { title: 'Get attribute "{name}"', snapshot: true, pause: true, group: "getter" }],
185
+ ["Frame.goto", { title: 'Navigate to "{url}"', slowMo: true, snapshot: true, pause: true }],
186
+ ["Frame.hover", { title: "Hover", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
187
+ ["Frame.innerHTML", { title: "Get HTML", snapshot: true, pause: true, group: "getter" }],
188
+ ["Frame.innerText", { title: "Get inner text", snapshot: true, pause: true, group: "getter" }],
189
+ ["Frame.inputValue", { title: "Get input value", snapshot: true, pause: true, group: "getter" }],
190
+ ["Frame.isChecked", { title: "Is checked", snapshot: true, pause: true, group: "getter" }],
191
+ ["Frame.isDisabled", { title: "Is disabled", snapshot: true, pause: true, group: "getter" }],
192
+ ["Frame.isEnabled", { title: "Is enabled", snapshot: true, pause: true, group: "getter" }],
193
+ ["Frame.isHidden", { title: "Is hidden", snapshot: true, pause: true, group: "getter" }],
194
+ ["Frame.isVisible", { title: "Is visible", snapshot: true, pause: true, group: "getter" }],
195
+ ["Frame.isEditable", { title: "Is editable", snapshot: true, pause: true, group: "getter" }],
196
+ ["Frame.press", { title: 'Press "{key}"', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
181
197
  ["Frame.querySelector", { title: "Query selector", snapshot: true }],
182
198
  ["Frame.querySelectorAll", { title: "Query selector all", snapshot: true }],
183
- ["Frame.queryCount", { title: "Query count", snapshot: true, pausesBeforeAction: true }],
184
- ["Frame.selectOption", { title: "Select option", slowMo: true, snapshot: true, pausesBeforeInput: true }],
185
- ["Frame.setContent", { title: "Set content", snapshot: true, pausesBeforeAction: true }],
186
- ["Frame.setInputFiles", { title: "Set input files", slowMo: true, snapshot: true, pausesBeforeInput: true }],
187
- ["Frame.tap", { title: "Tap", slowMo: true, snapshot: true, pausesBeforeInput: true }],
188
- ["Frame.textContent", { title: "Get text content", snapshot: true, pausesBeforeAction: true, group: "getter" }],
199
+ ["Frame.queryCount", { title: "Query count", snapshot: true, pause: true }],
200
+ ["Frame.selectOption", { title: "Select option", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
201
+ ["Frame.setContent", { title: "Set content", snapshot: true, pause: true }],
202
+ ["Frame.setInputFiles", { title: "Set input files", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
203
+ ["Frame.tap", { title: "Tap", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
204
+ ["Frame.textContent", { title: "Get text content", snapshot: true, pause: true, group: "getter" }],
189
205
  ["Frame.title", { title: "Get page title", group: "getter" }],
190
- ["Frame.type", { title: 'Type "{text}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
191
- ["Frame.uncheck", { title: "Uncheck", slowMo: true, snapshot: true, pausesBeforeInput: true }],
206
+ ["Frame.type", { title: 'Type "{text}"', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
207
+ ["Frame.uncheck", { title: "Uncheck", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
192
208
  ["Frame.waitForTimeout", { title: "Wait for timeout", snapshot: true }],
193
- ["Frame.waitForFunction", { title: "Wait for function", snapshot: true, pausesBeforeAction: true }],
209
+ ["Frame.waitForFunction", { title: "Wait for function", snapshot: true, pause: true }],
194
210
  ["Frame.waitForSelector", { title: "Wait for selector", snapshot: true }],
195
- ["Frame.expect", { title: 'Expect "{expression}"', snapshot: true, pausesBeforeAction: true }],
211
+ ["Frame.expect", { title: 'Expect "{expression}"', snapshot: true, pause: true }],
196
212
  ["Worker.evaluateExpression", { title: "Evaluate" }],
197
213
  ["Worker.evaluateExpressionHandle", { title: "Evaluate" }],
198
214
  ["Worker.updateSubscription", { internal: true }],
215
+ ["Disposable.dispose", { internal: true }],
199
216
  ["JSHandle.dispose", { internal: true }],
200
217
  ["ElementHandle.dispose", { internal: true }],
201
- ["JSHandle.evaluateExpression", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
202
- ["ElementHandle.evaluateExpression", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
203
- ["JSHandle.evaluateExpressionHandle", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
204
- ["ElementHandle.evaluateExpressionHandle", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
218
+ ["JSHandle.evaluateExpression", { title: "Evaluate", snapshot: true, pause: true }],
219
+ ["ElementHandle.evaluateExpression", { title: "Evaluate", snapshot: true, pause: true }],
220
+ ["JSHandle.evaluateExpressionHandle", { title: "Evaluate", snapshot: true, pause: true }],
221
+ ["ElementHandle.evaluateExpressionHandle", { title: "Evaluate", snapshot: true, pause: true }],
205
222
  ["JSHandle.getPropertyList", { title: "Get property list", group: "getter" }],
206
223
  ["ElementHandle.getPropertyList", { title: "Get property list", group: "getter" }],
207
224
  ["JSHandle.getProperty", { title: "Get JS property", group: "getter" }],
208
225
  ["ElementHandle.getProperty", { title: "Get JS property", group: "getter" }],
209
226
  ["JSHandle.jsonValue", { title: "Get JSON value", group: "getter" }],
210
227
  ["ElementHandle.jsonValue", { title: "Get JSON value", group: "getter" }],
211
- ["ElementHandle.evalOnSelector", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
212
- ["ElementHandle.evalOnSelectorAll", { title: "Evaluate", snapshot: true, pausesBeforeAction: true }],
213
- ["ElementHandle.boundingBox", { title: "Get bounding box", snapshot: true, pausesBeforeAction: true }],
214
- ["ElementHandle.check", { title: "Check", slowMo: true, snapshot: true, pausesBeforeInput: true }],
215
- ["ElementHandle.click", { title: "Click", slowMo: true, snapshot: true, pausesBeforeInput: true }],
228
+ ["ElementHandle.evalOnSelector", { title: "Evaluate", snapshot: true, pause: true }],
229
+ ["ElementHandle.evalOnSelectorAll", { title: "Evaluate", snapshot: true, pause: true }],
230
+ ["ElementHandle.boundingBox", { title: "Get bounding box", snapshot: true, pause: true }],
231
+ ["ElementHandle.check", { title: "Check", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
232
+ ["ElementHandle.click", { title: "Click", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
216
233
  ["ElementHandle.contentFrame", { title: "Get content frame", group: "getter" }],
217
- ["ElementHandle.dblclick", { title: "Double click", slowMo: true, snapshot: true, pausesBeforeInput: true }],
218
- ["ElementHandle.dispatchEvent", { title: "Dispatch event", slowMo: true, snapshot: true, pausesBeforeAction: true }],
219
- ["ElementHandle.fill", { title: 'Fill "{value}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
220
- ["ElementHandle.focus", { title: "Focus", slowMo: true, snapshot: true, pausesBeforeAction: true }],
221
- ["ElementHandle.getAttribute", { title: "Get attribute", snapshot: true, pausesBeforeAction: true, group: "getter" }],
222
- ["ElementHandle.hover", { title: "Hover", slowMo: true, snapshot: true, pausesBeforeInput: true }],
223
- ["ElementHandle.innerHTML", { title: "Get HTML", snapshot: true, pausesBeforeAction: true, group: "getter" }],
224
- ["ElementHandle.innerText", { title: "Get inner text", snapshot: true, pausesBeforeAction: true, group: "getter" }],
225
- ["ElementHandle.inputValue", { title: "Get input value", snapshot: true, pausesBeforeAction: true, group: "getter" }],
226
- ["ElementHandle.isChecked", { title: "Is checked", snapshot: true, pausesBeforeAction: true, group: "getter" }],
227
- ["ElementHandle.isDisabled", { title: "Is disabled", snapshot: true, pausesBeforeAction: true, group: "getter" }],
228
- ["ElementHandle.isEditable", { title: "Is editable", snapshot: true, pausesBeforeAction: true, group: "getter" }],
229
- ["ElementHandle.isEnabled", { title: "Is enabled", snapshot: true, pausesBeforeAction: true, group: "getter" }],
230
- ["ElementHandle.isHidden", { title: "Is hidden", snapshot: true, pausesBeforeAction: true, group: "getter" }],
231
- ["ElementHandle.isVisible", { title: "Is visible", snapshot: true, pausesBeforeAction: true, group: "getter" }],
234
+ ["ElementHandle.dblclick", { title: "Double click", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
235
+ ["ElementHandle.dispatchEvent", { title: "Dispatch event", slowMo: true, snapshot: true, pause: true }],
236
+ ["ElementHandle.fill", { title: 'Fill "{value}"', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
237
+ ["ElementHandle.focus", { title: "Focus", slowMo: true, snapshot: true, pause: true }],
238
+ ["ElementHandle.getAttribute", { title: "Get attribute", snapshot: true, pause: true, group: "getter" }],
239
+ ["ElementHandle.hover", { title: "Hover", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
240
+ ["ElementHandle.innerHTML", { title: "Get HTML", snapshot: true, pause: true, group: "getter" }],
241
+ ["ElementHandle.innerText", { title: "Get inner text", snapshot: true, pause: true, group: "getter" }],
242
+ ["ElementHandle.inputValue", { title: "Get input value", snapshot: true, pause: true, group: "getter" }],
243
+ ["ElementHandle.isChecked", { title: "Is checked", snapshot: true, pause: true, group: "getter" }],
244
+ ["ElementHandle.isDisabled", { title: "Is disabled", snapshot: true, pause: true, group: "getter" }],
245
+ ["ElementHandle.isEditable", { title: "Is editable", snapshot: true, pause: true, group: "getter" }],
246
+ ["ElementHandle.isEnabled", { title: "Is enabled", snapshot: true, pause: true, group: "getter" }],
247
+ ["ElementHandle.isHidden", { title: "Is hidden", snapshot: true, pause: true, group: "getter" }],
248
+ ["ElementHandle.isVisible", { title: "Is visible", snapshot: true, pause: true, group: "getter" }],
232
249
  ["ElementHandle.ownerFrame", { title: "Get owner frame", group: "getter" }],
233
- ["ElementHandle.press", { title: 'Press "{key}"', slowMo: true, snapshot: true, pausesBeforeInput: true }],
250
+ ["ElementHandle.press", { title: 'Press "{key}"', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
234
251
  ["ElementHandle.querySelector", { title: "Query selector", snapshot: true }],
235
252
  ["ElementHandle.querySelectorAll", { title: "Query selector all", snapshot: true }],
236
- ["ElementHandle.screenshot", { title: "Screenshot", snapshot: true, pausesBeforeAction: true }],
237
- ["ElementHandle.scrollIntoViewIfNeeded", { title: "Scroll into view", slowMo: true, snapshot: true, pausesBeforeAction: true }],
238
- ["ElementHandle.selectOption", { title: "Select option", slowMo: true, snapshot: true, pausesBeforeInput: true }],
239
- ["ElementHandle.selectText", { title: "Select text", slowMo: true, snapshot: true, pausesBeforeAction: true }],
240
- ["ElementHandle.setInputFiles", { title: "Set input files", slowMo: true, snapshot: true, pausesBeforeInput: true }],
241
- ["ElementHandle.tap", { title: "Tap", slowMo: true, snapshot: true, pausesBeforeInput: true }],
242
- ["ElementHandle.textContent", { title: "Get text content", snapshot: true, pausesBeforeAction: true, group: "getter" }],
243
- ["ElementHandle.type", { title: "Type", slowMo: true, snapshot: true, pausesBeforeInput: true }],
244
- ["ElementHandle.uncheck", { title: "Uncheck", slowMo: true, snapshot: true, pausesBeforeInput: true }],
245
- ["ElementHandle.waitForElementState", { title: "Wait for state", snapshot: true, pausesBeforeAction: true }],
253
+ ["ElementHandle.screenshot", { title: "Screenshot", snapshot: true, pause: true }],
254
+ ["ElementHandle.scrollIntoViewIfNeeded", { title: "Scroll into view", slowMo: true, snapshot: true, pause: true }],
255
+ ["ElementHandle.selectOption", { title: "Select option", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
256
+ ["ElementHandle.selectText", { title: "Select text", slowMo: true, snapshot: true, pause: true }],
257
+ ["ElementHandle.setInputFiles", { title: "Set input files", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
258
+ ["ElementHandle.tap", { title: "Tap", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
259
+ ["ElementHandle.textContent", { title: "Get text content", snapshot: true, pause: true, group: "getter" }],
260
+ ["ElementHandle.type", { title: "Type", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
261
+ ["ElementHandle.uncheck", { title: "Uncheck", slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true }],
262
+ ["ElementHandle.waitForElementState", { title: "Wait for state", snapshot: true, pause: true }],
246
263
  ["ElementHandle.waitForSelector", { title: "Wait for selector", snapshot: true }],
247
264
  ["Request.response", { internal: true }],
248
265
  ["Request.rawRequestHeaders", { internal: true }],
@@ -260,9 +277,14 @@ const methodMetainfo = /* @__PURE__ */ new Map([
260
277
  ["Response.securityDetails", { internal: true }],
261
278
  ["Response.serverAddr", { internal: true }],
262
279
  ["Response.rawResponseHeaders", { internal: true }],
280
+ ["Response.httpVersion", { internal: true }],
263
281
  ["Response.sizes", { internal: true }],
264
282
  ["BindingCall.reject", { internal: true }],
265
283
  ["BindingCall.resolve", { internal: true }],
284
+ ["Debugger.requestPause", { title: "Pause on next call", group: "configuration" }],
285
+ ["Debugger.resume", { title: "Resume", group: "configuration" }],
286
+ ["Debugger.next", { title: "Step to next call", group: "configuration" }],
287
+ ["Debugger.runTo", { title: "Run to location", group: "configuration" }],
266
288
  ["Dialog.accept", { title: "Accept dialog" }],
267
289
  ["Dialog.dismiss", { title: "Dismiss dialog" }],
268
290
  ["Tracing.tracingStart", { title: "Start tracing", group: "configuration" }],
@@ -317,14 +339,13 @@ const methodMetainfo = /* @__PURE__ */ new Map([
317
339
  ["AndroidDevice.connectToWebView", { title: "Connect to Web View" }],
318
340
  ["AndroidDevice.close", { internal: true }],
319
341
  ["JsonPipe.send", { internal: true }],
320
- ["JsonPipe.close", { internal: true }],
321
- ["PageAgent.perform", { title: 'Perform "{task}"' }],
322
- ["PageAgent.expect", { title: 'Expect "{expectation}"' }],
323
- ["PageAgent.extract", { title: 'Extract "{query}"' }],
324
- ["PageAgent.dispose", { internal: true }],
325
- ["PageAgent.usage", { title: "Get agent usage", group: "configuration" }]
342
+ ["JsonPipe.close", { internal: true }]
326
343
  ]);
344
+ function getMetainfo(metadata) {
345
+ return methodMetainfo.get(metadata.type + "." + metadata.method);
346
+ }
327
347
  // Annotate the CommonJS export names for ESM import in node:
328
348
  0 && (module.exports = {
349
+ getMetainfo,
329
350
  methodMetainfo
330
351
  });
@@ -71,7 +71,7 @@ function formatObject(value, indent = " ", mode = "multiline") {
71
71
  if (Array.isArray(value))
72
72
  return `[${value.map((o) => formatObject(o)).join(", ")}]`;
73
73
  if (typeof value === "object") {
74
- const keys = Object.keys(value).filter((key) => value[key] !== void 0).sort();
74
+ const keys = Object.keys(value).filter((key) => key !== "timeout" && value[key] !== void 0).sort();
75
75
  if (!keys.length)
76
76
  return "{}";
77
77
  const tokens = [];
@@ -79,8 +79,8 @@ function formatObject(value, indent = " ", mode = "multiline") {
79
79
  tokens.push(`${key}: ${formatObject(value[key])}`);
80
80
  if (mode === "multiline")
81
81
  return `{
82
- ${tokens.join(`,
83
- ${indent}`)}
82
+ ${tokens.map((t) => indent + t).join(`,
83
+ `)}
84
84
  }`;
85
85
  return `{ ${tokens.join(", ")} }`;
86
86
  }
@@ -30,9 +30,9 @@ async function raceAgainstDeadline(cb, deadline) {
30
30
  return { result, timedOut: false };
31
31
  }),
32
32
  new Promise((resolve) => {
33
- const kMaxDeadline = 2147483647;
34
- const timeout = (deadline || kMaxDeadline) - (0, import_time.monotonicTime)();
35
- timer = setTimeout(() => resolve({ timedOut: true }), timeout);
33
+ if (!deadline)
34
+ return;
35
+ timer = setTimeout(() => resolve({ timedOut: true }), deadline - (0, import_time.monotonicTime)());
36
36
  })
37
37
  ]).finally(() => {
38
38
  clearTimeout(timer);
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var snapshotRenderer_exports = {};
20
20
  __export(snapshotRenderer_exports, {
21
21
  SnapshotRenderer: () => SnapshotRenderer,
22
+ blankSnapshotUrl: () => blankSnapshotUrl,
22
23
  rewriteURLForCustomProtocol: () => rewriteURLForCustomProtocol
23
24
  });
24
25
  module.exports = __toCommonJS(snapshotRenderer_exports);
@@ -188,7 +189,7 @@ function snapshotNodes(snapshot) {
188
189
  return snapshot._nodes;
189
190
  }
190
191
  function snapshotScript(viewport, ...targetIds) {
191
- function applyPlaywrightAttributes(viewport2, ...targetIds2) {
192
+ function applyPlaywrightAttributes(blankSnapshotUrl2, viewport2, ...targetIds2) {
192
193
  const win = window;
193
194
  const searchParams = new URLSearchParams(win.location.search);
194
195
  const shouldPopulateCanvasFromScreenshot = searchParams.has("shouldPopulateCanvasFromScreenshot");
@@ -198,7 +199,7 @@ function snapshotScript(viewport, ...targetIds) {
198
199
  frames: /* @__PURE__ */ new WeakMap()
199
200
  };
200
201
  win["__playwright_frame_bounding_rects__"] = frameBoundingRectsInfo;
201
- const kPointerWarningTitle = "Recorded click position in absolute coordinates did not match the center of the clicked element. This is likely due to a difference between the test runner and the trace viewer operating systems.";
202
+ const kPointerWarningTitle = "Recorded click position in absolute coordinates did not match the center of the clicked element. This is either due to the use of provided offset, or due to a difference between the test runner and the trace viewer operating systems.";
202
203
  const scrollTops = [];
203
204
  const scrollLefts = [];
204
205
  const targetElements = [];
@@ -258,7 +259,7 @@ function snapshotScript(viewport, ...targetIds) {
258
259
  frameBoundingRectsInfo.frames.set(iframe, { boundingRect, scrollLeft: 0, scrollTop: 0 });
259
260
  const src = iframe.getAttribute("__playwright_src__");
260
261
  if (!src) {
261
- iframe.setAttribute("src", 'data:text/html,<body style="background: #ddd"></body>');
262
+ iframe.setAttribute("src", blankSnapshotUrl2);
262
263
  } else {
263
264
  const url = new URL(win.location.href);
264
265
  const index = url.pathname.lastIndexOf("/snapshot/");
@@ -317,47 +318,37 @@ function snapshotScript(viewport, ...targetIds) {
317
318
  win.document.styleSheets[0].disabled = true;
318
319
  const search = new URL(win.location.href).searchParams;
319
320
  const isTopFrame = win === topSnapshotWindow;
320
- if (search.get("pointX") && search.get("pointY")) {
321
+ if (isTopFrame && search.get("pointX") && search.get("pointY")) {
321
322
  const pointX = +search.get("pointX");
322
323
  const pointY = +search.get("pointY");
323
- const hasInputTarget = search.has("hasInputTarget");
324
- const hasTargetElements = targetElements.length > 0;
325
- const roots = win.document.documentElement ? [win.document.documentElement] : [];
326
- for (const target of hasTargetElements ? targetElements : roots) {
327
- const pointElement = win.document.createElement("x-pw-pointer");
328
- pointElement.style.position = "fixed";
329
- pointElement.style.backgroundColor = "#f44336";
330
- pointElement.style.width = "20px";
331
- pointElement.style.height = "20px";
332
- pointElement.style.borderRadius = "10px";
333
- pointElement.style.margin = "-10px 0 0 -10px";
334
- pointElement.style.zIndex = "2147483646";
335
- pointElement.style.display = "flex";
336
- pointElement.style.alignItems = "center";
337
- pointElement.style.justifyContent = "center";
338
- if (hasTargetElements) {
339
- const box = target.getBoundingClientRect();
340
- const centerX = box.left + box.width / 2;
341
- const centerY = box.top + box.height / 2;
342
- pointElement.style.left = centerX + "px";
343
- pointElement.style.top = centerY + "px";
344
- if (isTopFrame && (Math.abs(centerX - pointX) >= 10 || Math.abs(centerY - pointY) >= 10)) {
345
- const warningElement = win.document.createElement("x-pw-pointer-warning");
346
- warningElement.textContent = "\u26A0";
347
- warningElement.style.fontSize = "19px";
348
- warningElement.style.color = "white";
349
- warningElement.style.marginTop = "-3.5px";
350
- warningElement.style.userSelect = "none";
351
- pointElement.appendChild(warningElement);
352
- pointElement.setAttribute("title", kPointerWarningTitle);
353
- }
354
- win.document.documentElement.appendChild(pointElement);
355
- } else if (isTopFrame && !hasInputTarget) {
356
- pointElement.style.left = pointX + "px";
357
- pointElement.style.top = pointY + "px";
358
- win.document.documentElement.appendChild(pointElement);
359
- }
324
+ const pointElement = win.document.createElement("x-pw-pointer");
325
+ pointElement.style.position = "fixed";
326
+ pointElement.style.backgroundColor = "#f44336";
327
+ pointElement.style.width = "20px";
328
+ pointElement.style.height = "20px";
329
+ pointElement.style.borderRadius = "10px";
330
+ pointElement.style.margin = "-10px 0 0 -10px";
331
+ pointElement.style.zIndex = "2147483646";
332
+ pointElement.style.display = "flex";
333
+ pointElement.style.alignItems = "center";
334
+ pointElement.style.justifyContent = "center";
335
+ const target = targetElements[0];
336
+ const targetBox = target?.getBoundingClientRect();
337
+ const targetCenter = target ? { x: targetBox.left + targetBox.width / 2, y: targetBox.top + targetBox.height / 2 } : null;
338
+ pointElement.style.left = (targetCenter?.x ?? pointX) + "px";
339
+ pointElement.style.top = (targetCenter?.y ?? pointY) + "px";
340
+ const isAligned = !targetCenter || Math.abs(targetCenter.x - pointX) <= 10 && Math.abs(targetCenter.y - pointY) <= 10;
341
+ if (!isAligned) {
342
+ const warningElement = win.document.createElement("x-pw-pointer-warning");
343
+ warningElement.textContent = "\u26A0";
344
+ warningElement.style.fontSize = "19px";
345
+ warningElement.style.color = "white";
346
+ warningElement.style.marginTop = "-3.5px";
347
+ warningElement.style.userSelect = "none";
348
+ pointElement.appendChild(warningElement);
349
+ pointElement.setAttribute("title", kPointerWarningTitle);
360
350
  }
351
+ win.document.documentElement.appendChild(pointElement);
361
352
  }
362
353
  if (canvasElements.length > 0) {
363
354
  let drawCheckerboard2 = function(context, canvas) {
@@ -445,7 +436,7 @@ function snapshotScript(viewport, ...targetIds) {
445
436
  win.addEventListener("DOMContentLoaded", onDOMContentLoaded);
446
437
  }
447
438
  return `
448
- (${applyPlaywrightAttributes.toString()})(${JSON.stringify(viewport)}${targetIds.map((id) => `, "${id}"`).join("")})`;
439
+ (${applyPlaywrightAttributes.toString()})(${JSON.stringify(blankSnapshotUrl)},${JSON.stringify(viewport)}${targetIds.map((id) => `, "${id}"`).join("")})`;
449
440
  }
450
441
  const schemas = ["about:", "blob:", "data:", "file:", "ftp:", "http:", "https:", "mailto:", "sftp:", "ws:", "wss:"];
451
442
  const kLegacyBlobPrefix = "http://playwright.bloburl/#";
@@ -492,8 +483,10 @@ function escapeURLsInStyleSheet(text) {
492
483
  };
493
484
  return text.replace(urlToEscapeRegex1, replacer).replace(urlToEscapeRegex2, replacer);
494
485
  }
486
+ const blankSnapshotUrl = "data:text/html;base64," + btoa(`<body></body><style>body { color-scheme: light dark; background: light-dark(white, #333) }</style>`);
495
487
  // Annotate the CommonJS export names for ESM import in node:
496
488
  0 && (module.exports = {
497
489
  SnapshotRenderer,
490
+ blankSnapshotUrl,
498
491
  rewriteURLForCustomProtocol
499
492
  });
@@ -21,7 +21,7 @@ __export(traceLoader_exports, {
21
21
  TraceLoader: () => TraceLoader
22
22
  });
23
23
  module.exports = __toCommonJS(traceLoader_exports);
24
- var import_traceUtils = require("@isomorphic/traceUtils");
24
+ var import_traceUtils = require("./traceUtils");
25
25
  var import_snapshotStorage = require("./snapshotStorage");
26
26
  var import_traceModernizer = require("./traceModernizer");
27
27
  class TraceLoader {
@@ -29,32 +29,33 @@ class TraceLoader {
29
29
  this.contextEntries = [];
30
30
  this._resourceToContentType = /* @__PURE__ */ new Map();
31
31
  }
32
- async load(backend, unzipProgress) {
32
+ async load(backend, traceFile, unzipProgress) {
33
33
  this._backend = backend;
34
- const ordinals = [];
34
+ const prefix = traceFile?.match(/(.+)\.trace$/)?.[1];
35
+ const prefixes = [];
35
36
  let hasSource = false;
36
37
  for (const entryName of await this._backend.entryNames()) {
37
38
  const match = entryName.match(/(.+)\.trace$/);
38
- if (match)
39
- ordinals.push(match[1] || "");
39
+ if (match && (!prefix || prefix === match[1]))
40
+ prefixes.push(match[1] || "");
40
41
  if (entryName.includes("src@"))
41
42
  hasSource = true;
42
43
  }
43
- if (!ordinals.length)
44
+ if (!prefixes.length)
44
45
  throw new Error("Cannot find .trace file");
45
46
  this._snapshotStorage = new import_snapshotStorage.SnapshotStorage();
46
- const total = ordinals.length * 3;
47
+ const total = prefixes.length * 3;
47
48
  let done = 0;
48
- for (const ordinal of ordinals) {
49
+ for (const prefix2 of prefixes) {
49
50
  const contextEntry = createEmptyContext();
50
51
  contextEntry.hasSource = hasSource;
51
52
  const modernizer = new import_traceModernizer.TraceModernizer(contextEntry, this._snapshotStorage);
52
- const trace = await this._backend.readText(ordinal + ".trace") || "";
53
+ const trace = await this._backend.readText(prefix2 + ".trace") || "";
53
54
  modernizer.appendTrace(trace);
54
- unzipProgress(++done, total);
55
- const network = await this._backend.readText(ordinal + ".network") || "";
55
+ unzipProgress?.(++done, total);
56
+ const network = await this._backend.readText(prefix2 + ".network") || "";
56
57
  modernizer.appendTrace(network);
57
- unzipProgress(++done, total);
58
+ unzipProgress?.(++done, total);
58
59
  contextEntry.actions = modernizer.actions().sort((a1, a2) => a1.startTime - a2.startTime);
59
60
  if (!backend.isLive()) {
60
61
  for (const action of contextEntry.actions.slice().reverse()) {
@@ -66,13 +67,13 @@ class TraceLoader {
66
67
  }
67
68
  }
68
69
  }
69
- const stacks = await this._backend.readText(ordinal + ".stacks");
70
+ const stacks = await this._backend.readText(prefix2 + ".stacks");
70
71
  if (stacks) {
71
72
  const callMetadata = (0, import_traceUtils.parseClientSideCallMetadata)(JSON.parse(stacks));
72
73
  for (const action of contextEntry.actions)
73
74
  action.stack = action.stack || callMetadata.get(action.callId);
74
75
  }
75
- unzipProgress(++done, total);
76
+ unzipProgress?.(++done, total);
76
77
  for (const resource of contextEntry.resources) {
77
78
  if (resource.request.postData?._sha1)
78
79
  this._resourceToContentType.set(resource.request.postData._sha1, stripEncodingFromContentType(resource.request.postData.mimeType));