diff --git a/test/cypress/docker/run/cleanup.sh b/test/cypress/docker/run/cleanup.sh deleted file mode 100644 index 09ff19c58..000000000 --- a/test/cypress/docker/run/cleanup.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -cleanup() { - echo "⏹ Deteniendo ejecución..." - - # Detener todos los procesos en paralelo - kill "${pids[@]}" 2>/dev/null - for pid in "${pids[@]}"; do - if kill -0 "$pid" 2>/dev/null; then - echo "→ ⏹️ Matando proceso $pid" - kill "$pid" - fi - done - - # Buscar y eliminar contenedores que comiencen con NETWORK - containers=$(docker ps -aq --filter "name=^${NETWORK}") - if [[ -n "$containers" ]]; then - # echo "🧹 Eliminando contenedores: $containers" - docker rm -fv $containers >/dev/null 2>&1 || true - echo "⏹ Detenido y eliminado contenedores correctamente" - fi - exit 0 -} diff --git a/test/cypress/docker/run/main.sh b/test/cypress/docker/run/main.sh deleted file mode 100644 index 859f4a2f4..000000000 --- a/test/cypress/docker/run/main.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/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 --volumes - -# Generar el resumen final -generate_summary - -# Limpiar contenedores al finalizar -cleanup diff --git a/test/cypress/docker/run/run_group.sh b/test/cypress/docker/run/run_group.sh deleted file mode 100644 index b544aa473..000000000 --- a/test/cypress/docker/run/run_group.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/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 -} diff --git a/test/cypress/docker/run/setup.sh b/test/cypress/docker/run/setup.sh deleted file mode 100644 index 0135c3f84..000000000 --- a/test/cypress/docker/run/setup.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -# Configuración: Número de grupos en paralelo (por defecto 4, pero puede sobreescribirse con el primer argumento) -numParallelGroups=${1:-4} -NETWORK="lilium-e2e" -pids=() # Para almacenar los procesos en paralelo - -# Limpiar la carpeta de logs antes de cada ejecución -LOG_DIR="test/cypress/docker/logs" -SCREEN_SHOTS_DIR="test/cypress/screenshots" -if [[ -d "$LOG_DIR" ]]; then - echo "🧹 Borrando logs anteriores en $LOG_DIR..." - echo "🧹 Borrando screenshots anteriores en $SCREEN_SHOTS_DIR..." - sudo rm -rf "$LOG_DIR" - sudo rm -rf "$SCREEN_SHOTS_DIR" -fi -mkdir -p "$LOG_DIR" -mkdir -p "$SCREEN_SHOTS_DIR" - -# Verificar si se pasó una carpeta específica como segundo parámetro -if [[ -n "$2" ]]; then - if [[ -d "test/cypress/integration/$2" ]]; then - folders=() - for ((i = 0; i < numParallelGroups; i++)); do - folders+=("test/cypress/integration/$2/") - done - echo "🔍 Ejecutando '$2' en $numParallelGroups instancias paralelas." - else - echo "❌ La carpeta especificada '$2' no existe." - exit 1 - fi -else - # Obtener todas las carpetas de pruebas si no se especificó una - folders=($(ls -d test/cypress/integration/*/ 2>/dev/null)) - if [[ ${#folders[@]} -eq 0 ]]; then - echo "No se encontraron carpetas de pruebas." - exit 0 - fi -fi - -# Calcular el tamaño de cada grupo -groupSize=$(( (${#folders[@]} + numParallelGroups - 1) / numParallelGroups )) # Redondeo hacia arriba - -# Dividir las carpetas en grupos -groups=() -for ((i = 0; i < ${#folders[@]}; i += groupSize)); do - groups+=("$(printf "%s " "${folders[@]:i:groupSize}")") -done diff --git a/test/cypress/docker/run/summary.sh b/test/cypress/docker/run/summary.sh deleted file mode 100644 index 03e1fb2fb..000000000 --- a/test/cypress/docker/run/summary.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -generate_summary() { - # Verificar si hay archivos en el directorio de logs (indicando fallos) - if [[ -d "$LOG_DIR" && "$(ls -A "$LOG_DIR")" ]]; then - echo "❌ Se encontraron fallos en los tests, revise: $LOG_DIR" - # for log_file in "$LOG_DIR"/*.log; do - # test_name=$(basename "$log_file" .log) - # echo " - $test_name (log en $log_file)" - # done - exit 1 # Devolver código de error para que Jenkins lo detecte - else - echo "✅ Todas las pruebas han pasado correctamente." - fi -} diff --git a/test/cypress/docker/run/wait_for_api_ready.sh b/test/cypress/docker/run/wait_for_api_ready.sh deleted file mode 100644 index 3d8dab48a..000000000 --- a/test/cypress/docker/run/wait_for_api_ready.sh +++ /dev/null @@ -1,29 +0,0 @@ -wait_for_api_ready() { - local service_name="$1" - local container_name="$2" - local port="$3" - local path="$4" - local network="${5,,}" - local max_retries=30 # Máximo de intentos (30 segundos) - local retries=0 - local url="http://$container_name:$port$path" - - # echo "⏳ Esperando a que $service_name devuelva exactamente 'true' en $url..." - - while [[ $retries -lt $max_retries ]]; do - response=$(docker run --rm --network="$network" curlimages/curl -s "$url" || echo "error") - - # echo "🔍 Respuesta recibida de $service_name: '$response'" - - if [[ "$response" == "true" ]]; then - # echo "✅ Conectado al servicio $service_name → $url!" - return 0 - fi - - sleep 1 - ((retries++)) - done - - echo "❌ ERROR: $service_name no respondió con 'true' en $url después de $max_retries intentos." - exit 1 -}