test(e2e): full-system browser multi-user acceptance
This commit is contained in:
Regular → Executable
+46
-13
@@ -1,22 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
# Run full-system browser E2E against local dev (main tree serves :8080).
|
||||
# Full-system browser E2E via Playwright Docker (host lacks libatk; no sudo).
|
||||
# Hits host BASE_URL (default http://127.0.0.1:8080) with --network host.
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
WT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
WEB_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
WT="$(cd "$WEB_DIR/.." && pwd)"
|
||||
# Prefer main repo .env (worktree may not have secrets).
|
||||
ROOT="${AGENT_SYSTEM_ROOT:-/home/weichen/projects/Agent-System}"
|
||||
if [[ ! -f "$ROOT/.env" && -f "$WT/.env" ]]; then
|
||||
ROOT="$WT"
|
||||
fi
|
||||
|
||||
ASSETS="${UI_ACCEPTANCE_ASSETS_DIR:-$WT/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e}"
|
||||
IMAGE="${PLAYWRIGHT_IMAGE:-mcr.microsoft.com/playwright:v1.63.0-noble}"
|
||||
BASE_URL="${BASE_URL:-http://127.0.0.1:8080}"
|
||||
mkdir -p "$ASSETS/screenshots"
|
||||
cd "$WT/web"
|
||||
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
source "$ROOT/.env"
|
||||
set +a
|
||||
export BASE_URL="${BASE_URL:-http://127.0.0.1:8080}"
|
||||
export RUN_UI_ACCEPTANCE=1
|
||||
export UI_ACCEPTANCE_ASSETS_DIR="$ASSETS"
|
||||
export DISABLE_DEV_SEED_USERS=true
|
||||
EXTRA=()
|
||||
if [[ -n "${DISPLAY:-}" && "${HEADED:-}" == "1" ]]; then
|
||||
EXTRA+=(--headed --slow-mo 100)
|
||||
|
||||
if [[ -z "${ADMIN_USERNAME:-}" || -z "${ADMIN_PASSWORD:-}" ]]; then
|
||||
echo "ADMIN_USERNAME/ADMIN_PASSWORD required from $ROOT/.env" >&2
|
||||
exit 2
|
||||
fi
|
||||
echo "BASE_URL=$BASE_URL ASSETS=$ASSETS DISPLAY=${DISPLAY:-}(empty=headless)" | tee "$ASSETS/run-env.txt"
|
||||
npx playwright test e2e/full-system-browser-e2e.spec.ts --reporter=list "${EXTRA[@]}" 2>&1 | tee "$ASSETS/playwright.log"
|
||||
|
||||
echo "IMAGE=$IMAGE BASE_URL=$BASE_URL ASSETS=$ASSETS WT=$WT" | tee "$ASSETS/run-env.txt"
|
||||
|
||||
NM_MOUNT=()
|
||||
if [[ -d "$WEB_DIR/node_modules" ]]; then
|
||||
NM_MOUNT=(-v "$WEB_DIR/node_modules:/work/web/node_modules")
|
||||
elif [[ -d "$ROOT/web/node_modules" ]]; then
|
||||
NM_MOUNT=(-v "$ROOT/web/node_modules:/work/web/node_modules")
|
||||
fi
|
||||
|
||||
docker run --rm \
|
||||
--network host \
|
||||
--ipc host \
|
||||
-e BASE_URL="$BASE_URL" \
|
||||
-e RUN_UI_ACCEPTANCE=1 \
|
||||
-e UI_ACCEPTANCE_ASSETS_DIR=/work/assets \
|
||||
-e DISABLE_DEV_SEED_USERS=true \
|
||||
-e ADMIN_USERNAME="$ADMIN_USERNAME" \
|
||||
-e ADMIN_PASSWORD="$ADMIN_PASSWORD" \
|
||||
-e CI=1 \
|
||||
-v "$WEB_DIR:/work/web" \
|
||||
-v "$ASSETS:/work/assets" \
|
||||
"${NM_MOUNT[@]}" \
|
||||
-w /work/web \
|
||||
"$IMAGE" \
|
||||
bash -lc 'if [[ ! -x node_modules/.bin/playwright ]]; then npm ci; fi; npx playwright test e2e/full-system-browser-e2e.spec.ts --reporter=list' \
|
||||
2>&1 | tee "$ASSETS/playwright.log"
|
||||
|
||||
Reference in New Issue
Block a user