#!/bin/bash # Cargar módulos source "$(dirname "$0")/cleanup.sh" source "$(dirname "$0")/setup.sh" source "$(dirname "$0")/run_group.sh" source "$(dirname "$0")/summary.sh" source "$(dirname "$0")/wait_for_api_ready.sh" # Manejo de señales para limpiar si se interrumpe el script trap cleanup SIGINT # Docker setup echo "💿 Construyendo CypressSetup" docker build -t cypress-setup:latest -f ./test/cypress/Dockerfile . >/dev/null 2>&1 echo "💿 Descargando imágenes actualizadas" docker-compose -f docker-compose.e2e.yml pull back front vn-database echo "💿 Levantando los contenedores" docker-compose -p lilium-e2e -f docker-compose.e2e.yml up -d >/dev/null 2>&1 wait_for_api_ready "Aplicación" "front" 9000 "/api/Applications/status" "lilium-e2e_default" echo "📀 Lanzando E2E" # Lista global de PIDs declare -A running # Índice de ejecución de carpetas INDEX_FILE="/tmp/index_file" index=$((numParallelGroups - 1)) echo $index > "$INDEX_FILE" # 🔹 Lanzar los primeros `numParallelGroups` procesos for ((i = 0; i < numParallelGroups && i < ${#folders[@]}; i++)); do run_group "${folders[$i]}" $i & done # 🔹 Esperar a que todos los procesos terminen while [[ $((index + 2)) -lt ${#folders[@]} ]] || [[ $(docker ps --filter "ancestor=cypress-setup" --format "{{.ID}}" | wc -l) -gt 0 ]]; do # Actualizar index desde el archivo compartido next_index=$(cat "$INDEX_FILE") index=$next_index sleep 1 # Pausa antes de volver a comprobar done docker-compose -p lilium-e2e -f docker-compose.e2e.yml down # Generar el resumen final generate_summary # Limpiar contenedores al finalizar cleanup