Awesome-omni-skill chrome-devtools

Chrome DevTools automation for browser testing, debugging, and performance analysis

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/chrome-devtools" ~/.claude/skills/diegosouzapw-awesome-omni-skill-chrome-devtools-69a26e && rm -rf "$T"
manifest: skills/development/chrome-devtools/SKILL.md
source content

What I do

  • Automate browser interactions through Chrome DevTools Protocol
  • Navigate pages, click elements, fill forms, and handle user interactions
  • Debug issues by capturing console logs and network requests
  • Take screenshots and snapshots for visual regression testing
  • Record performance traces and analyze Core Web Vitals
  • Emulate different devices, network conditions, and geolocations
  • Execute JavaScript in the browser context for advanced debugging

When to use me

Use me when you need to:

  • Automate browser testing and interaction flows
  • Debug frontend issues by examining console output and network activity
  • Capture screenshots for documentation or regression testing
  • Analyze page performance with performance traces
  • Test responsive designs with device emulation
  • Inspect and interact with page elements programmatically
  • Debug WebSocket or network request failures
  • Verify page behavior across different network conditions

Page management

// List all open pages
chrome-devtools_list_pages()

// Select a page by ID
chrome-devtools_select_page({ pageId: 0 })

// Navigate to URL
chrome-devtools_navigate_page({ type: "url", url: "https://example.com" })

// Navigate back/forward/reload
chrome-devtools_navigate_page({ type: "back" })
chrome-devtools_navigate_page({ type: "forward" })
chrome-devtools_navigate_page({ type: "reload", ignoreCache: true })

// Create new page
chrome-devtools_new_page({ url: "https://example.com" })

// Close a page (except the last one)
chrome-devtools_close_page({ pageId: 1 })

Page interaction

// Take snapshot of page elements
const snapshot = chrome-devtools_take_snapshot()
// Returns elements with unique UIDs for interaction

// Click an element
chrome-devtools_click({ uid: "element-123" })

// Double-click an element
chrome-devtools_click({ uid: "element-123", dblClick: true })

// Hover over element
chrome-devtools_hover({ uid: "element-123" })

// Drag and drop
chrome-devtools_drag({
  from_uid: "source-element",
  to_uid: "target-element"
})

// Type text
chrome-devtools_fill({ uid: "input-456", value: "Hello, World!" })

// Fill multiple form elements at once
chrome-devtools_fill_form({
  elements: [
    { uid: "input-name", value: "John Doe" },
    { uid: "input-email", value: "john@example.com" },
    { uid: "select-country", value: "USA" }
  ]
})

// Press keyboard shortcuts
chrome-devtools_press_key({ key: "Enter" })
chrome-devtools_press_key({ key: "Control+A" })
chrome-devtools_press_key({ key: "Control+Shift+R" })

Screenshots and snapshots

// Take viewport screenshot
chrome-devtools_take_screenshot({ format: "png" })

// Take full page screenshot
chrome-devtools_take_screenshot({ fullPage: true, format: "png" })

// Take screenshot of specific element
chrome-devtools_take_screenshot({
  uid: "element-123",
  format: "jpeg",
  quality: 90
})

// Save screenshot to file
chrome-devtools_take_screenshot({
  filePath: "./screenshots/homepage.png"
})

// Take text snapshot (a11y tree)
const snapshot = chrome-devtools_take_snapshot()
// Use UIDs from snapshot for subsequent interactions

Console debugging

// List all console messages
chrome-devtools_list_console_messages()

// Filter by message types
chrome-devtools_list_console_messages({
  types: ["error", "warn"]
})

// Get specific message by ID
chrome-devtools_get_console_message({ msgid: 1 })

// Execute JavaScript in page context
chrome-devtools_evaluate_script({
  function: "() => { return document.title; }"
})

// Execute with element argument
chrome-devtools_evaluate_script({
  function: "(el) => { return el.innerText; }",
  args: [{ uid: "element-123" }]
})

Network debugging

// List all network requests
chrome-devtools_list_network_requests()

