chrome-devtools-frontend 1.0.1650100 → 1.0.1650677
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.
- package/.agents/skills/version-control/SKILL.md +5 -1
- package/config/typescript/tsconfig.base.json +1 -0
- package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
- package/front_end/core/host/UserMetrics.ts +0 -26
- package/front_end/core/sdk/CSSMetadata.ts +72 -0
- package/front_end/devtools_compatibility.js +1 -2
- package/front_end/foundation/Universe.ts +7 -0
- package/front_end/models/ai_assistance/AiAgent2.ts +11 -1
- package/front_end/models/ai_assistance/README.md +4 -0
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -0
- package/front_end/models/ai_assistance/agents/AiAgent.ts +3 -0
- package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +13 -4
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +3 -7
- package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
- package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
- package/front_end/models/ai_assistance/skills/SkillRegistry.ts +2 -0
- package/front_end/models/ai_assistance/skills/accessibility.md +13 -0
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +54 -0
- package/front_end/models/ai_assistance/tools/ResolveLighthousePath.ts +124 -0
- package/front_end/models/ai_assistance/tools/Tool.ts +12 -2
- package/front_end/models/ai_assistance/tools/ToolRegistry.ts +4 -0
- package/front_end/models/persistence/NetworkPersistenceManager.ts +9 -1
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -11
- package/front_end/panels/common/ExtensionServer.ts +70 -50
- package/front_end/panels/elements/ElementsPanel.ts +1 -1
- package/front_end/panels/js_timeline/js_timeline-meta.ts +1 -2
- package/front_end/panels/network/RequestConditionsDrawer.ts +236 -198
- package/front_end/panels/network/RequestHeadersView.ts +2 -2
- package/front_end/panels/network/components/RequestHeadersView.css +1 -0
- package/front_end/panels/network/components/ResponseHeaderSection.css +5 -1
- package/front_end/panels/network/requestConditionsDrawer.css +3 -0
- package/front_end/panels/recorder/testing/RecorderHelpers.ts +2 -0
- package/front_end/panels/timeline/timeline-meta.ts +1 -1
- package/front_end/panels/whats_new/ReleaseNoteText.ts +12 -6
- package/front_end/panels/whats_new/resources/WNDT.md +8 -7
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/README.md +14 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +60 -24
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +271 -164
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +2 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +11 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js +3 -10
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +9 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.d.ts +13 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.js +14 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js +5 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserConnector.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js +6 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Deserializer.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Deserializer.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js +6 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ExposedFunction.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Realm.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js +11 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Binding.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Binding.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +13 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/BrowserConnector.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Coverage.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Coverage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ElementHandle.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js +25 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ExecutionContext.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ExecutionContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.js +9 -11
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Extension.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.js +7 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/JSHandle.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/JSHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js +18 -10
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +17 -11
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +28 -10
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +10 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js +20 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +11 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CallbackRegistry.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Configuration.d.ts +4 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Configuration.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +26 -13
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts +1 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js +24 -33
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Debug.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +8 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js +8 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.js +4 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.js +15 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/TextContent.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts +5 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +17 -16
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js +14 -9
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ChromeLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/FirefoxLauncher.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/FirefoxLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PipeTransport.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/PipeTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts +20 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js +38 -9
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.js +16 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node-env-setup.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.js +3 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/puppeteer-core.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +60 -24
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +4 -8
- package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +10 -10
- package/front_end/third_party/puppeteer/package/src/api/JSHandle.ts +3 -10
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +14 -8
- package/front_end/third_party/puppeteer/package/src/api/WebWorker.ts +30 -0
- package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +5 -5
- package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +5 -3
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +6 -6
- package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +4 -4
- package/front_end/third_party/puppeteer/package/src/bidi/Deserializer.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/bidi/ExposedFunction.ts +6 -6
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +6 -4
- package/front_end/third_party/puppeteer/package/src/cdp/Binding.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +14 -2
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Coverage.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +36 -4
- package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/Extension.ts +16 -17
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +12 -7
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/JSHandle.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +22 -11
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +18 -10
- package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +37 -12
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +11 -9
- package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +33 -5
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/common/Configuration.ts +4 -2
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +26 -13
- package/front_end/third_party/puppeteer/package/src/common/Debug.ts +30 -40
- package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/common/util.ts +9 -1
- package/front_end/third_party/puppeteer/package/src/environment.ts +7 -3
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/TextContent.ts +15 -5
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +23 -23
- package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +19 -13
- package/front_end/third_party/puppeteer/package/src/node/FirefoxLauncher.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/node/PipeTransport.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +44 -9
- package/front_end/third_party/puppeteer/package/src/node-env-setup.ts +18 -0
- package/front_end/third_party/puppeteer/package/src/puppeteer-core.ts +5 -9
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
- package/front_end/third_party/third-party-web/lib/nostats-subset.js +21 -15
- package/front_end/third_party/third-party-web/package/README.md +619 -582
- package/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +1 -1
- package/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +1 -1
- package/front_end/third_party/third-party-web/package/dist/entities-nostats.json +1 -1
- package/front_end/third_party/third-party-web/package/dist/entities.json +1 -1
- package/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +27 -15
- package/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +14 -0
- package/front_end/third_party/third-party-web/package/lib/entities.test.js +10 -0
- package/front_end/third_party/third-party-web/package/lib/index.test.js +6 -6
- package/front_end/third_party/third-party-web/package/lib/markdown/template.md +1 -3
- package/front_end/third_party/third-party-web/package/package.json +7 -3
- package/front_end/third_party/third-party-web/package.json +1 -1
- package/front_end/tsconfig.json +1 -2
- package/front_end/ui/components/buttons/floatingButton.css +3 -3
- package/front_end/ui/components/lists/list.css +2 -0
- package/front_end/ui/legacy/ListWidget.ts +8 -5
- package/front_end/ui/legacy/TextPrompt.ts +5 -2
- package/front_end/ui/legacy/textPrompt.css +1 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/inspector_overlay/tsconfig.json +3 -10
- package/mcp/tsconfig.json +1 -5
- 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
|
-
|
|
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
|
-
|
|
116
|
-
|
|
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
|
-
|
|
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
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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 {
|
|
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',
|
|
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 {
|
|
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',
|
|
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',
|
|
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 {
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
7
|
+
// Set up Node-specific environment dependencies before importing other modules.
|
|
8
|
+
import './node-env-setup.js';
|
|
8
9
|
|
|
9
|
-
|
|
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
|
-
|
|
17
|
-
|
|
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: '
|
|
12
|
-
'chrome-headless-shell': '
|
|
13
|
-
firefox: '
|
|
11
|
+
chrome: '150.0.7871.24',
|
|
12
|
+
'chrome-headless-shell': '150.0.7871.24',
|
|
13
|
+
firefox: 'stable_152.0.2',
|
|
14
14
|
});
|
|
@@ -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",
|