Automatización de Pruebas con GitHub Actions en Integración Continua
Clase 24 de 25 • Curso de End to End Testing para APIs REST con Node.js
Resumen
¿Cómo integrar pruebas automatizadas en tu repositorio con GitHub Actions?
Integrar pruebas automatizadas en un flujo de trabajo es crucial para asegurar la calidad del código y reducir el tiempo de despliegue. A continuación, te guiaré paso a paso para implementar la automatización de pruebas en tu ciclo de integración continua utilizando GitHub Actions. Esto permitirá ejecutar las pruebas eficientemente en cada commit o push a tu repositorio, haciendo que el proceso de desarrollo sea más fluido y seguro.
¿Cómo crear un flujo de trabajo con GitHub Actions?
Para empezar, deberás crear y configurar archivos de flujo de trabajo dentro de tu proyecto. Estos archivos son esenciales para definir cómo y cuándo se ejecutarán las pruebas. Aquí te explico cómo hacerlo:
-
Crear la carpeta
.github
: Coloca esta carpeta en el mismo nivel que tu directoriosrc
. -
Configurar workflows: Dentro de la carpeta
.github
, crea otra carpeta llamadaworkflows
. Esta es donde almacenaremos los archivos de configuración YAML necesarios. -
Crear el archivo de workflow YAML:
- Crea un archivo llamado
api.continuousintegration.yaml
. El nombre es opcional, pero debe ser un archivo .yaml. - Asigna un nombre a la ejecución, por ejemplo
API
, para identificarlo fácilmente.
- Crea un archivo llamado
name: API
on:
push:
branches:
- '**'
¿Cuándo ejecutar las pruebas?
Es crucial definir bajo qué circunstancias se ejecutarán las pruebas. La configuración básica puede ser:
- Cada push o commit: Define que las pruebas corran en cada push a cualquier branch.
- Pull requests: Considera activar las pruebas en ramas principales como
main
omaster
.
¿Cómo configurar los Jobs en GitHub Actions?
Los jobs son las tareas específicas que GitHub Actions ejecutará. Aquí detallamos cómo configurarlos para las pruebas end-to-end (e2e):
jobs:
end-to-end:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Run end-to-end tests
env: # Definir variables de entorno aquí
VAR1: value1
run: npm run e2e
- Sistema operativo: Las pruebas generalmente corren en una instancia de Ubuntu.
- Node.js instalado: Asegúrate de que la máquina virtual tenga una versión de Node.js lista.
- Clonar el repositorio: Utiliza el step
checkout
para copiar el código en el servidor de integración. - Instalar dependencias: Utiliza
npm ci
para instalar dependencias, optimizado para entornos CI. - Ejecutar las pruebas: Define las variables de entorno necesarias y ejecuta sus pruebas con
npm run e2e
.
¿Cómo manejar las variables de entorno?
Las variables de entorno son necesarias para la configuración y ejecución de pruebas. En entornos de integración continua, estas deben declararse directamente en el archivo YAML:
env:
DATABASE_URL: postgres://user:password@postgres-service/e2etests
NODE_ENV: ci
¿Cómo correr servicios adicionales como bases de datos?
GitHub Actions permite ejecutar servicios externos similares a Docker. Esto se usa para preparar servicios como bases de datos:
services:
postgres:
image: postgres:10
env:
POSTGRES_USER: user
POSTGRES_PASSWORD: secret
ports:
- 5432:5432
- Redes de contenedores: Cambia la conexión de
localhost
al nombre asignado al servicio, por ejemplo,postgres
.
Visualizar y validar las pruebas en GitHub Actions
Una vez configuradas las pruebas, cada push
o commit
mostrará un feedback visual inmediato en GitHub, indicando si las pruebas han pasado o fallado. Esto permite asegurar constantemente la calidad del código con cada contribución al repositorio:
- Estado de la prueba: Verás un check verde para un commit válido y una cruz roja si alguna prueba falló. Esto es invaluable para verificar la estabilidad del proyecto y facilitar colaboraciones entre equipos.
Esta integración con GitHub Actions proporciona un flujo de trabajo más robusto, asegurando que cada nueva línea de código respete las normas de calidad y funcionalidad definidas. No dudes en seguir aprendiendo y mejorando tus habilidades en testing y automatización. ¡El camino apenas comienza!