From 5a1712fac64a3f2bd396bb91078bbe8110e86809 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 11 May 2026 18:13:34 +0100 Subject: [PATCH] test: use expect poll for gateway counter wait --- src/gateway/gateway.test.ts | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/gateway/gateway.test.ts b/src/gateway/gateway.test.ts index 47e6536bb1e..1557d2b6d63 100644 --- a/src/gateway/gateway.test.ts +++ b/src/gateway/gateway.test.ts @@ -72,19 +72,33 @@ async function writeWorkspacePlugin(params: { } async function readCounterWithRetry(filePath: string): Promise { - for (let attempt = 0; attempt < 20; attempt += 1) { - try { - const raw = await fs.readFile(filePath, "utf8"); - const parsed = Number.parseInt(raw.trim(), 10); - if (Number.isFinite(parsed)) { - return parsed; - } - } catch { - // Wait briefly for gateway startup to finish plugin registration. - } - await new Promise((resolve) => setTimeout(resolve, 50)); + let counter: number | undefined; + try { + await expect + .poll( + async () => { + try { + const raw = await fs.readFile(filePath, "utf8"); + const parsed = Number.parseInt(raw.trim(), 10); + if (Number.isFinite(parsed)) { + counter = parsed; + return true; + } + } catch { + // Wait briefly for gateway startup to finish plugin registration. + } + return false; + }, + { timeout: 1_000, interval: 50 }, + ) + .toBe(true); + } catch { + throw new Error(`timed out waiting for counter file: ${filePath}`); } - throw new Error(`timed out waiting for counter file: ${filePath}`); + if (counter === undefined) { + throw new Error(`timed out waiting for counter file: ${filePath}`); + } + return counter; } async function setupGatewayTempHome(params: { prefix: string; minimalGateway?: boolean }) {