Release binaries / Build macOS ARM64 (push) Has been cancelled
Release binaries / Build macOS x64 (push) Has been cancelled
Release binaries / Build Linux ARM64 (push) Has been cancelled
Release binaries / Build Linux musl ARM64 (push) Has been cancelled
Release binaries / Build Linux musl x64 (push) Has been cancelled
Release binaries / Build Linux x64 (push) Has been cancelled
Release binaries / Build Windows x64 (push) Has been cancelled
Release binaries / Attach binaries to GitHub Release (push) Has been cancelled
Standalone product rename across the whole repo (issue: project identity): - Binary/package/repo/skill/docs: agent-browser[-stealth] → chrome-use (single binary name `chrome-use`; old aliases agent-browser/abs dropped). - Version: 0.27.0-fork.51 → 1.0.0 (drop the upstream-fork counter). - Native-messaging host: com.agent_browser.connect → com.leeguoo.chrome_use (CLI + ab-connect extension in lockstep — this is a breaking handshake change, extension bumped 0.4.2 → 0.5.0, needs a Web Store republish). - Config dir: ~/.agent-browser → ~/.chrome-use. - README/zh: reframed from "stealth fork of agent-browser" to a standalone product with a small `originally based on vercel-labs/agent-browser` credit. - Kept AGENT_BROWSER_* env vars working (63 vars across the codebase; renaming them would break every existing script/skill for no user-facing gain). Build green, 802 unit tests pass, fmt + clippy clean. Upstream attribution to vercel-labs/agent-browser preserved.
3.3 KiB
3.3 KiB
Profiling
Capture Chrome DevTools performance profiles during browser automation for performance analysis.
Related: commands.md for full command reference, SKILL.md for quick start.
Contents
Basic Profiling
# Start profiling
chrome-use profiler start
# Perform actions
chrome-use navigate https://example.com
chrome-use click "#button"
chrome-use wait 1000
# Stop and save
chrome-use profiler stop ./trace.json
Profiler Commands
# Start profiling with default categories
chrome-use profiler start
# Start with custom trace categories
chrome-use profiler start --categories "devtools.timeline,v8.execute,blink.user_timing"
# Stop profiling and save to file
chrome-use profiler stop ./trace.json
Categories
The --categories flag accepts a comma-separated list of Chrome trace categories. Default categories include:
devtools.timeline-- standard DevTools performance tracesv8.execute-- time spent running JavaScriptblink-- renderer eventsblink.user_timing--performance.mark()/performance.measure()callslatencyInfo-- input-to-latency trackingrenderer.scheduler-- task scheduling and executiontoplevel-- broad-spectrum basic events
Several disabled-by-default-* categories are also included for detailed timeline, call stack, and V8 CPU profiling data.
Use Cases
Diagnosing Slow Page Loads
chrome-use profiler start
chrome-use navigate https://app.example.com
chrome-use wait --load networkidle
chrome-use profiler stop ./page-load-profile.json
Profiling User Interactions
chrome-use navigate https://app.example.com
chrome-use profiler start
chrome-use click "#submit"
chrome-use wait 2000
chrome-use profiler stop ./interaction-profile.json
CI Performance Regression Checks
#!/bin/bash
chrome-use profiler start
chrome-use navigate https://app.example.com
chrome-use wait --load networkidle
chrome-use profiler stop "./profiles/build-${BUILD_ID}.json"
Output Format
The output is a JSON file in Chrome Trace Event format:
{
"traceEvents": [
{ "cat": "devtools.timeline", "name": "RunTask", "ph": "X", "ts": 12345, "dur": 100, ... },
...
],
"metadata": {
"clock-domain": "LINUX_CLOCK_MONOTONIC"
}
}
The metadata.clock-domain field is set based on the host platform (Linux or macOS). On Windows it is omitted.
Viewing Profiles
Load the output JSON file in any of these tools:
- Chrome DevTools: Performance panel > Load profile (Ctrl+Shift+I > Performance)
- Perfetto UI: https://ui.perfetto.dev/ -- drag and drop the JSON file
- Trace Viewer:
chrome://tracingin any Chromium browser
Limitations
- Only works with Chromium-based browsers (Chrome, Edge). Not supported on Firefox or WebKit.
- Trace data accumulates in memory while profiling is active (capped at 5 million events). Stop profiling promptly after the area of interest.
- Data collection on stop has a 30-second timeout. If the browser is unresponsive, the stop command may fail.