1234playwriter logfile # prints paths like: # ~/.playwriter/relay-server.log # ~/.playwriter/cdp.jsonl
relay-server.log contains human-readable logs from the extension, MCP, and WebSocket server.cdp.jsonl is a JSON Lines file with every CDP command, response, and event. Long strings are truncated. Use jq to analyze traffic:12345# Count CDP messages by direction and method jq -r '.direction + "\t" + (.message.method // "response")' ~/.playwriter/cdp.jsonl | uniq -c # Find errors grep -i error ~/.playwriter/relay-server.log | tail -20
about:blankchrome.debugger API. Fix: restart Chrome completely (quit and reopen), then click the extension icon again.playwriter serve or just use any CLI command to restart it1playwriter session reset <sessionId>
123456# macOS/Linux PIDS=$(lsof -ti :19988) [ -n "$PIDS" ] && kill $PIDS # Windows (PowerShell) Get-NetTCPConnection -LocalPort 19988 -ErrorAction SilentlyContinue | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
1playwriter -s 1 --timeout 30000 -e 'await page.goto("https://slow-site.com")'
123456# macOS/Linux PIDS=$(lsof -ti :19988) [ -n "$PIDS" ] && kill $PIDS # Or use --replace flag playwriter serve --token MY_SECRET --replace
playwriter command or playwriter serveplaywriter logfile and look for Record start endpoint errorplaywriter recorder stop says Multiple active recordings, it prints each recording id with the current or last page URL. Pick the matching one:12playwriter recorder status playwriter recorder stop 3
evaluate(), click, and navigation hangs until the dialog is closed. Playwright auto-dismisses to prevent the page from freezing.confirm() dialogs always return false (cancelled) unless the agent explicitly handles them.123456// Must be set up BEFORE clicking the button that opens the dialog state.page.on('dialog', async (dialog) => { console.log(`Dialog: ${dialog.type()} - ${dialog.message()}`) await dialog.accept() // or dialog.dismiss() }) await state.page.click('button.delete')