salix-front/test/cypress/docker/run/run_group.sh

49 lines
1.7 KiB
Bash

#!/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 --no-exit)
# 🔹 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 "❌ Fallos - ${folderName}"
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
}