fix: harnais E2E local anti-blocage BUG-080
This commit is contained in:
@@ -23,6 +23,21 @@ cd "$(dirname "$0")/.."
|
||||
PORT="${E2E_PORT:-2029}"
|
||||
BASE_URL="http://127.0.0.1:$PORT"
|
||||
SERVER_LOG="data/e2e-server.log"
|
||||
# BUG-080 : garde-fous anti-blocage (un run E2E ne doit jamais pendre toute la nuit).
|
||||
E2E_TIMEOUT_SEC="${E2E_TIMEOUT_SEC:-900}"
|
||||
E2E_BROWSER_INSTALL_TIMEOUT_SEC="${E2E_BROWSER_INSTALL_TIMEOUT_SEC:-600}"
|
||||
|
||||
# Exécute "$@" avec un timeout dur (exit 124 comme `timeout`), sans timeout si
|
||||
# la commande `timeout` est absente (ex. macOS sans coreutils).
|
||||
run_with_timeout() {
|
||||
local limit="$1"; shift
|
||||
if command -v timeout &>/dev/null; then
|
||||
timeout "$limit" "$@"
|
||||
else
|
||||
echo "[WARN] commande 'timeout' absente : $1 sans limite de ${limit}s" >&2
|
||||
"$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# ----- Prérequis -----
|
||||
if ! command -v uv &>/dev/null; then
|
||||
@@ -102,8 +117,14 @@ curl -sf "$BASE_URL/api/health" >/dev/null || {
|
||||
}
|
||||
|
||||
# ----- Browsers Playwright (no-op s'ils sont déjà installés) -----
|
||||
npx playwright install chromium
|
||||
# BUG-080 : `--yes` (jamais de prompt interactif npx qui pend), skip si un
|
||||
# chromium est déjà présent (sauf E2E_INSTALL_BROWSERS=1), timeout dédié.
|
||||
if [[ "${E2E_INSTALL_BROWSERS:-0}" == "1" ]] || ! ls -d ~/.cache/ms-playwright/chromium-*/chrome-linux/chrome &>/dev/null; then
|
||||
run_with_timeout "$E2E_BROWSER_INSTALL_TIMEOUT_SEC" npx --yes playwright install chromium
|
||||
else
|
||||
echo "[INFO] Chromium Playwright déjà installé, étape sautée (E2E_INSTALL_BROWSERS=1 pour forcer)."
|
||||
fi
|
||||
|
||||
# ----- Exécution de la suite (projet CI : chromium-desktop) -----
|
||||
echo "[INFO] BASE_URL=$BASE_URL npx playwright test --project=chromium-desktop $*"
|
||||
BASE_URL="$BASE_URL" npx playwright test --project=chromium-desktop "$@"
|
||||
BASE_URL="$BASE_URL" run_with_timeout "$E2E_TIMEOUT_SEC" npx --yes playwright test --project=chromium-desktop "$@"
|
||||
|
||||
Reference in New Issue
Block a user