125 lines
3.9 KiB
Bash
Executable File
125 lines
3.9 KiB
Bash
Executable File
#!/usr/bin/env zsh
|
|
set -euo pipefail
|
|
|
|
# run_e2e_auto.sh
|
|
# Script helper para ejecutar los runners E2E del broadcast-panel (browserless o local)
|
|
# - Crea un OUT_DIR con timestamp
|
|
# - Exporta variables necesarias y ejecuta el runner seleccionado
|
|
# - Guarda stdout/stderr en OUT_DIR/e2e.log
|
|
|
|
# Defaults (puedes sobrescribir por env o con flags)
|
|
BROWSERLESS_WS_DEFAULT="wss://browserless.bfzqqk.easypanel.host"
|
|
BROWSERLESS_TOKEN_DEFAULT=""
|
|
ROOM_DEFAULT="e2e-room"
|
|
TOKEN_SERVER_DEFAULT="https://avanzacast-servertokens.bfzqqk.easypanel.host"
|
|
BROADCAST_URL_DEFAULT="http://avanzacast-studio.bfzqqk.easypanel.host"
|
|
|
|
# Parse args simples
|
|
LOCAL_MODE=0
|
|
SHOW=0
|
|
BROWSERLESS_WS="${BROWSERLESS_WS:-$BROWSERLESS_WS_DEFAULT}"
|
|
BROWSERLESS_TOKEN="${BROWSERLESS_TOKEN:-$BROWSERLESS_TOKEN_DEFAULT}"
|
|
ROOM="${ROOM:-$ROOM_DEFAULT}"
|
|
TOKEN_SERVER="${TOKEN_SERVER:-$TOKEN_SERVER_DEFAULT}"
|
|
BROADCAST_URL="${BROADCAST_URL:-$BROADCAST_URL_DEFAULT}"
|
|
OUT_DIR="${OUT_DIR:-}"
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: run_e2e_auto.sh [--local] [--show] [--room NAME] [--ws URL] [--token TOKEN] [--token-server URL] [--broadcast-url URL]
|
|
|
|
Options:
|
|
--local Use run_local_e2e.js (con --ws o REMOTE_WS para apuntar a Chrome remoto)
|
|
--show Pass flag --show to the local runner (visual mode)
|
|
--room NAME Room name to create (env ROOM)
|
|
--ws URL Browserless/remote ws base (env BROWSERLESS_WS / REMOTE_WS)
|
|
--token TOKEN Browserless token (env BROWSERLESS_TOKEN)
|
|
--token-server URL Token server (env TOKEN_SERVER)
|
|
--broadcast-url URL Broadcast panel URL (env BROADCAST_URL)
|
|
--out DIR Directory where logs/screenshots will be stored (overrides default)
|
|
-h, --help Show this help
|
|
|
|
Examples:
|
|
# Run against browserless remote (recommended)
|
|
BROWSERLESS_TOKEN=xxx ./run_e2e_auto.sh --room iuqiw-aksjka
|
|
|
|
# Run local remote-debugging chrome
|
|
./run_e2e_auto.sh --local --ws http://localhost:9222 --show
|
|
EOF
|
|
}
|
|
|
|
# simple arg loop
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--local) LOCAL_MODE=1; shift ;;
|
|
--show) SHOW=1; shift ;;
|
|
--room) ROOM="$2"; shift 2 ;;
|
|
--ws) BROWSERLESS_WS="$2"; shift 2 ;;
|
|
--token) BROWSERLESS_TOKEN="$2"; shift 2 ;;
|
|
--token-server) TOKEN_SERVER="$2"; shift 2 ;;
|
|
--broadcast-url) BROADCAST_URL="$2"; shift 2 ;;
|
|
--out) OUT_DIR="$2"; shift 2 ;;
|
|
-h|--help) usage; exit 0 ;;
|
|
*) echo "Unknown arg: $1"; usage; exit 2 ;;
|
|
esac
|
|
done
|
|
|
|
# prepare outdir with timestamp if not provided
|
|
if [[ -z "${OUT_DIR}" ]]; then
|
|
TIMESTAMP=$(date -u +"%Y%m%dT%H%M%SZ")
|
|
OUT_DIR="./e2e/out/$TIMESTAMP"
|
|
fi
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
# decide runner
|
|
if [[ "$LOCAL_MODE" -eq 1 ]]; then
|
|
RUNNER_JS="e2e/run_local_e2e.js"
|
|
# If SHOW requested, pass flag through env to the runner via --show
|
|
RUN_CMD=(node "$RUNNER_JS")
|
|
if [[ "$SHOW" -eq 1 ]]; then RUN_CMD+=(--show); fi
|
|
else
|
|
RUNNER_JS="e2e/run_browserless_e2e.js"
|
|
RUN_CMD=(node "$RUNNER_JS")
|
|
fi
|
|
|
|
echo "[run_e2e_auto] Starting E2E runner"
|
|
echo " Runner: $RUNNER_JS"
|
|
echo " OUT_DIR: $OUT_DIR"
|
|
echo " ROOM: $ROOM"
|
|
if [[ -n "$BROWSERLESS_TOKEN" ]]; then
|
|
echo " BROWSERLESS_TOKEN: (present)"
|
|
else
|
|
echo " BROWSERLESS_TOKEN: (empty)"
|
|
fi
|
|
|
|
# Build environment for the child process
|
|
export BROWSERLESS_WS BROWSERLESS_TOKEN ROOM TOKEN_SERVER BROADCAST_URL OUT_DIR
|
|
|
|
# Show final command (for debugging)
|
|
echo "[run_e2e_auto] Executing: ${RUN_CMD[@]}"
|
|
|
|
# Run and tee output
|
|
LOGFILE="$OUT_DIR/e2e.log"
|
|
(
|
|
echo "=== START $(date -u) ==="
|
|
echo "Command: ${RUN_CMD[@]}"
|
|
echo "Environment: BROWSERLESS_WS=$BROWSERLESS_WS ROOM=$ROOM TOKEN_SERVER=$TOKEN_SERVER BROADCAST_URL=$BROADCAST_URL"
|
|
echo "--- OUTPUT ---"
|
|
) > "$LOGFILE"
|
|
|
|
# run and capture both stdout and stderr
|
|
{
|
|
"${RUN_CMD[@]}" 2>&1
|
|
} | tee -a "$LOGFILE"
|
|
EXIT_CODE=${PIPESTATUS[1]:-0}
|
|
|
|
echo "=== FINISH $(date -u) exit=$EXIT_CODE ===" | tee -a "$LOGFILE"
|
|
|
|
if [[ $EXIT_CODE -ne 0 ]]; then
|
|
echo "Runner exited with code $EXIT_CODE. Revisa $LOGFILE y los archivos en $OUT_DIR"
|
|
exit $EXIT_CODE
|
|
fi
|
|
|
|
echo "E2E runner finished OK. Revisa logs y capturas en: $OUT_DIR"
|
|
exit 0
|