test: use immediate for chat refresh race

This commit is contained in:
Peter Steinberger
2026-05-11 18:22:06 +01:00
parent b5bae1b96e
commit 68609ea3bd
+10 -20
View File
@@ -179,23 +179,13 @@ function createDeferred<T>() {
return { promise, resolve, reject };
}
async function raceWithMacrotask(
promise: Promise<unknown>,
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<unknown>): 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([