browser.sh
1 #!/bin/bash 2 # Bob Browser Tool — headless browser for web UI testing 3 # 4 # Preferred: playwright-cli (interactive, supports snapshots, navigation) 5 # browser.sh pw [playwright-cli args...] 6 # browser.sh pw open http://127.0.0.1:3000 7 # browser.sh pw screenshot --filename=test.png 8 # browser.sh pw close 9 # 10 # Fallback: raw Chromium (simple one-shot screenshot/content) 11 # browser.sh screenshot <url> [output.png] 12 # browser.sh content <url> 13 # browser.sh pdf <url> [output.pdf] 14 15 CHROMIUM="/nix/store/jhmp9kj913vng0asrcpsi2fxvwj9vv0s-chromium-146.0.7680.153/bin/chromium" 16 COMMON_ARGS="--headless --no-sandbox --disable-gpu --disable-software-rasterizer" 17 18 case "$1" in 19 pw) 20 shift 21 exec npx playwright-cli "$@" 22 ;; 23 screenshot) 24 URL="${2:-http://127.0.0.1:8888}" 25 OUTPUT="${3:-/tmp/browser-screenshot.png}" 26 $CHROMIUM $COMMON_ARGS --screenshot="$OUTPUT" --window-size=1280,800 "$URL" 2>/dev/null 27 echo "$OUTPUT" 28 ;; 29 content) 30 URL="${2:-http://127.0.0.1:8888}" 31 $CHROMIUM $COMMON_ARGS --dump-dom "$URL" 2>/dev/null 32 ;; 33 pdf) 34 URL="${2:-http://127.0.0.1:8888}" 35 OUTPUT="${3:-/tmp/browser-page.pdf}" 36 $CHROMIUM $COMMON_ARGS --print-to-pdf="$OUTPUT" "$URL" 2>/dev/null 37 echo "$OUTPUT" 38 ;; 39 *) 40 echo "Usage: browser.sh [pw|screenshot|content|pdf] <url> [output]" 41 echo "" 42 echo " pw — interactive playwright-cli (preferred for testing)" 43 echo " screenshot — one-shot Chromium screenshot" 44 echo " content — dump DOM content" 45 echo " pdf — render page to PDF" 46 ;; 47 esac