Skip to content

ci: self-hosted runner for hardware-in-the-loop tests (Phase 2) #11

Description

@mcamposv

Contexto

La fase 1 de CI (#10) cubre la compilación en GitHub Actions (runners cloud). Esta issue plantea la fase 2: tests reales sobre hardware ESP32 con un runner local.

Objetivo

Ejecutar un smoke test automático sobre el proxy de test (192.168.254.213) + emulador EMMA (192.168.254.212) en cada PR, sin intervención manual.

Arquitectura propuesta

GitHub PR  →  GitHub Actions  →  self-hosted runner (máquina local)
                                        │
                                        ├─ Compila firmware
                                        ├─ Flashea por OTA al proxy de test (.213)
                                        ├─ Espera arranque (~15s)
                                        └─ Smoke test HTTP contra /api/status

Tareas

  • Instalar y registrar el GitHub Actions self-hosted runner en la máquina local
  • Añadir job hardware-test en build.yml que dependa del job de compilación
  • Crear scripts/smoke_test.py que valide:
    • backend_state == WAITING o CONNECTED
    • device_model != vacío
    • Las tres páginas web (/, /log, /config) devuelven HTTP 200
    • El cambio de idioma desde /config persiste tras el POST
  • Flash OTA al proxy de test desde el runner (requiere secrets.ini con test_ip disponible en el runner, fuera del repo)
  • Añadir label hardware al job para que solo corra en el runner local, no en runners cloud

Consideraciones

  • El runner necesita acceso de red a 192.168.254.x
  • secrets.ini y secrets.h se inyectan como variables de entorno del runner (no en el repo)
  • El ESP32 de test queda dedicado a CI — no usarlo para pruebas manuales mientras corre el pipeline

Referencias

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions