From 9dc734ce2cf98d4c46f85367d412e410fdad91e3 Mon Sep 17 00:00:00 2001 From: Slava Zavadsky Date: Sat, 8 Aug 2026 13:50:10 -0400 Subject: [PATCH] test(coding-agent): flush immediate before asserting tiny-title prewarm Re-applies the race fix from 7b21716754 that 563f00fe31 dropped as 'unrelated': InteractiveMode.init() defers the prewarm behind setImmediate, and init()'s own awaits are microtasks that can resolve without yielding to the immediate queue, so asserting right after await init() races under CI's chunked load. Flush one immediate tick before asserting. --- .../test/interactive-mode-title-prewarm.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/coding-agent/test/interactive-mode-title-prewarm.test.ts b/packages/coding-agent/test/interactive-mode-title-prewarm.test.ts index 9c8f4d33d..76f1a2661 100644 --- a/packages/coding-agent/test/interactive-mode-title-prewarm.test.ts +++ b/packages/coding-agent/test/interactive-mode-title-prewarm.test.ts @@ -87,6 +87,14 @@ describe("InteractiveMode tiny-title prewarm", () => { const prewarm = vi.spyOn(tinyTitleClient, "prewarm").mockImplementation(() => {}); await mode.init(); + // The prewarm call is deferred behind a setImmediate queued during + // init() (see interactive-mode.ts); init()'s own awaits are promise + // microtasks that can resolve without yielding to the immediate + // queue, so the prewarm may not have fired yet when init() settles. + // Flush one immediate tick before asserting. + const immediateFlushed = Promise.withResolvers(); + setImmediate(immediateFlushed.resolve); + await immediateFlushed.promise; expect(prewarm).toHaveBeenCalledWith("lfm2-350m"); });