Implement fundamental debugging capabilities: console message capture and uncaught exception handling. These form the foundation for debugging client-side issues.
- Objective: Capture and retrieve console messages from browser
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Status: COMPLETE
- Implementation:
- Add
ConsoleCommandtype withlevelfilter andclearoption - Store messages via
page.on('console')listener - Return messages with level, text, timestamp, location
- Add
- Objective: Capture uncaught exceptions and unhandled promise rejections
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: Step 1.1
- Implementation:
- Add
ErrorsCommandtype withclearoption - Listen to
page.on('pageerror')for uncaught exceptions - Store error message, stack trace, timestamp
- Add
browser://errorsMCP resource
- Add
Implement network request/response capture for debugging API calls, identifying failed requests, and inspecting payloads.
- Objective: Capture all network requests and responses
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
NetworkCommandtype withfilterandclearoptions - Listen to
page.on('request')andpage.on('response') - Store: url, method, status, resourceType, timing, headers
- Add optional body capture for XHR/fetch (with size limit)
- Add
browser://networkMCP resource
- Add
- Objective: Quick access to failed/error requests
- Files:
src/browser.ts,src/mcp.ts - Dependencies: Step 2.1
- Implementation:
- Add
failedfilter option to NetworkCommand - Include requests with status >= 400 or network errors
- Add
browser://network/failedMCP resource
- Add
- Objective: Block or mock specific requests
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: Step 2.1
- Implementation:
- Add
InterceptCommandwithaction: 'block' | 'mock' | 'clear' - Support URL patterns (glob or regex)
- For mock: allow custom response body/status
- Use
page.route()for interception
- Add
Add performance timing and metrics collection for identifying bottlenecks and measuring page load characteristics.
- Objective: Return page performance timing data
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
MetricsCommandtype - Collect via
performance.timingandperformance.getEntriesByType() - Return: domContentLoaded, load, firstPaint, firstContentfulPaint
- Include DOM stats: nodeCount, scriptCount, styleCount
- Add
- Objective: Get timing breakdown for individual resources
- Files:
src/browser.ts,src/mcp.ts - Dependencies: Step 3.1
- Implementation:
- Add
resourcesoption to MetricsCommand - Use
performance.getEntriesByType('resource') - Return: name, duration, transferSize, initiatorType
- Add
Implement accessibility tree inspection for debugging screen reader and a11y issues.
- Objective: Dump accessibility tree for page or element
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
A11yCommandwith optionalselectorfor subtree - Use
page.accessibility.snapshot() - Return tree with role, name, value, description
- Add
browser://a11yMCP resource
- Add
Implement automatic handling of browser dialogs (alert, confirm, prompt) to prevent blocking during automation.
- Objective: Configure how dialogs are handled
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
DialogCommandwithaction: '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')
- Add
Add commands for inspecting and manipulating browser storage, complementing the existing session save/restore.
- Objective: Get, set, and clear cookies
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
CookiesCommandwithaction: 'get' | 'set' | 'delete' | 'clear' - Use
context.cookies()andcontext.addCookies() - Support filtering by name/domain
- Add
browser://cookiesMCP resource
- Add
- Objective: Inspect/modify localStorage and sessionStorage
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
StorageCommandwithtype: 'local' | 'session' - Actions: get, set, delete, clear
- Implement via
page.evaluate() - Add
browser://storage/localandbrowser://storage/sessionresources
- Add
Add additional interaction commands for comprehensive testing scenarios.
- Objective: Trigger hover state on elements
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
HoverCommandwithselector - Use
page.hover(selector)
- Add
- Objective: Select options in dropdown elements
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
SelectCommandwithselectorandvalue(or values array) - Use
page.selectOption()
- Add
- Objective: Send keyboard shortcuts and special keys
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
KeysCommandwithkeysstring (e.g., "Control+a", "Escape") - Use
page.keyboard.press()
- Add
- Objective: Set files on file input elements
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
UploadCommandwithselectorandfilesarray - Use
page.setInputFiles()
- Add
- Objective: Scroll page or element into view
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
ScrollCommandwith optionalselector,x,y - If selector: use
element.scrollIntoView() - Otherwise: use
window.scrollTo()
- Add
Add device emulation and viewport manipulation for responsive testing.
- Objective: Resize browser viewport dynamically
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: None
- Implementation:
- Add
ViewportCommandwithwidthandheight - Use
page.setViewportSize()
- Add
- Objective: Emulate specific devices
- Files:
src/types.ts,src/browser.ts,src/mcp.ts - Dependencies: Step 8.1
- Implementation:
- Add
EmulateCommandwithdevicename - Use Playwright's device descriptors
- Apply viewport, userAgent, deviceScaleFactor, touch support
- Add
Update all documentation with new commands and examples.
- 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
- Objective: Update developer documentation
- Files:
CLAUDE.md - Dependencies: Step 9.1
- Implementation:
- Update architecture notes
- Document new command types