📍 Navegación: 🏠 Inicio → Testing → Scripts de Automatización
Analogía: Estos scripts son los mecánicos automáticos del taller de EquineLead. Cada script es como un mecánico especializado que sabe exactamente qué inspeccionar y cómo hacerlo, trabajando sin descanso para asegurar que el auto de carreras esté en perfecto estado.
Esta carpeta contiene scripts bash que automatizan la ejecución de tests para todos los componentes del proyecto EquineLead. Son la columna vertebral de la infraestructura de CI/CD.
scripts/
├── run_all_tests.sh # 🚀 Ejecuta TODOS los tests
├── check_builds.sh # 🔍 Verifica compilación de todos los componentes
├── run_backend_tests.sh # 🔧 Tests del Backend C#
├── run_datascience_tests.sh # 🧠 Tests de Data Science
├── run_scrapper_tests.sh # 🦀 Tests del Scrapper Rust
├── run_frontend_tests.sh # 🎨 Tests del Frontend Web
├── run_integration_tests.sh # 🔗 Tests de integración
├── setup_test_env.sh # ⚙️ Configura entorno de testing
└── README.md # Este archivo
| Script | Mecánico Especializado | Qué Inspecciona |
|---|---|---|
run_all_tests.sh |
👨🔧 Jefe de Taller | Coordina todos los mecánicos |
check_builds.sh |
🔍 Inspector de Calidad | Verifica que todo compile |
run_backend_tests.sh |
🔧 Mecánico del Motor | Inspecciona el motor (Backend) |
run_datascience_tests.sh |
🧠 Técnico Electrónico | Revisa el cerebro (IA/ML) |
run_scrapper_tests.sh |
📡 Especialista en Sensores | Verifica sensores (Scrapper) |
run_frontend_tests.sh |
🎨 Diseñador de Interiores | Inspecciona el tablero (UI) |
# Desde la raíz del proyecto
./tests/scripts/run_all_tests.shQué hace:
- ✅ Ejecuta tests de Backend C#
- ✅ Ejecuta tests de Data Science
- ✅ Ejecuta tests de Scrapper Rust
- ✅ Ejecuta tests de Frontend Web
- ✅ Muestra resumen final con estadísticas
Cuándo usarlo:
- Antes de hacer un Pull Request
- En Jenkins (CI/CD automático)
- Antes de hacer merge a
devomain
./tests/scripts/check_builds.shQué hace:
- ✅ Verifica que Backend C# compile
- ✅ Verifica que Data Science no tenga errores de sintaxis
- ✅ Verifica que Scrapper Rust compile
- ✅ Verifica que Frontend Web compile
Cuándo usarlo:
- Verificación rápida antes de commit
- Cuando solo quieres saber si el código compila
- Como primer paso antes de ejecutar tests
# Backend C#
./tests/scripts/run_backend_tests.sh
# Data Science
./tests/scripts/run_datascience_tests.sh
# Scrapper Rust
./tests/scripts/run_scrapper_tests.sh
# Frontend Web
./tests/scripts/run_frontend_tests.shCuándo usarlo:
- Cuando trabajas solo en un componente
- Para debugging de tests específicos
- Para ahorrar tiempo en desarrollo
Todos los scripts siguen la misma estructura:
#!/bin/bash
# 1. Header con descripción y analogía
###############################################################################
# Script: run_backend_tests.sh
# Propósito: Ejecutar tests del Backend C#
# Analogía: Este script es como el "mecánico del motor"...
###############################################################################
# 2. Configuración de seguridad
set -e # Detener si hay errores
# 3. Colores para output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 4. Verificación de requisitos
if ! command -v dotnet &> /dev/null; then
echo -e "${RED}❌ Error: .NET SDK no está instalado${NC}"
exit 1
fi
# 5. Ejecución de tests
dotnet test
# 6. Reporte de resultados
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ TESTS EXITOSOS${NC}"
else
echo -e "${RED}❌ TESTS FALLARON${NC}"
fiUn script bash es como una "receta automatizada" que le dice a la computadora qué hacer paso a paso.
Ejemplo simple:
#!/bin/bash
echo "Hola, mundo!"
echo "Ejecutando tests..."
npm test
echo "¡Listo!"# Dar permisos de ejecución
chmod +x mi_script.sh
# Ejecutar el script
./mi_script.sh# Verificar si un comando existe
if ! command -v node &> /dev/null; then
echo "Node.js no está instalado"
fi
# Cambiar de directorio
cd /path/to/directory
# Ejecutar un comando
npm test
# Verificar código de salida
if [ $? -eq 0 ]; then
echo "Éxito"
else
echo "Error"
fiPropósito: Ejecuta todos los tests del proyecto en secuencia.
Características:
- ✅ Ejecuta tests en orden lógico
- ✅ Captura resultados de cada componente
- ✅ Muestra resumen final con estadísticas
- ✅ Retorna código de error si algún test falla
Output ejemplo:
🚀 EquineLead - Ejecutando TODOS los tests
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▶ Ejecutando: Backend C#
✅ Backend C# Tests: PASSED
▶ Ejecutando: Data Science
✅ Data Science Tests: PASSED
📊 RESUMEN DE RESULTADOS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Backend C#: PASSED
✅ Data Science: PASSED
✅ Scrapper Rust: PASSED
✅ Frontend Web: PASSED
Total: 4 tests
Pasados: 4
Fallados: 0
🎉 ¡TODOS LOS TESTS PASARON EXITOSAMENTE!
Propósito: Verifica que todos los componentes compilen sin ejecutar tests.
Ventajas:
- ⚡ Más rápido que ejecutar tests completos
- ✅ Detecta errores de compilación temprano
- ✅ Útil para verificación rápida
Cada script individual (run_backend_tests.sh, etc.):
- Verifica requisitos (SDK, runtime, etc.)
- Instala dependencias (si es necesario)
- Compila el proyecto (si aplica)
- Ejecuta los tests
- Reporta resultados con colores
Los Jenkinsfiles llaman a estos scripts:
// En Jenkinsfile
stage('Test') {
steps {
sh './tests/scripts/run_backend_tests.sh'
}
}Ventajas:
- ✅ Mismos scripts localmente y en CI/CD
- ✅ Fácil de debuggear (puedes ejecutar el mismo script)
- ✅ Consistencia entre ambientes
- ✅ Reportes Móviles: Jenkins redirige la salida a archivos
.logque luego son procesados para enviar resúmenes limpios a WhatsApp vianotify_whatsapp.sh.
Solución: Dar permisos de ejecución
chmod +x tests/scripts/*.shSolución: Instalar la herramienta faltante
# Para .NET
sudo apt-get install dotnet-sdk-6.0
# Para Node.js
sudo apt-get install nodejs npm
# Para Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shPosibles causas:
- Variables de entorno diferentes
- Rutas absolutas vs relativas
- Herramientas no instaladas en Jenkins
Solución: Verificar que Jenkins tenga:
- Mismas versiones de SDKs
- Variables de entorno configuradas
- Permisos de ejecución
- Copia la estructura de un script existente
- Actualiza el header con descripción y analogía
- Implementa la lógica específica
- Agrega manejo de errores
- Prueba localmente antes de commit
# Template básico
#!/bin/bash
set -e
echo "🔧 Ejecutando mi nuevo test..."
# Tu lógica aquí
if [ $? -eq 0 ]; then
echo "✅ ÉXITO"
else
echo "❌ ERROR"
exit 1
fi- Bash Scripting Guide
- Advanced Bash-Scripting Guide
- ShellCheck - Linter para bash
- 🏠 README Principal - Visión general del proyecto
- 🏗️ Infraestructura - Arquitectura y deployment
- 🤖 CI/CD y DevOps - Guía maestra de automatización
- 🔧 Jenkins Pipelines - Configuración de pipelines
- 🧪 Infraestructura de Testing - Guía completa de tests
- 📖 Backend C# Tests
- 📖 Data Science Tests
- 📖 Scrapper Rust Tests
- 📖 Frontend Web Tests
Recuerda: Los mecánicos automáticos nunca descansan. ¡Automatiza todo lo que puedas! 🤖✨