chrome-devtools-frontend 1.0.1650232 → 1.0.1651641

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 (282) hide show
  1. package/.agents/skills/version-control/SKILL.md +5 -1
  2. package/config/typescript/tsconfig.base.json +1 -0
  3. package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
  4. package/front_end/core/host/UserMetrics.ts +0 -11
  5. package/front_end/core/sdk/CSSMatchedStyles.ts +20 -4
  6. package/front_end/devtools_compatibility.js +1 -2
  7. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +94 -0
  8. package/front_end/foundation/Universe.ts +7 -0
  9. package/front_end/generated/InspectorBackendCommands.ts +4 -1
  10. package/front_end/generated/SupportedCSSProperties.js +284 -0
  11. package/front_end/generated/protocol-mapping.d.ts +7 -0
  12. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  13. package/front_end/generated/protocol.ts +60 -0
  14. package/front_end/models/ai_assistance/AiAgent2.ts +11 -1
  15. package/front_end/models/ai_assistance/README.md +4 -0
  16. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -0
  17. package/front_end/models/ai_assistance/agents/AiAgent.ts +3 -0
  18. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +2 -0
  19. package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
  20. package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
  21. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +2 -0
  22. package/front_end/models/ai_assistance/skills/accessibility.md +13 -0
  23. package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +54 -0
  24. package/front_end/models/ai_assistance/tools/ResolveLighthousePath.ts +124 -0
  25. package/front_end/models/ai_assistance/tools/Tool.ts +12 -2
  26. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +4 -0
  27. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +14 -0
  28. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +4 -0
  29. package/front_end/models/javascript_metadata/NativeFunctions.js +4 -0
  30. package/front_end/models/persistence/NetworkPersistenceManager.ts +9 -1
  31. package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -11
  32. package/front_end/panels/common/ExtensionServer.ts +70 -50
  33. package/front_end/panels/elements/CSSSpecificityBreakdown.ts +106 -0
  34. package/front_end/panels/elements/ElementsPanel.ts +1 -1
  35. package/front_end/panels/elements/StylePropertiesSection.ts +40 -13
  36. package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -5
  37. package/front_end/panels/elements/components/CSSQuery.ts +119 -4
  38. package/front_end/panels/elements/elements.ts +3 -0
  39. package/front_end/panels/elements/stylesSidebarPane.css +34 -0
  40. package/front_end/panels/js_timeline/js_timeline-meta.ts +1 -2
  41. package/front_end/panels/layer_viewer/PaintProfilerView.ts +0 -3
  42. package/front_end/panels/network/RequestHeadersView.ts +2 -2
  43. package/front_end/panels/network/components/RequestHeadersView.css +1 -0
  44. package/front_end/panels/network/components/ResponseHeaderSection.css +5 -1
  45. package/front_end/panels/recorder/testing/RecorderHelpers.ts +2 -0
  46. package/front_end/panels/timeline/timeline-meta.ts +1 -1
  47. package/front_end/third_party/chromium/README.chromium +1 -1
  48. package/front_end/third_party/puppeteer/README.chromium +2 -2
  49. package/front_end/third_party/puppeteer/package/README.md +14 -0
  50. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +60 -24
  51. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +271 -164
  52. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +2 -6
  53. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts.map +1 -1
  54. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js +2 -2
  55. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js.map +1 -1
  56. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +2 -2
  57. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js.map +1 -1
  58. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +11 -7
  59. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js.map +1 -1
  60. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.d.ts.map +1 -1
  61. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js +3 -10
  62. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +9 -4
  64. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +4 -4
  66. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.d.ts +13 -0
  68. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.d.ts.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.js +14 -0
  70. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.js.map +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js +5 -5
  72. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js +2 -2
  74. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js +3 -3
  76. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js.map +1 -1
  77. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserConnector.js +5 -3
  78. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserConnector.js.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js +6 -6
  80. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js.map +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts.map +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js +3 -3
  84. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js.map +1 -1
  85. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Deserializer.js +2 -2
  86. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Deserializer.js.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js +6 -6
  88. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js.map +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js +1 -1
  90. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js.map +1 -1
  91. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +1 -0
  92. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +3 -0
  94. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js +1 -1
  96. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  98. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js +11 -0
  100. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  101. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js +4 -4
  103. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Binding.js +3 -3
  105. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Binding.js.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
  107. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +13 -2
  108. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/BrowserConnector.js +2 -2
  110. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/BrowserConnector.js.map +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js +2 -2
  112. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js.map +1 -1
  113. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Coverage.js +2 -2
  114. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Coverage.js.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ElementHandle.js +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ElementHandle.js.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts +1 -0
  118. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js +25 -4
  120. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ExecutionContext.js +3 -3
  122. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ExecutionContext.js.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.d.ts.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.js +9 -11
  125. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.js.map +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +3 -3
  127. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  129. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.js +7 -7
  130. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.js.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/JSHandle.js +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/JSHandle.js.map +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts +3 -1
  136. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
  137. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js +18 -10
  138. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js.map +1 -1
  139. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +1 -0
  140. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +17 -11
  142. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js +3 -3
  144. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  146. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +28 -10
  147. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +10 -6
  150. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts +3 -0
  152. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js +20 -5
  154. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js.map +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +11 -0
  157. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +2 -2
  159. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CallbackRegistry.js +2 -2
  161. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CallbackRegistry.js.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Configuration.d.ts +4 -2
  163. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Configuration.d.ts.map +1 -1
  164. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +26 -13
  165. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +1 -6
  167. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
  168. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +24 -33
  169. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js +2 -2
  171. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +8 -1
  173. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js +8 -1
  175. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.d.ts +2 -0
  177. package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.d.ts.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.js +4 -2
  179. package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.js.map +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  184. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.d.ts.map +1 -1
  185. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.js +15 -5
  186. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.js.map +1 -1
  187. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts +5 -1
  188. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  189. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +17 -16
  190. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  192. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js +14 -9
  193. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js.map +1 -1
  194. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/FirefoxLauncher.js +2 -2
  195. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/FirefoxLauncher.js.map +1 -1
  196. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +2 -2
  197. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PipeTransport.js +3 -3
  199. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PipeTransport.js.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts +20 -0
  201. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js +38 -9
  203. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js.map +1 -1
  204. package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.d.ts +7 -0
  205. package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.d.ts.map +1 -0
  206. package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.js +16 -0
  207. package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.js.map +1 -0
  208. package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.d.ts +1 -0
  209. package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.d.ts.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.js +3 -8
  211. package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.js.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  213. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  214. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
  215. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/types.d.ts +60 -24
  218. package/front_end/third_party/puppeteer/package/package.json +4 -4
  219. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +4 -8
  220. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +2 -2
  221. package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +10 -10
  222. package/front_end/third_party/puppeteer/package/src/api/JSHandle.ts +3 -10
  223. package/front_end/third_party/puppeteer/package/src/api/Page.ts +14 -8
  224. package/front_end/third_party/puppeteer/package/src/api/WebWorker.ts +30 -0
  225. package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +5 -5
  226. package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +2 -2
  227. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +3 -3
  228. package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +5 -3
  229. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +6 -6
  230. package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +4 -4
  231. package/front_end/third_party/puppeteer/package/src/bidi/Deserializer.ts +2 -2
  232. package/front_end/third_party/puppeteer/package/src/bidi/ExposedFunction.ts +6 -6
  233. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -1
  234. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +4 -0
  235. package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +1 -1
  236. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +11 -0
  237. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +6 -4
  238. package/front_end/third_party/puppeteer/package/src/cdp/Binding.ts +3 -3
  239. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +14 -2
  240. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -2
  241. package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +2 -2
  242. package/front_end/third_party/puppeteer/package/src/cdp/Coverage.ts +2 -2
  243. package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +1 -1
  244. package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +36 -4
  245. package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +3 -3
  246. package/front_end/third_party/puppeteer/package/src/cdp/Extension.ts +16 -17
  247. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +3 -3
  248. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +12 -7
  249. package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +1 -1
  250. package/front_end/third_party/puppeteer/package/src/cdp/JSHandle.ts +1 -1
  251. package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +22 -11
  252. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +18 -10
  253. package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +3 -3
  254. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +37 -12
  255. package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +11 -9
  256. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +33 -5
  257. package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +11 -0
  258. package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +2 -2
  259. package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +2 -2
  260. package/front_end/third_party/puppeteer/package/src/common/Configuration.ts +4 -2
  261. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +26 -13
  262. package/front_end/third_party/puppeteer/package/src/common/Debug.ts +30 -40
  263. package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +2 -2
  264. package/front_end/third_party/puppeteer/package/src/common/util.ts +9 -1
  265. package/front_end/third_party/puppeteer/package/src/environment.ts +7 -3
  266. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  267. package/front_end/third_party/puppeteer/package/src/injected/TextContent.ts +15 -5
  268. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +23 -23
  269. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +19 -13
  270. package/front_end/third_party/puppeteer/package/src/node/FirefoxLauncher.ts +2 -2
  271. package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +2 -2
  272. package/front_end/third_party/puppeteer/package/src/node/PipeTransport.ts +3 -3
  273. package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +44 -9
  274. package/front_end/third_party/puppeteer/package/src/node-env-setup.ts +18 -0
  275. package/front_end/third_party/puppeteer/package/src/puppeteer-core.ts +5 -9
  276. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  277. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  278. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
  279. package/front_end/tsconfig.json +1 -2
  280. package/inspector_overlay/tsconfig.json +3 -10
  281. package/mcp/tsconfig.json +1 -5
  282. package/package.json +1 -2
