/ scripts / browser.sh
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