#!/usr/bin/env bash # e2e/run-remote-chrome.sh # Resolve Chrome websocket endpoint from CHROME_HOST (host[:port]) or use CHROME_WS if provided. # Then run e2e/validate-flow-remote-chrome.js with the resolved CHROME_WS env var. set -eu ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT_DIR" || exit 1 if [ -n "${CHROME_WS:-}" ]; then echo "Using provided CHROME_WS" export CHROME_WS="$CHROME_WS" else if [ -z "${CHROME_HOST:-}" ]; then echo "Error: set CHROME_HOST (host[:port]) or CHROME_WS (websocket url)" >&2 exit 2 fi HOST="$CHROME_HOST" # If port not present, default to 9222 if [[ "$HOST" != *":"* ]]; then HOST="$HOST:9222" fi URL="http://${HOST}/json/version" echo "Fetching websocket endpoint from $URL" WS="$(curl -sS "$URL" | node -e "const s=fs.readFileSync(0,'utf8'); try{const j=JSON.parse(s); console.log(j.webSocketDebuggerUrl||'')}catch(e){console.error('failed parse json',e); process.exit(2)}")" || true if [ -z "$WS" ]; then echo "Failed to get webSocketDebuggerUrl from $URL" >&2 curl -sS "$URL" || true exit 3 fi export CHROME_WS="$WS" echo "Resolved CHROME_WS=$CHROME_WS" fi # Run the validator node e2e/validate-flow-remote-chrome.js