📁 Files changed: 13 📝 Lines changed: 1401 • .gitignore • CLAUDE.md • PLAN.md • README.md • TODO.md • package-lock.json • package.json • browser.ts • cli.ts • index.ts • server.ts • types.ts • tsconfig.json
8.9 KiB
Plan: Web Debugging Commands
Phase 1: Storage & Session Commands
Description
Add commands for inspecting and manipulating browser storage and cookies. These are essential for debugging authentication, session state, and client-side data persistence.
Steps
Step 1.1: Add Cookies Command
- Objective: Implement get/set/clear cookies functionality
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
CookiesCommandtype withaction: 'get' | 'set' | 'clear' - Add optional
name,value,urlfields for set operation - Implement
cookies()method usingcontext.cookies()andcontext.addCookies() - Add logging with cookie icon
- Add
Step 1.2: Add Storage Command
- Objective: Implement localStorage and sessionStorage read/write/clear
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: Step 1.1
- Implementation:
- Add
StorageCommandtype withstorage: 'local' | 'session'andaction: 'get' | 'set' | 'clear' - Implement via
page.evaluate()accessingwindow.localStorage/window.sessionStorage - Return all items on get, or specific key if provided
- Add
Phase 2: Console & Debugging Commands
Description
Add commands for capturing console output and debugging page state. Critical for understanding client-side errors and application behavior.
Steps
Step 2.1: Add Console Command
- Objective: Capture and return console messages (log, error, warn, info)
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
ConsoleCommandtype with optionalclear: boolean - Store console messages in array via
page.on('console') - Initialize listener in
launch()method - Return accumulated messages with type, text, and timestamp
- Add
Step 2.2: Add Metrics Command
- Objective: Return performance metrics and DOM statistics
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
MetricsCommandtype - Use
page.evaluate()to gatherperformance.timing, DOM node counts - Return structured metrics object
- Add
Phase 3: Interaction Commands
Description
Add commands for advanced page interactions beyond click and type. Enables testing hover states, keyboard shortcuts, and form controls.
Steps
Step 3.1: Add Scroll Command
- Objective: Scroll to position, element, or by delta
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
ScrollCommandwithselector?: string,x?: number,y?: number,behavior?: 'smooth' | 'instant' - If selector provided, use
element.scrollIntoView() - Otherwise use
window.scrollTo()
- Add
Step 3.2: Add Hover Command
- Objective: Trigger hover state on element
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
HoverCommandwithselector: string - Use
page.hover(selector) - Return success with element info
- Add
Step 3.3: Add Select Command
- Objective: Select option(s) in dropdown/select elements
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
SelectCommandwithselector: string,value: string | string[] - Use
page.selectOption(selector, value) - Return selected values
- Add
Step 3.4: Add Keys Command
- Objective: Send keyboard shortcuts and special keys
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
KeysCommandwithkeys: string(e.g., "Control+a", "Escape", "Enter") - Use
page.keyboard.press()for single keys - Support key combinations
- Add
Phase 4: Network Commands
Description
Add commands for network inspection and manipulation. Enables debugging API calls, blocking resources, and simulating network conditions.
Steps
Step 4.1: Add Network Logging
- Objective: Capture and return network requests/responses
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
NetworkCommandwithaction: 'log' | 'clear', optionalfilter: string - Store requests via
page.on('request')andpage.on('response') - Return array of {url, method, status, type, timing}
- Add
Step 4.2: Add Block Command
- Objective: Block URLs or patterns (ads, analytics, etc.)
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: Step 4.1
- Implementation:
- Add
BlockCommandwithpatterns: string[]andaction: 'add' | 'remove' | 'clear' - Use
page.route()to abort matching requests - Maintain list of blocked patterns
- Add
Step 4.3: Add Throttle Command
- Objective: Simulate slow network conditions
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
ThrottleCommandwithpreset: 'slow3g' | 'fast3g' | 'offline' | 'none' - Use CDP session to set network conditions via
Network.emulateNetworkConditions
- Add
Phase 5: Output Commands
Description
Add commands for exporting page content in different formats.
Steps
Step 5.1: Add PDF Command
- Objective: Save page as PDF
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
PdfCommandwithpath: string, optionalformat,landscape,margin - Use
page.pdf()(WebKit supports this) - Return path to saved file
- Add
Step 5.2: Add Accessibility Command
- Objective: Dump accessibility tree snapshot
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
AccessibilityCommandwith optionalselectorfor subtree - Use
page.accessibility.snapshot() - Return tree structure
- Add
Phase 6: Advanced Commands
Description
Add commands for viewport manipulation, device emulation, and frame handling.
Steps
Step 6.1: Add Viewport Command
- Objective: Resize viewport dynamically
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
ViewportCommandwithwidth: number,height: number - Use
page.setViewportSize() - Return new dimensions
- Add
Step 6.2: Add Emulate Command
- Objective: Emulate mobile devices
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: Step 6.1
- Implementation:
- Add
EmulateCommandwithdevice: string(e.g., 'iPhone 12', 'Pixel 5') - Use Playwright's device descriptors
- Apply viewport, userAgent, deviceScaleFactor
- Add
Step 6.3: Add Frames Command
- Objective: List and switch to iframe contexts
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
FramesCommandwithaction: 'list' | 'switch', optionalselectororindex - Use
page.frames()to list,frame.locator()to switch context - Track current frame for subsequent commands
- Add
Step 6.4: Add Dialog Command
- Objective: Handle alert/confirm/prompt dialogs
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
DialogCommandwithaction: 'accept' | 'dismiss', optionaltextfor prompt - Set up
page.on('dialog')handler - Queue dialogs and respond based on command
- Add
Step 6.5: Add Upload Command
- Objective: Fill file input elements
- Files:
src/types.ts,src/browser.ts,src/server.ts,src/index.ts - Dependencies: None
- Implementation:
- Add
UploadCommandwithselector: string,files: string[] - Use
page.setInputFiles(selector, files) - Return success with file count
- Add
Phase 7: Documentation & Polish
Description
Update documentation and CLI help text with all new commands.
Steps
Step 7.1: Update README
- Objective: Document all new commands with examples
- Files:
README.md - Dependencies: Phases 1-6
- Implementation:
- Add command reference section
- Include curl examples for each command
- Document response formats
Step 7.2: Update CLAUDE.md
- Objective: Update developer documentation
- Files:
CLAUDE.md - Dependencies: Step 7.1
- Implementation:
- Update architecture section with new command flow
- Document internal logging format
Step 7.3: Update CLI Help
- Objective: Update --help output with command list
- Files:
src/cli.ts - Dependencies: Phases 1-6
- Implementation:
- Expand server mode help section
- Group commands by category