#!/bin/bash # Función para esperar a que un servicio devuelva un JSON con `{ "status": true }` en la red de Docker run_group() { local testFolder=$1 local parallelIndex=$2 local folderName=$(basename "$testFolder" | tr -cd 'a-zA-Z0-9_-') local uniqueName=lilium-e2e echo "🔹 Lanzado - $folderName (Grupo: $parallelIndex)" # 🚀 Ejecutar Cypress en modo detach y capturar el container ID containerId=$(docker run -d --name ${uniqueName}_${folderName}_cypress \ --network ${uniqueName}_default \ -e TZ=Europe/Madrid \ -e DOCKER=true \ -v "$(pwd)":/app \ -w /app \ cypress-setup \ pnpm exec cypress run --browser chromium --spec test/cypress/integration/${folderName}/**/*.spec.js) # 🔹 Esperar activamente a que el contenedor finalice while true; do container_status=$(docker inspect -f '{{.State.Running}}' "$containerId" 2>/dev/null || echo "false") if [[ "$container_status" == "false" ]]; then break fi sleep 1 done # Verificar el código de salida exit_code=$(docker inspect -f '{{.State.ExitCode}}' "$containerId" 2>/dev/null || echo "1") if [[ "$exit_code" -ne 0 ]]; then # echo "❌ Error en la ejecución de ${folderName} (Exit Code: $exit_code)" docker logs "$containerId" > "test/cypress/docker/logs/${uniqueName}_${folderName}_log" 2>/dev/null || true fi docker rm -f ${uniqueName}_${folderName}_cypress >/dev/null 2>&1 || true next_index=$(cat "$INDEX_FILE") next_index=$((next_index + 1)) echo "$next_index" > "$INDEX_FILE" if [[ $next_index -lt ${#folders[@]} ]]; then run_group "${folders[$next_index]}" $parallelIndex & fi }