handle connecting ws

This commit is contained in:
Tommy D. Rossi
2026-01-01 03:12:30 +01:00
parent ef6ab59351
commit 90179dea17
2 changed files with 39 additions and 0 deletions
+24
View File
@@ -93,6 +93,30 @@ await browser.close()
server.close()
```
### Environment Variables
#### `PLAYWRITER_AUTO_ENABLE`
When set, the MCP will automatically create an initial tab when a Playwright client connects and no tabs are currently enabled. This is useful for fully automated workflows where you don't want to manually click the extension icon.
```json
{
"mcpServers": {
"playwriter": {
"command": "npx",
"args": ["playwriter@latest"],
"env": {
"PLAYWRITER_AUTO_ENABLE": "1"
}
}
}
}
```
With this setting, when your AI agent starts, it will immediately have a page to work with without requiring manual extension activation.
**Note:** The auto-created tab starts at `about:blank`. Your agent can then navigate it to any URL.
## Comparison
### vs Playwright MCP
+15
View File
@@ -560,6 +560,21 @@ function handleConnectionClose(reason: string, code: number): void {
}
async function ensureConnection(): Promise<void> {
// If already connecting, wait for that connection to complete instead of creating a new one
// This prevents "Extension Replaced" errors when multiple callers race to connect
if (ws?.readyState === WebSocket.CONNECTING) {
logger.debug('Connection already in progress, waiting for it to complete')
const existingWs = ws
await new Promise<void>((resolve) => {
const checkInterval = setInterval(() => {
if (existingWs.readyState !== WebSocket.CONNECTING) {
clearInterval(checkInterval)
resolve()
}
}, 100)
})
}
if (ws?.readyState === WebSocket.OPEN) {
logger.debug('Connection already exists, reusing')
return