// Filter by resource types
chrome-devtools_list_network_requests({
  resourceTypes: ["xhr", "fetch", "document"]
})

// Get specific request details
chrome-devtools_get_network_request({ reqid: 42 })

// Get currently selected request in DevTools
chrome-devtools_get_network_request()

Performance analysis

// Start performance trace with page reload
chrome-devtools_performance_start_trace({
  reload: true,
  autoStop: true,
  filePath: "./traces/performance.json"
})

// Start trace without reload
chrome-devtools_performance_start_trace({
  reload: false,
  autoStop: false,
  filePath: "./traces/performance.json.gz"
})

// Stop active trace
chrome-devtools_performance_stop_trace({
  filePath: "./traces/performance.json"
})

// Analyze performance insights
chrome-devtools_performance_analyze_insight({
  insightSetId: "lcp-insight-set-123",
  insightName: "LCPBreakdown"
})

Emulation and testing

// Resize viewport
chrome-devtools_resize_page({ width: 375, height: 667 })  // iPhone SE
chrome-devtools_resize_page({ width: 1920, height: 1080 })  // Desktop

// Emulate network conditions
chrome-devtools_emulate({
  networkConditions: "Slow 3G"
})

// Emulate CPU throttling (1-20x slowdown)
chrome-devtools_emulate({
  cpuThrottlingRate: 4
})

// Emulate geolocation
chrome-devtools_emulate({
  geolocation: {
    latitude: 37.7749,
    longitude: -122.4194
  }
})

// Clear emulations
chrome-devtools_emulate({
  networkConditions: "No emulation",
  cpuThrottlingRate: 1,
  geolocation: null
})

Waiting and synchronization

// Wait for text to appear
chrome-devtools_wait_for({
  text: "Welcome",
  timeout: 10000
})

// Navigate with custom timeout
chrome-devtools_navigate_page({
  type: "url",
  url: "https://slow-site.com",
  timeout: 30000
})

File upload

// Upload file through file input
chrome-devtools_upload_file({
  uid: "file-input-123",
  filePath: "/path/to/file.pdf"
})

Dialog handling

// Accept dialog (alert, confirm, prompt)
chrome-devtools_handle_dialog({ action: "accept" })

// Dismiss dialog
chrome-devtools_handle_dialog({ action: "dismiss" })

// Accept with prompt text
chrome-devtools_handle_dialog({
  action: "accept",
  promptText: "User entered text"
})

Best practices

  • Always take a snapshot before interacting with elements to get stable UIDs
  • Wait for elements to appear before clicking (use wait_for or check snapshot)
  • Use explicit timeouts for slow-loading pages
  • Save screenshots with descriptive names for documentation
  • Capture console errors during test runs for debugging
  • Use performance traces to identify bottlenecks
  • Test responsive designs by emulating different screen sizes
  • Filter network requests to focus on XHR/fetch for API testing
  • Handle dialogs promptly after they appear

Common workflows

E2E test flow

1. chrome-devtools_list_pages() - Check available pages
2. chrome-devtools_select_page({ pageId: 0 }) - Select target page
3. chrome-devtools_navigate_page({ type: "url", url: "..." }) - Navigate
4. chrome-devtools_take_snapshot() - Get page structure
5. chrome-devtools_fill({ uid: "...", value: "..." }) - Fill forms
6. chrome-devtools_click({ uid: "..." }) - Submit
7. chrome-devtools_take_screenshot() - Capture result
8. chrome-devtools_list_console_messages() - Check for errors

Performance debugging flow

1. chrome-devtools_navigate_page({ type: "url", url: "..." })
2. chrome-devtools_performance_start_trace({ reload: true, autoStop: true })
3. chrome-devtools_list_network_requests() - Analyze resources
4. chrome-devtools_performance_analyze_insight({ ... }) - Review insights

Network debugging flow

1. chrome-devtools_list_network_requests({ resourceTypes: ["xhr", "fetch"] })
2. chrome-devtools_get_network_request({ reqid: 123 }) - Inspect payload
3. chrome-devtools_list_console_messages({ types: ["error"] }) - Check errors