test(e2e): full-system browser multi-user acceptance

This commit is contained in:
weichen
2026-09-26 03:28:34 +00:00
parent 078eb4fcf0
commit 4873c5e8b9
15 changed files with 338 additions and 131 deletions
+46 -13
View File
@@ -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"