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:

  1. Crear la carpeta .github: Coloca esta carpeta en el mismo nivel que tu directorio src.

  2. Configurar workflows: Dentro de la carpeta .github, crea otra carpeta llamada workflows. Esta es donde almacenaremos los archivos de configuración YAML necesarios.

  3. 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.
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 o master.

¿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!