Source: HA Developer Docs — Testing¶
Docs canónicas del HA team sobre testing. Caveat importante: cubre testing de CORE HA y custom components, NO automations de usuario. Stack canónico: pytest + prek + snapshot tests (.ambr files). Patrón aplicable a custom components que el usuario eventualmente quiera escribir; para automations propias, hay que adaptar (gap a llenar).
Por qué entró al wiki¶
- Pregunta guía Q4 (testing). Base canónica del ecosistema HA.
- Conexión con digital twin (gap alta abierto del usuario): el twin sirve para correr pytest contra mocked HA + scenarios de Z2M sintéticos.
- Define el stack base (pytest + prek + snapshot) que el agente AI puede usar en CI (Q10).
Páginas derivadas¶
- ../analysis/q4-testing-strategy-v1 — síntesis para el setup del usuario (testing + digital twin combinados).
- gap: entidad
entities/pytest-hapara el framework concreto cuando se profundice.
Take-aways¶
Stack canónico¶
- pytest = ejecutor.
- prek = linter (corre en commits + manual).
- Snapshot testing = aprobacion de outputs via
.ambrfiles. - MockConfigEntry + async_setup_component = patterns para integration tests.
Estructura¶
Local vs CI¶
- Local:
pytest tests,prek run --all-files, scope reducido víatests/components/<x>/. - CI: matriz multi-Python version, suite completa pre-merge.
Lo que NO cubre¶
"The documentation does not address testing user-created automations — it focuses exclusively on Home Assistant core and integration development patterns."
Para automations del usuario hay que:
1. Adaptar el pytest infra fuera del scope documentado.
2. Mockar hass (la HA instance).
3. Inyectar state changes y assert side effects.
4. O usar el digital twin como "integration test environment" en vez de mocks.
Aplicación al setup del usuario¶
Estrategia recomendada (a expandir en ../analysis/q4-testing-strategy-v1):
| Test Type | Cómo | Donde corre |
|---|---|---|
| Unit tests de automations | pytest + hass-mock | CI (GitHub Actions) en cada PR |
| Integration tests | Twin HA Container + MQTT injection | Mini-PC; trigger manual o por agente |
| Smoke tests post-deploy | Script bash que prueba 3-5 essentials | Cron en mini-PC |
| Snapshot tests de state | pytest --snapshot-update | CI |
| Multi-agent review (Dan Malone) | 5 agentes paralelos | Quarterly cron |
Abierto / gaps¶
- Buscar repo público de tests de automations HA del usuario (no del HA core team). Search candidato: github topic "homeassistant-tests".
- ¿Cómo se invoca pytest en un HA OS / appliance? Probablemente requiere container externo con HA mock.
- Patrón concreto para usar
hass-mock(lib) + pytest aplicada a YAML real del usuario. - Comparar prek vs ruff vs otros lints — el HA team usa prek, ¿qué offsets tiene?