From 2752ce2f6a5c4225e0d4c17a7bfa073bc30f5c90 Mon Sep 17 00:00:00 2001 From: Enmanuel Date: Sun, 8 Mar 2026 14:35:03 +0000 Subject: [PATCH] feat: script de orquestacion E2E run.sh Completa el placeholder de 0022a con el flujo completo: 1. Verifica agentes corriendo (via ps.sh) 2. Levanta Element Web si no esta activo 3. Ejecuta npx playwright test 4. Genera reporte HTML en caso de fallos 5. Teardown de Element Web 6. Retorna exit code de Playwright Soporte --headed para debug local con DISPLAY. Co-Authored-By: Claude Opus 4.6 --- dev-scripts/e2e/run.sh | 118 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 113 insertions(+), 5 deletions(-) diff --git a/dev-scripts/e2e/run.sh b/dev-scripts/e2e/run.sh index 0a056c6..82ef11a 100755 --- a/dev-scripts/e2e/run.sh +++ b/dev-scripts/e2e/run.sh @@ -1,19 +1,42 @@ #!/usr/bin/env bash # run.sh — ejecutar E2E tests con Playwright +# +# Uso: +# ./dev-scripts/e2e/run.sh # headless (default) +# ./dev-scripts/e2e/run.sh --headed # con browser visible (requiere DISPLAY) +# set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" E2E_DIR="$REPO_ROOT/e2e" +ELEMENT_SCRIPT="$E2E_DIR/scripts/setup-element.sh" +PS_SCRIPT="$REPO_ROOT/dev-scripts/server/ps.sh" -# Verificar dependencias instaladas +HEADED=false +EXTRA_ARGS=() + +for arg in "$@"; do + case "$arg" in + --headed) + HEADED=true + ;; + *) + EXTRA_ARGS+=("$arg") + ;; + esac +done + +# --- Verificaciones previas --- + +# 1. Verificar dependencias instaladas if [ ! -d "$E2E_DIR/node_modules" ]; then echo "ERROR: node_modules no encontrado. Ejecutar primero:" echo " ./dev-scripts/e2e/install.sh" exit 1 fi -# Verificar .env +# 2. Verificar .env if [ ! -f "$E2E_DIR/.env" ]; then echo "ERROR: e2e/.env no encontrado. Crear desde el template:" echo " cp e2e/.env.example e2e/.env" @@ -21,6 +44,91 @@ if [ ! -f "$E2E_DIR/.env" ]; then exit 1 fi -echo "Los tests E2E se agregan en el issue 0022c." -echo "Cuando esten listos, ejecutar:" -echo " cd $E2E_DIR && npx playwright test" +# 3. Verificar que los agentes estan corriendo +echo "=== Verificando agentes ===" +if [ -x "$PS_SCRIPT" ]; then + if ! "$PS_SCRIPT" 2>/dev/null | grep -q "running"; then + echo "WARN: el launcher no parece estar corriendo." + echo " Iniciar con: ./dev-scripts/server/start.sh" + echo " Continuando de todas formas..." + else + echo "Launcher corriendo OK" + fi +else + echo "WARN: no se encontro ps.sh, no se puede verificar el estado de los agentes" +fi + +# --- Element Web --- + +echo "" +echo "=== Element Web ===" +ELEMENT_STARTED_BY_US=false + +if [ -x "$ELEMENT_SCRIPT" ]; then + if "$ELEMENT_SCRIPT" status 2>/dev/null | grep -q "corriendo\|running\|listening"; then + echo "Element Web ya esta corriendo" + else + echo "Levantando Element Web..." + "$ELEMENT_SCRIPT" start + ELEMENT_STARTED_BY_US=true + # Esperar a que el servidor este listo + sleep 2 + fi +else + echo "WARN: setup-element.sh no encontrado. Asegurarse de que Element Web esta corriendo." +fi + +# --- Ejecutar tests --- + +echo "" +echo "=== Ejecutando E2E tests ===" + +PLAYWRIGHT_ARGS=() +if [ "$HEADED" = true ]; then + if [ -z "${DISPLAY:-}" ] && [ -z "${WAYLAND_DISPLAY:-}" ]; then + echo "WARN: --headed solicitado pero no se detecta DISPLAY. Ejecutando headless." + else + PLAYWRIGHT_ARGS+=("--headed") + fi +fi + +# Agregar argumentos extra del usuario +if [ ${#EXTRA_ARGS[@]} -gt 0 ]; then + PLAYWRIGHT_ARGS+=("${EXTRA_ARGS[@]}") +fi + +EXIT_CODE=0 +cd "$E2E_DIR" +npx playwright test "${PLAYWRIGHT_ARGS[@]}" || EXIT_CODE=$? + +# Generar reporte HTML si hay fallos +if [ "$EXIT_CODE" -ne 0 ]; then + echo "" + echo "=== Generando reporte HTML ===" + npx playwright show-report --host 0.0.0.0 --port 0 2>/dev/null & + REPORT_PID=$! + sleep 1 + kill "$REPORT_PID" 2>/dev/null || true + echo "Reporte disponible en: $E2E_DIR/playwright-report/" + echo " Para verlo: cd e2e && npx playwright show-report" +fi + +# --- Teardown --- + +if [ "$ELEMENT_STARTED_BY_US" = true ]; then + echo "" + echo "=== Deteniendo Element Web ===" + "$ELEMENT_SCRIPT" stop 2>/dev/null || true +fi + +# --- Resultado --- + +echo "" +if [ "$EXIT_CODE" -eq 0 ]; then + echo "=== Todos los tests pasaron ===" +else + echo "=== Algunos tests fallaron (exit code: $EXIT_CODE) ===" + echo "Ver screenshots en: $E2E_DIR/test-results/" +fi + +exit "$EXIT_CODE"