From 68609ea3bdd0e29f1c4b17e8fb7ac4f64fc55445 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 11 May 2026 18:22:06 +0100 Subject: [PATCH] test: use immediate for chat refresh race --- ui/src/ui/app-chat.test.ts | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/ui/src/ui/app-chat.test.ts b/ui/src/ui/app-chat.test.ts index 27127ff9d49c..d5650b53eac7 100644 --- a/ui/src/ui/app-chat.test.ts +++ b/ui/src/ui/app-chat.test.ts @@ -179,23 +179,13 @@ function createDeferred() { return { promise, resolve, reject }; } -async function raceWithMacrotask( - promise: Promise, - delayMs: number, -): Promise<"resolved" | "pending"> { - let timer: NodeJS.Timeout | undefined; - try { - return await Promise.race([ - promise.then(() => "resolved" as const), - new Promise<"pending">((resolve) => { - timer = setTimeout(() => resolve("pending"), delayMs); - }), - ]); - } finally { - if (timer) { - clearTimeout(timer); - } - } +async function raceWithMacrotask(promise: Promise): Promise<"resolved" | "pending"> { + return await Promise.race([ + promise.then(() => "resolved" as const), + new Promise<"pending">((resolve) => { + setImmediate(() => resolve("pending")); + }), + ]); } describe("refreshChat", () => { @@ -213,7 +203,7 @@ describe("refreshChat", () => { }); const refresh = refreshChat(host); - const outcome = await raceWithMacrotask(refresh, 0); + const outcome = await raceWithMacrotask(refresh); expect(outcome).toBe("resolved"); expect(host.chatLoading).toBe(true); @@ -255,7 +245,7 @@ describe("refreshChat", () => { }); const refresh = refreshChat(host, { awaitHistory: true, scheduleScroll: false }); - const pendingOutcome = await raceWithMacrotask(refresh, 0); + const pendingOutcome = await raceWithMacrotask(refresh); expect(pendingOutcome).toBe("pending"); history.resolve({ @@ -565,7 +555,7 @@ describe("refreshChat", () => { sessionKey: "main", }); - const outcome = await raceWithMacrotask(refreshChat(host), 20); + const outcome = await raceWithMacrotask(refreshChat(host)); expect(outcome).toBe("resolved"); expect(host.chatMessages).toEqual([