AvanzaCast/e2e/run-remote-chrome.sh

35 lines
1.2 KiB
Bash

#!/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