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
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
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
Tareas
hardware-testenbuild.ymlque dependa del job de compilaciónscripts/smoke_test.pyque valide:backend_state==WAITINGoCONNECTEDdevice_model!= vacío/,/log,/config) devuelven HTTP 200/configpersiste tras el POSTsecrets.inicontest_ipdisponible en el runner, fuera del repo)hardwareal job para que solo corra en el runner local, no en runners cloudConsideraciones
192.168.254.xsecrets.iniysecrets.hse inyectan como variables de entorno del runner (no en el repo)Referencias