@@ -107,20 +107,28 @@ export class ChromeLauncher extends BrowserLauncher {
107
107
 
108
108
  // Check for the user data dir argument, which will always be set even
109
109
  // with a custom directory specified via the userDataDir option.
110
- let userDataDirIndex = chromeArguments.findIndex(arg => {
110
+ const userDataDirIndex = chromeArguments.findIndex(arg => {
111
111
  return arg.startsWith('--user-data-dir');
112
112
  });
113
+
114
+ let userDataDir: string;
113
115
  if (userDataDirIndex < 0) {
114
116
  isTempUserDataDir = true;
115
- chromeArguments.push(
116
- `--user-data-dir=${await mkdtemp(await this.getProfilePath())}`,
117
+ const profilePath = await this.getProfilePath();
118
+ userDataDir = await mkdtemp(profilePath);
119
+ chromeArguments.push(`--user-data-dir=${userDataDir}`);
120
+ } else {
121
+ const parsedUserDataDir = chromeArguments[userDataDirIndex]!.split(
122
+ '=',
123
+ 2,
124
+ )[1];
125
+ assert(
126
+ typeof parsedUserDataDir === 'string',
127
+ '`--user-data-dir` is malformed',
117
128
  );
118
- userDataDirIndex = chromeArguments.length - 1;
129
+ userDataDir = parsedUserDataDir;
119
130
  }
120
131
 
121
- const userDataDir = chromeArguments[userDataDirIndex]!.split('=', 2)[1];
122
- assert(typeof userDataDir === 'string', '`--user-data-dir` is malformed');
123
-
124
132
  let chromeExecutable = executablePath;
125
133
  if (!chromeExecutable) {
126
134
  assert(
@@ -151,7 +159,7 @@ export class ChromeLauncher extends BrowserLauncher {
151
159
  try {
152
160
  await rm(path);
153
161
  } catch (error) {
154
- debugError(error);
162
+ debugError?.(error);
155
163
  throw error;
156
164
  }
157
165
  }
@@ -273,11 +281,9 @@ export class ChromeLauncher extends BrowserLauncher {
273
281
  '--mute-audio',
274
282
  );
275
283
  }
276
- chromeArguments.push(
277
- enableExtensions
278
- ? '--enable-unsafe-extension-debugging'
279
- : '--disable-extensions',
280
- );
284
+ if (!enableExtensions) {
285
+ chromeArguments.push('--disable-extensions');
286
+ }
281
287
  if (
282
288
  args.every(arg => {
283
289
  return arg.startsWith('-');
@@ -141,7 +141,7 @@ export class FirefoxLauncher extends BrowserLauncher {
141
141
  try {
142
142
  await rm(userDataDir);
143
143
  } catch (error) {
144
- debugError(error);
144
+ debugError?.(error);
145
145
  throw error;
146
146
  }
147
147
  } else {
@@ -165,7 +165,7 @@ export class FirefoxLauncher extends BrowserLauncher {
165
165
  }
166
166
  }
167
167
  } catch (error) {
168
- debugError(error);
168
+ debugError?.(error);
169
169
  }
170
170
  }
171
171
  }
@@ -6,7 +6,7 @@
6
6
  import NodeWebSocket from 'ws';
7
7
 
8
8
  import type {ConnectionTransport} from '../common/ConnectionTransport.js';
9
- import {debugError} from '../common/util.js';
9
+ import {debugCatchError} from '../common/util.js';
10
10
  import {packageVersion} from '../util/version.js';
11
11
 
12
12
  /**
@@ -53,7 +53,7 @@ export class NodeWebSocketTransport implements ConnectionTransport {
53
53
  }
54
54
  });
55
55
  // Silently log all errors - we don't know what to do with them.
56
- this.#ws.addEventListener('error', debugError);
56
+ this.#ws.addEventListener('error', debugCatchError);
57
57
  }
58
58
 
59
59
  send(message: string): void {
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type {ConnectionTransport} from '../common/ConnectionTransport.js';
7
7
  import {EventEmitter} from '../common/EventEmitter.js';
8
- import {debugError} from '../common/util.js';
8
+ import {debugCatchError} from '../common/util.js';
9
9
  import {assert} from '../util/assert.js';
10
10
  import {DisposableStack} from '../util/disposable.js';
11
11
 
@@ -42,7 +42,7 @@ export class PipeTransport implements ConnectionTransport {
42
42
  this.onclose.call(null);
43
43
  }
44
44
  });
45
- pipeReadEmitter.on('error', debugError);
45
+ pipeReadEmitter.on('error', debugCatchError);
46
46
  const pipeWriteEmitter = this.#subscriptions.use(
47
47
  // NodeJS event emitters don't support `*` so we need to typecast
48
48
  // As long as we don't use it we should be OK.
@@ -50,7 +50,7 @@ export class PipeTransport implements ConnectionTransport {
50
50
  pipeWrite as unknown as EventEmitter<Record<string, any>>,
51
51
  ),
52
52
  );
53
- pipeWriteEmitter.on('error', debugError);
53
+ pipeWriteEmitter.on('error', debugCatchError);
54
54
  }
55
55
 
56
56
  send(message: string): void {
@@ -27,7 +27,7 @@ import {CDPSessionEvent} from '../api/CDPSession.js';
27
27
  import type {BoundingBox} from '../api/ElementHandle.js';
28
28
  import type {Page, VideoFormat} from '../api/Page.js';
29
29
  import {debug} from '../common/Debug.js';
30
- import {debugError, fromEmitterEvent} from '../common/util.js';
30
+ import {fromEmitterEvent, debugCatchError} from '../common/util.js';
31
31
  import {guarded} from '../util/decorators.js';
32
32
  import {asyncDisposeSymbol} from '../util/disposable.js';
33
33
 
@@ -36,6 +36,36 @@ const DEFAULT_FPS = 30;
36
36
 
37
37
  const debugFfmpeg = debug('puppeteer:ffmpeg');
38
38
 
39
+ /**
40
+ * Computes how many encoder frames to emit for a captured frame that spans
41
+ * `[previousTimestamp, timestamp]`, so that the cumulative number of emitted
42
+ * frames tracks a constant-`fps` grid anchored at `startTimestamp`.
43
+ *
44
+ * Counting each interval independently with
45
+ * `Math.round(fps * (timestamp - previousTimestamp))` is wrong when frames are
46
+ * captured faster than `fps`: every sub-`1/fps` interval still rounds up to a
47
+ * whole frame, so the emitted frame count grows with the capture rate instead
48
+ * of staying at `fps * duration`, which stretches playback (and, for very high
49
+ * capture rates, the per-interval value rounds down to 0 and frames are
50
+ * dropped). Differencing the rounded cumulative position keeps the total at
51
+ * `Math.round(fps * (lastTimestamp - startTimestamp))`, independent of the
52
+ * capture rate.
53
+ *
54
+ * Timestamps are in seconds (CDP `Page.screencastFrame` metadata timestamps).
55
+ *
56
+ * @internal
57
+ */
58
+ export function countFrames(
59
+ startTimestamp: number,
60
+ previousTimestamp: number,
61
+ timestamp: number,
62
+ fps: number,
63
+ ): number {
64
+ const end = Math.round((timestamp - startTimestamp) * fps);
65
+ const start = Math.round((previousTimestamp - startTimestamp) * fps);
66
+ return Math.max(0, end - start);
67
+ }
68
+
39
69
  /**
40
70
  * @internal
41
71
  */
@@ -160,15 +190,17 @@ export class ScreenRecorder extends PassThrough {
160
190
  'nobuffer',
161
191
  ],
162
192
  // Forces input to be read from standard input, and forces png input
163
- // image format.
164
- ['-f', 'image2pipe', '-vcodec', 'png', '-i', 'pipe:0'],
193
+ // image format. `-framerate` is an input option and must appear before
194
+ // `-i`; otherwise ffmpeg ignores it and the image2pipe demuxer falls
195
+ // back to its default 25fps, stretching the output timeline relative to
196
+ // the frames we feed it at `fps`.
197
+ // prettier-ignore
198
+ ['-framerate', `${fps}`, '-f', 'image2pipe', '-vcodec', 'png', '-i', 'pipe:0'],
165
199
  // No audio
166
200
  ['-an'],
167
201
  // This drastically reduces stalling when cpu is overbooked. By default
168
202
  // VP9 tries to use all available threads?
169
203
  ['-threads', '1'],
170
- // Specifies the frame rate we are giving ffmpeg.
171
- ['-framerate', `${fps}`],
172
204
  // Disable bitrate.
173
205
  ['-b:v', '0'],
174
206
  // Specifies the encoding and format we are using.
@@ -184,16 +216,18 @@ export class ScreenRecorder extends PassThrough {
184
216
  );
185
217
  this.#process.stdout.pipe(this);
186
218
  this.#process.stderr.on('data', (data: Buffer) => {
187
- debugFfmpeg(data.toString('utf8'));
219
+ debugFfmpeg?.(data.toString('utf8'));
188
220
  });
189
221
 
190
222
  this.#page = page;
191
223
 
192
224
  const {client} = this.#page.mainFrame();
193
225
  client.once(CDPSessionEvent.Disconnected, () => {
194
- void this.stop().catch(debugError);
226
+ void this.stop().catch(debugCatchError);
195
227
  });
196
228
 
229
+ // Anchor for the constant-fps grid; set to the first frame's timestamp.
230
+ let startTimestamp: number | undefined;
197
231
  this.#lastFrame = lastValueFrom(
198
232
  fromEmitterEvent(client, 'Page.screencastFrame').pipe(
199
233
  tap(event => {
@@ -218,9 +252,10 @@ export class ScreenRecorder extends PassThrough {
218
252
  ]
219
253
  >,
220
254
  concatMap(([{timestamp: previousTimestamp, buffer}, {timestamp}]) => {
255
+ startTimestamp ??= previousTimestamp;
221
256
  return from(
222
257
  Array<Buffer>(
223
- Math.round(fps * Math.max(timestamp - previousTimestamp, 0)),
258
+ countFrames(startTimestamp, previousTimestamp, timestamp, fps),
224
259
  ).fill(buffer),
225
260
  );
226
261
  }),
@@ -316,7 +351,7 @@ export class ScreenRecorder extends PassThrough {
316
351
  return;
317
352
  }
318
353
  // Stopping the screencast will flush the frames.
319
- await this.#page._stopScreencast().catch(debugError);
354
+ await this.#page._stopScreencast().catch(debugCatchError);
320
355
 
321
356
  this.#controller.abort();
322
357
 
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import fs from 'node:fs';
8
+ import path from 'node:path';
9
+ import {debuglog} from 'node:util';
10
+
11
+ import {environment} from './environment.js';
12
+
13
+ environment.value = {
14
+ fs,
15
+ path,
16
+ debuglog,
17
+ ScreenRecorder: environment.value.ScreenRecorder,
18
+ };
@@ -4,21 +4,17 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- export * from './index.js';
7
+ // Set up Node-specific environment dependencies before importing other modules.
8
+ import './node-env-setup.js';
8
9
 
9
- import fs from 'node:fs';
10
- import path from 'node:path';
10
+ export * from './index.js';
11
11
 
12
12
  import {environment} from './environment.js';
13
13
 
14
14
  import * as Puppeteer from './index.js';
15
15
 
16
- // Set up Node-specific environment dependencies.
17
- environment.value = {
18
- fs,
19
- path,
20
- ScreenRecorder: Puppeteer.ScreenRecorder,
21
- };
16
+ environment.value.ScreenRecorder = Puppeteer.ScreenRecorder;
17
+
22
18
  /**
23
19
  * @public
24
20
  */
@@ -8,7 +8,7 @@
8
8
  * @internal
9
9
  */
10
10
  export const PUPPETEER_REVISIONS = Object.freeze({
11
- chrome: '149.0.7827.22',
12
- 'chrome-headless-shell': '149.0.7827.22',
13
- firefox: 'stable_151.0',
11
+ chrome: '150.0.7871.24',
12
+ 'chrome-headless-shell': '150.0.7871.24',
13
+ firefox: 'stable_152.0.2',
14
14
  });
@@ -6,5 +6,5 @@
6
6
 
7
7
  // If moved update release-please config
8
8
  // x-release-please-start-version
9
- export const packageVersion = '25.1.0';
9
+ export const packageVersion = '25.2.1';
10
10
  // x-release-please-end
@@ -156,6 +156,7 @@
156
156
  "package/lib/puppeteer/injected/XPathQuerySelector.js",
157
157
  "package/lib/puppeteer/injected/injected.js",
158
158
  "package/lib/puppeteer/injected/util.js",
159
+ "package/lib/puppeteer/node-env-setup.js",
159
160
  "package/lib/puppeteer/node/BrowserLauncher.js",
160
161
  "package/lib/puppeteer/node/ChromeLauncher.js",
161
162
  "package/lib/puppeteer/node/FirefoxLauncher.js",
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "extends": "../config/typescript/tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "allowUmdGlobalAccess": true,
5
4
  "outDir": "ignored",
6
5
  "rootDir": ".",
7
6
  "target": "ES2023",
@@ -28,7 +27,7 @@
28
27
  }
29
28
  }
30
29
  ],
31
- "types": ["mocha", "sinon"]
30
+ "types": ["mocha"]
32
31
  },
33
32
  "exclude": ["devtools_compatibility.js"],
34
33
  "references": [{ "path": "./tsconfig.compatibility.json" }]
@@ -1,14 +1,7 @@
1
1
  {
2
2
  "extends": "../config/typescript/tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "allowUmdGlobalAccess": true,
5
- "lib": [
6
- "esnext",
7
- "dom",
8
- "dom.iterable",
9
- "webworker",
10
- "webworker.iterable"
11
- ],
12
- "outDir": "ignored-for-vscode",
13
- },
4
+ "lib": ["esnext", "dom", "dom.iterable", "webworker", "webworker.iterable"],
5
+ "outDir": "ignored-for-vscode"
6
+ }
14
7
  }
