This extension provides 33 Playwright browser automation tools for GitHub Copilot Chat, automatically generated from the upstream @playwright/mcp package.
Features
- 🤖 Auto-generated Tools: All 33 tools from Playwright MCP are automatically wrapped as VS Code Language Model tools
- 🔄 Always Up-to-Date: Run
npm run generate to sync with the latest Playwright MCP tools
- 🎯 Categorized: Tools organized by category (core, vision, pdf, testing, tracing)
- 🔧 Configurable: Customize browser type and headless mode via VS Code settings
- 📦 Self-Contained: No external Node.js or MCP server needed
- Navigation:
browser_navigate, browser_close
- Interaction:
browser_click, browser_fill, browser_fill_form
- Inspection:
browser_snapshot, browser_get_network_request
- Dialog handling:
browser_handle_dialog
- And more...
browser_screenshot, browser_screenshot_element, browser_performance_insights
browser_test_get_all_tests, browser_test_run_tests
browser_trace_start, browser_trace_stop
See all tools in VS Code: Copilot Chat > Configure Tools
Usage
- Install the extension
- Open Copilot Chat
- Reference tools in your prompts:
@workspace #browser_navigate Navigate to https://example.com
@workspace #browser_click Click the login button
Configuration
playwrightMcpEmbedded.browser: Browser to use (chrome, firefox, msedge)
playwrightMcpEmbedded.headless: Run browser in headless mode (default: false)
Debugging & Logging
The extension provides detailed logging in the VS Code Output panel:
- Open Output panel: Press
Ctrl+Shift+U (or Cmd+Shift+U on Mac)
- Select "Playwright MCP" from the dropdown in the top-right
The logs show:
- ✅ Tool registration and activation
- 🔧 Browser initialization (config, browser type, headless mode)
- 📊 Each tool invocation with parameters and results
- ❌ Detailed error messages with stack traces
See LOGGING.md for detailed debugging guide.
Localization (EN/RU)
The extension localizes its UI based on the VS Code display language (vscode.env.language):
Russian (ru, ru-RU, …) → tool display names, descriptions, invocation messages, and the activity bar view are shown in Russian.
Any other language → English (default fallback).
package.nls.json / package.nls.ru.json — static UI strings (displayName, userDescription, view titles, welcome content). modelDescription (LLM prompt) intentionally stays English for model stability.
src/i18n/ — runtime dictionaries for invocation messages (tool.<action>.running).
After adding/changing NLS keys, run npm run generate — it fails with a list of missing keys if package.json references a key absent from either dictionary.
Development
Architecture
This extension uses automated code generation to stay synchronized with upstream Playwright MCP:
- scripts/generate-tools.js: Extracts tool metadata from
@playwright/mcp
- scripts/update-package-json.js: Injects tool contributions into
package.json
- src/PlaywrightMCPAdapter.ts: Bridges VS Code tool calls to Playwright MCP server
- src/generated/tools/*.ts: Auto-generated TypeScript wrapper classes
After updating @playwright/mcp dependency:
npm run generate # Regenerate all tool wrappers + NLS integrity check
npm run compile # Compile extension
npm run test:i18n # Run i18n dictionary tests
Tools are regenerated automatically before every compilation via the precompile npm script.
Build
npm install
npm run compile
npm run package # Creates .vsix file