From 0ebd7df9dc69aabdc1630dd8c6e00a16d66950a5 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Sat, 28 Mar 2026 16:46:21 +0530 Subject: [PATCH] test(feishu): stabilize bot-menu lifecycle replay --- .../src/monitor.bot-menu.lifecycle.test.ts | 1 + test/helpers/extensions/feishu-lifecycle.ts | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/extensions/feishu/src/monitor.bot-menu.lifecycle.test.ts b/extensions/feishu/src/monitor.bot-menu.lifecycle.test.ts index b4379609ccf..17a9e77f2f2 100644 --- a/extensions/feishu/src/monitor.bot-menu.lifecycle.test.ts +++ b/extensions/feishu/src/monitor.bot-menu.lifecycle.test.ts @@ -166,6 +166,7 @@ describe("Feishu bot-menu lifecycle", () => { event, dispatchReplyFromConfigMock, createFeishuReplyDispatcherMock, + waitTimeoutMs: 5_000, }); expect(lastRuntime?.error).not.toHaveBeenCalled(); diff --git a/test/helpers/extensions/feishu-lifecycle.ts b/test/helpers/extensions/feishu-lifecycle.ts index 83287cc0458..e07b83c3199 100644 --- a/test/helpers/extensions/feishu-lifecycle.ts +++ b/test/helpers/extensions/feishu-lifecycle.ts @@ -321,17 +321,27 @@ export async function expectFeishuReplyPipelineDedupedAcrossReplay(params: { event: unknown; dispatchReplyFromConfigMock: ReturnType; createFeishuReplyDispatcherMock: ReturnType; + waitTimeoutMs?: number; }) { + const waitTimeoutMs = params.waitTimeoutMs; await replayFeishuLifecycleEvent({ handler: params.handler, event: params.event, - waitForFirst: () => { - expect(params.dispatchReplyFromConfigMock).toHaveBeenCalledTimes(1); - }, - waitForSecond: () => { - expect(params.dispatchReplyFromConfigMock).toHaveBeenCalledTimes(1); - expect(params.createFeishuReplyDispatcherMock).toHaveBeenCalledTimes(1); - }, + waitForFirst: () => + vi.waitFor( + () => { + expect(params.dispatchReplyFromConfigMock).toHaveBeenCalledTimes(1); + }, + waitTimeoutMs == null ? undefined : { timeout: waitTimeoutMs }, + ), + waitForSecond: () => + vi.waitFor( + () => { + expect(params.dispatchReplyFromConfigMock).toHaveBeenCalledTimes(1); + expect(params.createFeishuReplyDispatcherMock).toHaveBeenCalledTimes(1); + }, + waitTimeoutMs == null ? undefined : { timeout: waitTimeoutMs }, + ), }); }