{"_id":"@ams-dev/browser-inspector","_rev":"5-af250b40579d63d0c2fdf5cf5fcc6d49","name":"@ams-dev/browser-inspector","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.3":{"name":"@ams-dev/browser-inspector","version":"0.1.3","keywords":["mcp","model-context-protocol","browser","automation","puppeteer","inspector","performance","accessibility"],"author":{"name":"mastoica"},"license":"MIT","_id":"@ams-dev/browser-inspector@0.1.3","maintainers":[{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"}],"homepage":"https://github.com/mastoica/vibecoding-mcp-servers#readme","bugs":{"url":"https://github.com/mastoica/vibecoding-mcp-servers/issues"},"bin":{"browser-inspector":"dist/index.js"},"dist":{"shasum":"3567005e1ef8868e723cf06380331ae571629e3b","tarball":"https://registry.npmjs.org/@ams-dev/browser-inspector/-/browser-inspector-0.1.3.tgz","fileCount":15,"integrity":"sha512-6gD63TWLviPOeolSkrnsKr3lU6iNwbplxGyv8z6Te+gvrRxdGJl33iWYSCf69lXiC4UroiYvhIFpzXc6mz2img==","signatures":[{"sig":"MEUCIQDUJXXcBPEC9MkaUmmodXFmfh9nJr2niwz8hgWqClSwswIgao8+fQX/J6XEwPwnwzDzA3QVHxwd1wI/ohA1n6YVMj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65520},"main":"./dist/index.js","type":"module","_from":"file:ams-dev-browser-inspector-0.1.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","test":"echo 'No tests yet'","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"},"_resolved":"/tmp/a0b70c030b1e9c724f7fef89eaa51032/ams-dev-browser-inspector-0.1.3.tgz","_integrity":"sha512-6gD63TWLviPOeolSkrnsKr3lU6iNwbplxGyv8z6Te+gvrRxdGJl33iWYSCf69lXiC4UroiYvhIFpzXc6mz2img==","repository":{"url":"git+https://github.com/mastoica/vibecoding-mcp-servers.git","type":"git","directory":"packages/browser-inspector"},"_npmVersion":"10.8.2","description":"MCP server for browser automation, inspection, monitoring, and performance analysis","directories":{},"_nodeVersion":"20.19.5","dependencies":{"puppeteer":"^23.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.1.0","typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-inspector_0.1.3_1760802902270_0.7617946555484463","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ams-dev/browser-inspector","version":"0.1.5","keywords":["mcp","model-context-protocol","browser","automation","puppeteer","inspector","performance","accessibility"],"author":{"name":"mastoica"},"license":"MIT","_id":"@ams-dev/browser-inspector@0.1.5","maintainers":[{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"}],"homepage":"https://github.com/mastoica/vibecoding-mcp-servers#readme","bugs":{"url":"https://github.com/mastoica/vibecoding-mcp-servers/issues"},"bin":{"browser-inspector":"dist/index.js"},"dist":{"shasum":"1ebd1810631dab40fc225484662ebb7a1efedcbc","tarball":"https://registry.npmjs.org/@ams-dev/browser-inspector/-/browser-inspector-0.1.5.tgz","fileCount":15,"integrity":"sha512-ONrZcgiA3HD3yd993g6tt1TzUGwyZf8dChaHa5XlfslRMRLoE/xPCl+g4ldFlUY5x/Fs8d8fpHAbuGOZdpNavw==","signatures":[{"sig":"MEQCIHflaXPY7fWUWLrH0XguKxBbcjwyEmG8sz1MAnpjvbVTAiAPUPzaTOhFI2R8fm3POzhYodb1pv/MBrFa4nFQWd1vxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65831},"main":"./dist/index.js","type":"module","_from":"file:ams-dev-browser-inspector-0.1.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","test":"echo 'No tests yet'","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"},"_resolved":"/tmp/f5c519273beeea10ba7c4429993c5333/ams-dev-browser-inspector-0.1.5.tgz","_integrity":"sha512-ONrZcgiA3HD3yd993g6tt1TzUGwyZf8dChaHa5XlfslRMRLoE/xPCl+g4ldFlUY5x/Fs8d8fpHAbuGOZdpNavw==","repository":{"url":"git+https://github.com/mastoica/vibecoding-mcp-servers.git","type":"git","directory":"packages/browser-inspector"},"_npmVersion":"10.8.2","description":"MCP server for browser automation, inspection, monitoring, and performance analysis","directories":{},"_nodeVersion":"20.19.5","dependencies":{"puppeteer":"^23.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.1.0","typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-inspector_0.1.5_1760804041189_0.007773900736274708","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ams-dev/browser-inspector","version":"0.2.0","keywords":["mcp","model-context-protocol","browser","automation","puppeteer","inspector","performance","accessibility"],"author":{"name":"mastoica"},"license":"MIT","_id":"@ams-dev/browser-inspector@0.2.0","maintainers":[{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"}],"homepage":"https://github.com/mastoica/vibecoding-mcp-servers#readme","bugs":{"url":"https://github.com/mastoica/vibecoding-mcp-servers/issues"},"bin":{"browser-inspector":"dist/index.js"},"dist":{"shasum":"bac820c7b889c4d7cf3b9b952e35cd5869d5617b","tarball":"https://registry.npmjs.org/@ams-dev/browser-inspector/-/browser-inspector-0.2.0.tgz","fileCount":15,"integrity":"sha512-nsswtzjwMLsEWjpt4E5mKuQPoEsqD/C4lXq34mFUVujOudP0bHssaIY+nR8ZwnbUCOh++gehW+e5QqfKNfahZg==","signatures":[{"sig":"MEUCIQCm5VT0XXGJNznqfjHGi4DkE4BRw9PMam1ouApn0JcmIAIgIcbEES0lUlqPWB2pFd0yjOBy/QTp+x6Pf5HtBuydBSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81203},"main":"./dist/index.js","type":"module","_from":"file:ams-dev-browser-inspector-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","test":"echo 'No tests yet'","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"},"_resolved":"/tmp/55a7beccb8f9d684d567b37048607256/ams-dev-browser-inspector-0.2.0.tgz","_integrity":"sha512-nsswtzjwMLsEWjpt4E5mKuQPoEsqD/C4lXq34mFUVujOudP0bHssaIY+nR8ZwnbUCOh++gehW+e5QqfKNfahZg==","repository":{"url":"git+https://github.com/mastoica/vibecoding-mcp-servers.git","type":"git","directory":"packages/browser-inspector"},"_npmVersion":"10.8.2","description":"MCP server for browser automation, inspection, monitoring, and performance analysis","directories":{},"_nodeVersion":"20.19.5","dependencies":{"playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.1.0","typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-inspector_0.2.0_1760820185740_0.955505169327062","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ams-dev/browser-inspector","version":"0.2.1","keywords":["mcp","model-context-protocol","browser","automation","puppeteer","inspector","performance","accessibility"],"author":{"name":"mastoica"},"license":"MIT","_id":"@ams-dev/browser-inspector@0.2.1","maintainers":[{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"}],"homepage":"https://github.com/mastoica/vibecoding-mcp-servers#readme","bugs":{"url":"https://github.com/mastoica/vibecoding-mcp-servers/issues"},"bin":{"browser-inspector":"dist/index.js"},"dist":{"shasum":"506a71a6e5468cbe852ae2477837d9803cce53d4","tarball":"https://registry.npmjs.org/@ams-dev/browser-inspector/-/browser-inspector-0.2.1.tgz","fileCount":15,"integrity":"sha512-nkzXEb3SqaW7fsWUH1mg12zboUXkCaQI93moiTqBG7yDFOQ9iLpj1gW1XkJFW5uj62eN3oh07IrG9b3Axav2kg==","signatures":[{"sig":"MEUCIQDam6uthGQd1qCAsWLBCuro9Btca2yZNG+YFY32NUV9cQIgZbi58fVP58NOS5EXzAbReMlz8g4wQ3iOUIkPA+xpXQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84187},"main":"./dist/index.js","type":"module","_from":"file:ams-dev-browser-inspector-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","test":"echo 'No tests yet'","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"},"_resolved":"/tmp/ed1a4d58995a09255c97fcee6a29655e/ams-dev-browser-inspector-0.2.1.tgz","_integrity":"sha512-nkzXEb3SqaW7fsWUH1mg12zboUXkCaQI93moiTqBG7yDFOQ9iLpj1gW1XkJFW5uj62eN3oh07IrG9b3Axav2kg==","repository":{"url":"git+https://github.com/mastoica/vibecoding-mcp-servers.git","type":"git","directory":"packages/browser-inspector"},"_npmVersion":"10.8.2","description":"MCP server for browser automation, inspection, monitoring, and performance analysis","directories":{},"_nodeVersion":"20.19.5","dependencies":{"playwright":"^1.49.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.1.0","typescript":"^5.3.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-inspector_0.2.1_1760823624417_0.36914888986871675","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ams-dev/browser-inspector","version":"0.2.2","description":"MCP server for browser automation, inspection, monitoring, and performance analysis","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"browser-inspector":"dist/index.js"},"keywords":["mcp","model-context-protocol","browser","automation","puppeteer","inspector","performance","accessibility"],"author":{"name":"mastoica"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/mastoica/vibecoding-mcp-servers.git","directory":"packages/browser-inspector"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","playwright":"^1.49.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.3.0","vitest":"^1.1.0"},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist","test":"echo 'No tests yet'"},"_id":"@ams-dev/browser-inspector@0.2.2","bugs":{"url":"https://github.com/mastoica/vibecoding-mcp-servers/issues"},"homepage":"https://github.com/mastoica/vibecoding-mcp-servers#readme","_integrity":"sha512-byrUXExNg4VKg4+KCS1bDXbwYpNsZTCmeiZwjAK4NZqlRGuwGX350QgsfLjw02OVOhgtO2lGq6hkg+pzL8yVmQ==","_resolved":"/tmp/7b643c610b2e5b369fb601db26f08d95/ams-dev-browser-inspector-0.2.2.tgz","_from":"file:ams-dev-browser-inspector-0.2.2.tgz","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-byrUXExNg4VKg4+KCS1bDXbwYpNsZTCmeiZwjAK4NZqlRGuwGX350QgsfLjw02OVOhgtO2lGq6hkg+pzL8yVmQ==","shasum":"bf55ebc01aeb9aa4d20c69ed9364bb27603068da","tarball":"https://registry.npmjs.org/@ams-dev/browser-inspector/-/browser-inspector-0.2.2.tgz","fileCount":15,"unpackedSize":85586,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFIZwhN0QjgNXwfqhtAg3Ch88jJeweM3qmci322br703AiEA63zAM0PI7tVuV4+D+hDpkZYeXnWG5zCAKm8wy2KjMXo="}]},"_npmUser":{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"},"directories":{},"maintainers":[{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser-inspector_0.2.2_1760824168662_0.8685868191259609"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-18T15:55:02.162Z","modified":"2025-10-18T21:49:29.099Z","0.1.3":"2025-10-18T15:55:02.527Z","0.1.5":"2025-10-18T16:14:01.407Z","0.2.0":"2025-10-18T20:43:05.928Z","0.2.1":"2025-10-18T21:40:24.629Z","0.2.2":"2025-10-18T21:49:28.863Z"},"bugs":{"url":"https://github.com/mastoica/vibecoding-mcp-servers/issues"},"author":{"name":"mastoica"},"license":"MIT","homepage":"https://github.com/mastoica/vibecoding-mcp-servers#readme","keywords":["mcp","model-context-protocol","browser","automation","puppeteer","inspector","performance","accessibility"],"repository":{"type":"git","url":"git+https://github.com/mastoica/vibecoding-mcp-servers.git","directory":"packages/browser-inspector"},"description":"MCP server for browser automation, inspection, monitoring, and performance analysis","maintainers":[{"name":"stoyca_maryus","email":"stoyca_maryus@yahoo.com"}],"readme":"# @ams-dev/browser-inspector\n\nA Model Context Protocol (MCP) server that provides comprehensive browser automation, inspection, monitoring, and performance analysis capabilities using Playwright.\n\n## Features\n\n### 🔌 Connection Modes\n\n- **Attach Mode** - Connect to an existing Chrome/Chromium tab for passive monitoring of your development work\n- **Puppeteer Mode** - Launch a new browser instance for automated testing and form filling\n- Seamlessly switch between modes as needed\n\n### 🌐 Navigation & Inspection\n\n- **Navigate to URLs** - Browse any website\n- **Get Page Content** - Extract full HTML content\n- **Get Page Info** - Retrieve URL and title\n- **Take Screenshots** - Capture viewport or full page screenshots\n\n### 🔍 Monitoring & Debugging\n\n- **Console Logs** - Capture all console messages (errors, warnings, info, debug) with timestamps\n- **Network Requests** - Monitor all HTTP requests with status codes, response times, and sizes\n- **Failed Requests** - Track network failures\n- **Real-time Monitoring** - Logs are captured as they happen\n\n### 🤖 Automation\n\n- **Click Elements** - Interact with page elements using CSS selectors\n- **Type Text** - Fill forms and input fields\n- **Execute JavaScript** - Run custom JavaScript in page context\n- **Wait for Elements** - Wait for dynamic content to load\n\n### ⚡ Performance Analysis\n\n- **Performance Metrics** - Get comprehensive load time metrics including:\n  - DOM Content Loaded time\n  - Full page load time\n  - First Paint (FP)\n  - First Contentful Paint (FCP)\n  - Resource counts (scripts, stylesheets, images)\n  - Total page size\n\n### ♿ Accessibility Testing\n\n- **Accessibility Audit** - Automated accessibility checks including:\n  - Missing alt text on images\n  - Form controls without labels\n  - Missing page title\n  - Missing lang attribute\n  - Heading hierarchy issues\n  - Links without discernible text\n  - Non-semantic interactive elements\n\n### 🍪 State Management\n\n- **Cookie Management** - Get, set, and clear browser cookies\n- **LocalStorage Management** - Get, set, and clear localStorage items\n\n## Installation\n\n```bash\npnpm add @ams-dev/browser-inspector\n```\n\n## Configuration\n\n### Claude Code Setup\n\nAdd to your MCP configuration file:\n\n**macOS**: `~/Library/Application Support/Claude Code/mcp_settings.json`\n**Linux**: `~/.config/claude-code/mcp_settings.json`\n**Windows**: `%APPDATA%\\\\Claude Code\\\\mcp_settings.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"browser-inspector\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ams-dev/browser-inspector\"]\n    }\n  }\n}\n```\n\n## Available Tools\n\n### Connection Management\n\n#### `connect_to_existing_tab`\n\nConnect to an existing Chrome/Chromium tab via remote debugging (Attach Mode).\n\n**Prerequisites**: Chrome must be started with remote debugging enabled:\n\n```bash\n# macOS\n/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --remote-debugging-port=9222\n\n# Linux\ngoogle-chrome --remote-debugging-port=9222\n\n# Windows\nchrome.exe --remote-debugging-port=9222\n```\n\nParameters:\n\n```typescript\n{\n  urlPattern?: string,  // Optional regex to match tab URL (e.g., \"localhost:3000\")\n  port?: number         // Remote debugging port (default: 9222)\n}\n```\n\n#### `list_available_tabs`\n\nList all available tabs in the Chrome instance running with remote debugging.\n\nParameters:\n\n```typescript\n{\n  port?: number  // Remote debugging port (default: 9222)\n}\n```\n\nReturns:\n\n```typescript\nArray<{\n  id: string;\n  url: string;\n  title: string;\n  type: string;\n}>;\n```\n\n#### `disconnect`\n\nDisconnect from the current browser/tab and clean up resources.\n\n#### `get_connection_status`\n\nGet current connection status including:\n\n- Connection mode (puppeteer/attach)\n- Connection state (connected/disconnected)\n- Current URL\n\nReturns:\n\n```typescript\n{\n  mode: 'puppeteer' | 'attach',\n  connected: boolean,\n  currentUrl: string | null\n}\n```\n\n### Navigation & Content\n\n#### `navigate`\n\nNavigate to a URL in the browser. Works in both connection modes.\n\n```typescript\n{\n  url: string;\n} // Must include protocol (https://)\n```\n\n#### `get_page_content`\n\nGet the full HTML content of the current page.\n\n#### `get_page_info`\n\nGet basic information about the current page (URL, title).\n\n#### `screenshot`\n\nTake a screenshot of the current page.\n\n```typescript\n{ fullPage?: boolean } // Default: false (viewport only)\n```\n\n### Monitoring & Debugging\n\n#### `get_console_logs`\n\nGet console logs from the current page.\n\n```typescript\n{\n  limit?: number,           // Maximum number of logs to return\n  filter?: 'error' | 'warning' | 'info' | 'log' | 'debug'\n}\n```\n\n#### `get_network_requests`\n\nGet network requests made by the page.\n\n```typescript\n{\n  limit?: number,           // Maximum number of requests\n  failedOnly?: boolean      // Only return failed requests\n}\n```\n\n#### `clear_logs`\n\nClear all console logs and network request history.\n\n### Automation\n\n#### `execute_script`\n\nExecute JavaScript code in the page context.\n\n```typescript\n{\n  script: string;\n} // JavaScript code to execute\n```\n\n#### `click`\n\nClick an element using a CSS selector.\n\n```typescript\n{\n  selector: string;\n} // CSS selector\n```\n\n#### `type_text`\n\nType text into an input element.\n\n```typescript\n{\n  selector: string,  // CSS selector\n  text: string       // Text to type\n}\n```\n\n#### `wait_for_selector`\n\nWait for an element to appear on the page.\n\n```typescript\n{\n  selector: string,  // CSS selector\n  timeout?: number   // Timeout in ms (default: 5000)\n}\n```\n\n### Performance & Accessibility\n\n#### `get_performance_metrics`\n\nGet comprehensive performance metrics including:\n\n- DOM Content Loaded and Load times\n- First Paint and First Contentful Paint\n- Resource counts and total size\n\nReturns:\n\n```typescript\n{\n  timestamp: number,\n  metrics: {\n    domContentLoaded: number,\n    load: number,\n    firstPaint?: number,\n    firstContentfulPaint?: number\n  },\n  resources: {\n    scriptCount: number,\n    stylesheetCount: number,\n    imageCount: number,\n    totalSize: number\n  }\n}\n```\n\n#### `run_accessibility_audit`\n\nRun an automated accessibility audit on the current page.\n\nReturns:\n\n```typescript\n{\n  timestamp: number,\n  url: string,\n  issues: Array<{\n    type: 'error' | 'warning' | 'info',\n    rule: string,\n    message: string,\n    selector?: string,\n    element?: string\n  }>,\n  summary: {\n    errors: number,\n    warnings: number,\n    info: number\n  }\n}\n```\n\n### State Management\n\n#### `manage_cookies`\n\nManage browser cookies.\n\n```typescript\n{\n  action: 'get' | 'set' | 'clear',\n  name?: string,    // Required for 'set'\n  value?: string,   // Required for 'set'\n  domain?: string,  // Optional for 'set'\n  path?: string     // Optional for 'set'\n}\n```\n\n#### `manage_local_storage`\n\nManage localStorage.\n\n```typescript\n{\n  action: 'get' | 'set' | 'clear',\n  key?: string,    // Required for 'set', optional for 'get'\n  value?: string   // Required for 'set'\n}\n```\n\n## Usage Examples\n\n### Attach to Existing Tab (Development Monitoring)\n\n```\n1. Start Chrome with remote debugging:\n   /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --remote-debugging-port=9222\n\n2. Open your local app in Chrome (e.g., http://localhost:3000)\n\n3. List available tabs\n4. Connect to existing tab with urlPattern \"localhost:3000\"\n5. Get console logs to see errors\n6. Get network requests to check API calls\n7. Run accessibility audit\n```\n\n### Launch New Browser (Automated Testing)\n\n```\n1. Navigate to https://myapp.com  (automatically launches browser)\n2. Get performance metrics\n3. Take a screenshot\n```\n\n### Accessibility Audit\n\n```\n1. Navigate to https://myapp.com\n2. Run accessibility audit\n3. Show me all error-level issues\n```\n\n### Complete E2E Test\n\n```\n1. Navigate to https://myapp.com/login\n2. Type \"user@example.com\" into input[name=\"email\"]\n3. Type \"password123\" into input[name=\"password\"]\n4. Click button[type=\"submit\"]\n5. Wait for .dashboard selector\n6. Get console logs and show errors\n7. Get performance metrics\n8. Run accessibility audit\n```\n\n### Cookie Management\n\n```\n1. Navigate to https://example.com\n2. Manage cookies with action \"get\"\n3. Manage cookies with action \"set\", name \"session\", value \"abc123\"\n4. Manage cookies with action \"clear\"\n```\n\n## Browser Behavior\n\n### Puppeteer Mode (Default)\n\n- Browser launches in **non-headless mode** for visibility\n- Viewport set to 1920x1080 by default\n- Automatically triggered when calling `navigate` without prior connection\n\n### Attach Mode\n\n- Connects to existing Chrome instance via CDP (Chrome DevTools Protocol)\n- Does not control browser lifecycle (browser stays open after disconnect)\n- Requires Chrome started with `--remote-debugging-port=9222`\n- Can attach to specific tab by URL pattern\n\n### Common to Both Modes\n\n- Console logs and network requests automatically captured\n- Each navigation clears previous logs and requests\n- Full access to all browser automation capabilities\n\n## Development\n\nBuild the package:\n\n```bash\npnpm build\n```\n\nWatch mode for development:\n\n```bash\npnpm dev\n```\n\n## Security Considerations\n\n- Launches a real browser with access to any website\n- JavaScript execution happens in page context\n- Reduced security for automation (`--no-sandbox`, `--disable-web-security`)\n- Use caution with untrusted websites and arbitrary JavaScript\n\n## License\n\nMIT\n","readmeFilename":"README.md"}