package/mcp/tsconfig.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "extends": "../config/typescript/tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "allowUmdGlobalAccess": true,
5
4
  "outDir": "ignored",
6
5
  "target": "ES2023",
7
6
  "lib": [
@@ -11,10 +10,7 @@
11
10
  "ESNext.Collection",
12
11
  "ESNext.Array"
13
12
  ],
14
- "typeRoots": [
15
- "../node_modules/@types",
16
- "../node_modules",
17
- ],
13
+ "typeRoots": ["../node_modules/@types", "../node_modules"],
18
14
  "types": ["node", "undici-types"]
19
15
  },
20
16
  "references": [{ "path": "../front_end/tsconfig.json" }]
package/package.json CHANGED
@@ -68,7 +68,6 @@
68
68
  "karma-coverage": "2.2.1",
69
69
  "karma-mocha": "2.0.1",
70
70
  "karma-mocha-reporter": "2.2.5",
71
- "karma-sinon": "1.0.5",
72
71
  "karma-sourcemap-loader": "0.4.0",
73
72
  "karma-spec-reporter": "0.0.36",
74
73
  "license-checker": "25.0.1",
@@ -92,5 +91,5 @@
92
91
  "webidl2": "24.5.0",
93
92
  "yargs": "17.7.2"
94
93
  },
95
- "version": "1.0.1650232"
94
+ "version": "1.0.1651641"
96
95
  }