From 7fec6c8a0794bfc9ceb5732bc7bf621ac600cd38 Mon Sep 17 00:00:00 2001 From: ajnart Date: Wed, 29 Jul 2026 21:18:35 +0200 Subject: [PATCH] test: wait for Home Assistant restart --- .../integrations/test/home-assistant.spec.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/integrations/test/home-assistant.spec.ts b/packages/integrations/test/home-assistant.spec.ts index 608af1ce0..5dc2be90e 100644 --- a/packages/integrations/test/home-assistant.spec.ts +++ b/packages/integrations/test/home-assistant.spec.ts @@ -77,9 +77,29 @@ const prepareHomeAssistantContainerAsync = async () => { const startedContainer = await homeAssistantContainer.start(); await startedContainer.exec(["unzip", "-o", "/tmp/config.zip", "-d", "/config"]); await startedContainer.restart(); + await waitForHomeAssistantAsync(startedContainer); return startedContainer; }; +const waitForHomeAssistantAsync = async (container: StartedTestContainer) => { + const url = `http://${container.getHost()}:${container.getMappedPort(8123)}/api/config`; + + for (let attempt = 0; attempt < 40; attempt++) { + try { + const response = await fetch(url, { + headers: { Authorization: `Bearer ${DEFAULT_API_KEY}` }, + }); + if (response.ok) return; + } catch { + // Home Assistant is still restarting. + } + + await new Promise((resolve) => setTimeout(resolve, 500)); + } + + throw new Error("Home Assistant did not become ready after restart"); +}; + const createHomeAssistantContainer = () => { return ( new GenericContainer(IMAGE_NAME)