-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed
Description
Environment
- OS: Windows 11 Home (10.0.26200)
- Bun: 1.2.20
- gstack: 0.3.9 (commit bb46ca6)
- Playwright: 1.58.2
- Chromium: headless_shell-1155 + chromium-1155 (both tested)
Problem
browse goto <url> hangs indefinitely on Windows. The server never starts — it gets stuck at chromium.launch({ headless: true }) in browser-manager.ts:45.
Root Cause
Bun's child process pipe implementation on Windows does not properly handle Playwright's --remote-debugging-pipe transport. Chromium launches (PID visible) but the DevTools Protocol pipe never connects, causing a timeout.
Reproduction
# This hangs on Windows with Bun:
cd ~/.claude/skills/gstack
bun -e "import { chromium } from 'playwright'; const b = await chromium.launch({ headless: true, timeout: 15000 }); console.log('ok'); await b.close();"
# → Timeout 15000ms exceeded
# Same code works perfectly with Node:
node -e "import('playwright').then(async({chromium})=>{const b=await chromium.launch({headless:true,timeout:15000});console.log('ok');await b.close();})"
# → okTested with both chromium_headless_shell-1155 and chromium-1155 (full browser). Also tried channel: 'chrome' (system Chrome). All hang with Bun, all work with Node.
Suggested Fixes
- On Windows, spawn the server with
node+tsxinstead ofbun— requires makingserver.tsruntime-agnostic (replacingBun.servewith Node HTTP,Bun.spawnwithchild_process, etc.) - Use
playwright.chromium.connectOverCDP()with websocket instead of pipe transport — would bypass the broken pipe - Wait for Bun fix — this is ultimately a Bun issue with Windows named pipes
Workaround
Created a standalone Node-based browse wrapper that uses Node + Playwright directly. Works but lacks the full gstack browse feature set.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels