49 lines
1.7 KiB
Bash
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
|
|
}
|