Saltar a contenido

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-ha para 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 .ambr files.
  • MockConfigEntry + async_setup_component = patterns para integration tests.

Estructura

tests/components/<component>/

Local vs CI

  • Local: pytest tests, prek run --all-files, scope reducido vía tests/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?