Skip to content

Latest commit

 

History

History
249 lines (202 loc) · 8.39 KB

File metadata and controls

249 lines (202 loc) · 8.39 KB

Plan: Playwright Debugging Features

Phase 1: Core Debugging (Console & Errors)

Description

Implement fundamental debugging capabilities: console message capture and uncaught exception handling. These form the foundation for debugging client-side issues.

Steps

Step 1.1: Add Console Command

  • Objective: Capture and retrieve console messages from browser
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Status: COMPLETE
  • Implementation:
    • Add ConsoleCommand type with level filter and clear option
    • Store messages via page.on('console') listener
    • Return messages with level, text, timestamp, location

Step 1.2: Add Page Errors Command

  • Objective: Capture uncaught exceptions and unhandled promise rejections
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: Step 1.1
  • Implementation:
    • Add ErrorsCommand type with clear option
    • Listen to page.on('pageerror') for uncaught exceptions
    • Store error message, stack trace, timestamp
    • Add browser://errors MCP resource

Phase 2: Network Monitoring

Description

Implement network request/response capture for debugging API calls, identifying failed requests, and inspecting payloads.

Steps

Step 2.1: Add Network Logging

  • Objective: Capture all network requests and responses
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add NetworkCommand type with filter and clear options
    • Listen to page.on('request') and page.on('response')
    • Store: url, method, status, resourceType, timing, headers
    • Add optional body capture for XHR/fetch (with size limit)
    • Add browser://network MCP resource

Step 2.2: Add Failed Requests Filter

  • Objective: Quick access to failed/error requests
  • Files: src/browser.ts, src/mcp.ts
  • Dependencies: Step 2.1
  • Implementation:
    • Add failed filter option to NetworkCommand
    • Include requests with status >= 400 or network errors
    • Add browser://network/failed MCP resource

Step 2.3: Add Request Interception

  • Objective: Block or mock specific requests
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: Step 2.1
  • Implementation:
    • Add InterceptCommand with action: 'block' | 'mock' | 'clear'
    • Support URL patterns (glob or regex)
    • For mock: allow custom response body/status
    • Use page.route() for interception

Phase 3: Performance & Metrics

Description

Add performance timing and metrics collection for identifying bottlenecks and measuring page load characteristics.

Steps

Step 3.1: Add Performance Metrics

  • Objective: Return page performance timing data
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add MetricsCommand type
    • Collect via performance.timing and performance.getEntriesByType()
    • Return: domContentLoaded, load, firstPaint, firstContentfulPaint
    • Include DOM stats: nodeCount, scriptCount, styleCount

Step 3.2: Add Resource Timing

  • Objective: Get timing breakdown for individual resources
  • Files: src/browser.ts, src/mcp.ts
  • Dependencies: Step 3.1
  • Implementation:
    • Add resources option to MetricsCommand
    • Use performance.getEntriesByType('resource')
    • Return: name, duration, transferSize, initiatorType

Phase 4: Accessibility

Description

Implement accessibility tree inspection for debugging screen reader and a11y issues.

Steps

Step 4.1: Add Accessibility Snapshot

  • Objective: Dump accessibility tree for page or element
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add A11yCommand with optional selector for subtree
    • Use page.accessibility.snapshot()
    • Return tree with role, name, value, description
    • Add browser://a11y MCP resource

Phase 5: Dialog Handling

Description

Implement automatic handling of browser dialogs (alert, confirm, prompt) to prevent blocking during automation.

Steps

Step 5.1: Add Dialog Command

  • Objective: Configure how dialogs are handled
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add DialogCommand with action: 'accept' | 'dismiss' | 'status'
    • Option to set default behavior for future dialogs
    • Option to provide text response for prompts
    • Store dialog history (type, message, response)
    • Listen to page.on('dialog')

Phase 6: Storage & Cookies

Description

Add commands for inspecting and manipulating browser storage, complementing the existing session save/restore.

Steps

Step 6.1: Add Cookies Command

  • Objective: Get, set, and clear cookies
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add CookiesCommand with action: 'get' | 'set' | 'delete' | 'clear'
    • Use context.cookies() and context.addCookies()
    • Support filtering by name/domain
    • Add browser://cookies MCP resource

Step 6.2: Add Storage Command

  • Objective: Inspect/modify localStorage and sessionStorage
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add StorageCommand with type: 'local' | 'session'
    • Actions: get, set, delete, clear
    • Implement via page.evaluate()
    • Add browser://storage/local and browser://storage/session resources

Phase 7: Advanced Interactions

Description

Add additional interaction commands for comprehensive testing scenarios.

Steps

Step 7.1: Add Hover Command

  • Objective: Trigger hover state on elements
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add HoverCommand with selector
    • Use page.hover(selector)

Step 7.2: Add Select Command

  • Objective: Select options in dropdown elements
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add SelectCommand with selector and value (or values array)
    • Use page.selectOption()

Step 7.3: Add Keys Command

  • Objective: Send keyboard shortcuts and special keys
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add KeysCommand with keys string (e.g., "Control+a", "Escape")
    • Use page.keyboard.press()

Step 7.4: Add Upload Command

  • Objective: Set files on file input elements
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add UploadCommand with selector and files array
    • Use page.setInputFiles()

Step 7.5: Add Scroll Command

  • Objective: Scroll page or element into view
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add ScrollCommand with optional selector, x, y
    • If selector: use element.scrollIntoView()
    • Otherwise: use window.scrollTo()

Phase 8: Viewport & Emulation

Description

Add device emulation and viewport manipulation for responsive testing.

Steps

Step 8.1: Add Viewport Command

  • Objective: Resize browser viewport dynamically
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: None
  • Implementation:
    • Add ViewportCommand with width and height
    • Use page.setViewportSize()

Step 8.2: Add Emulate Command

  • Objective: Emulate specific devices
  • Files: src/types.ts, src/browser.ts, src/mcp.ts
  • Dependencies: Step 8.1
  • Implementation:
    • Add EmulateCommand with device name
    • Use Playwright's device descriptors
    • Apply viewport, userAgent, deviceScaleFactor, touch support

Phase 9: Documentation

Description

Update all documentation with new commands and examples.

Steps

Step 9.1: Update README

  • Objective: Document all commands with examples
  • Files: README.md
  • Dependencies: Phases 1-8
  • Implementation:
    • Add command reference grouped by category
    • Include curl/MCP examples
    • Document response formats

Step 9.2: Update CLAUDE.md

  • Objective: Update developer documentation
  • Files: CLAUDE.md
  • Dependencies: Step 9.1
  • Implementation:
    • Update architecture notes
    • Document new command types