Guías
CI y GitHub Actions
Ejecuta InboxTap en CI con un paso en segundo plano, una comprobación de estado o un servidor programático.InboxTap es un proceso Node 20+ normal: sin imagen Docker, sin contenedor de servicio, nada que almacenar en caché. Todos los proveedores de CI lo ejecutan igual: instalar, iniciar, esperar a la comprobación de estado y ejecutar las pruebas.
Dos formas de ejecutarlo
- Paso en segundo plano. Inicia la CLI antes del paso de pruebas. Esto reproduce el entorno de desarrollo local y proporciona a todas las pruebas de la tarea un servidor compartido en los puertos predeterminados.
- Servidor programático. Inicia
InboxTapServerconapiPort: 0ysmtpPort: 0desde el proceso de configuración global del ejecutor de pruebas, como se muestra en la guía de ejecutores de pruebas. No hay pasos adicionales de CI y los puertos asignados automáticamente nunca pueden colisionar.
El resto de esta página muestra el patrón del paso en segundo plano.
Esperar a la comprobación de estado
Consulta /health antes de ceder el control al paso de pruebas. Detectar un fallo aquí de
inmediato es mejor que depurar el tiempo de espera agotado de la primera prueba:
npx inboxtap &
timeout 10 bash -c 'until curl -fsS http://localhost:8025/health > /dev/null; do sleep 0.1; done'/health responde cuando los procesos de escucha SMTP y HTTP están enlazados, e informa de las
direcciones y del dominio de destinatarios que están en uso.
Flujo de trabajo de GitHub Actions
name: e2e
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- name: Start InboxTap
run: |
npx inboxtap &
timeout 10 bash -c 'until curl -fsS http://localhost:8025/health > /dev/null; do sleep 0.1; done'
- name: Run tests
run: npm test
env:
SMTP_HOST: localhost
SMTP_PORT: "1025"El proceso en segundo plano permanece activo durante el resto de la tarea y el ejecutor lo detiene cuando termina; no hace falta ningún paso de cierre.
Puertos y otros proveedores
Los puertos predeterminados 1025 y 8025 están libres en los ejecutores alojados de GitHub,
GitLab y CircleCI. Mantén InboxTap en la interfaz de bucle local en CI; no hay motivo para ampliar
--smtp-host ni --api-host durante una ejecución de pruebas. En ejecutores autogestionados
compartidos donde puedan colisionar tareas concurrentes, pasa valores explícitos de --smtp-port
y --api-port para cada tarea, o cambia al servidor programático con el puerto 0. Sea cual sea
el proveedor, la secuencia tiene los mismos tres pasos: instalar, iniciar con una comprobación de
estado y probar.