#!/usr/bin/env bash # Espera a que backend y frontend estén sirviendo tras `docker compose up`. # # Uso en Jenkins: el wait real corre dentro del contenedor Playwright con # --network host (ver Jenkinsfile). Este script es para dev/local cuando los # puertos 8000/5173 sí son alcanzables desde el shell que lo invoca. set -euo pipefail BACKEND_URL="${BACKEND_URL:-http://localhost:8000/api/health}" FRONTEND_URL="${FRONTEND_URL:-http://localhost:5173/}" BACKEND_MAX_SEC="${BACKEND_MAX_SEC:-900}" FRONTEND_MAX_SEC="${FRONTEND_MAX_SEC:-300}" STEP="${STEP:-5}" wait_for() { local url="$1" max="$2" label="$3" echo "== wait: ${label} ${url} ==" local i=0 until curl -fsS --connect-timeout 3 --max-time 5 "$url" >/dev/null 2>&1; do i=$((i + STEP)) if [ "$i" -ge "$max" ]; then echo "ERROR: timeout esperando ${label} ${url} (${max}s)" return 1 fi if [ $((i % 30)) -eq 0 ]; then echo " ...esperando ${label} (${i}/${max}s)" fi sleep "$STEP" done echo "== ${label} listo tras ${i}s ==" } wait_for "$BACKEND_URL" "$BACKEND_MAX_SEC" "backend" wait_for "$FRONTEND_URL" "$FRONTEND_MAX_SEC" "frontend"