From 460720d0a1e33d4a466a01af9f41180e8141e989 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 25 Apr 2026 03:41:11 +0100 Subject: [PATCH] perf(feishu): avoid unconditional lifecycle waits --- .../test-support/lifecycle-test-support.ts | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/extensions/feishu/src/test-support/lifecycle-test-support.ts b/extensions/feishu/src/test-support/lifecycle-test-support.ts index d4893192eac..a0eb5097fdc 100644 --- a/extensions/feishu/src/test-support/lifecycle-test-support.ts +++ b/extensions/feishu/src/test-support/lifecycle-test-support.ts @@ -298,6 +298,17 @@ export function createFeishuTextMessageEvent(params: { }; } +async function expectFeishuLifecycleEventually( + assertion: () => void | Promise, + timeoutMs: number, +) { + try { + await assertion(); + } catch { + await vi.waitFor(assertion, { timeout: timeoutMs }); + } +} + export async function replayFeishuLifecycleEvent(params: { handler: (data: unknown) => Promise; event: unknown; @@ -305,11 +316,11 @@ export async function replayFeishuLifecycleEvent(params: { waitForSecond?: () => void | Promise; waitTimeoutMs?: number; }) { - const waitOptions = { timeout: params.waitTimeoutMs ?? FEISHU_LIFECYCLE_WAIT_TIMEOUT_MS }; + const waitTimeoutMs = params.waitTimeoutMs ?? FEISHU_LIFECYCLE_WAIT_TIMEOUT_MS; await params.handler(params.event); - await vi.waitFor(params.waitForFirst, waitOptions); + await expectFeishuLifecycleEventually(params.waitForFirst, waitTimeoutMs); await params.handler(params.event); - await vi.waitFor(params.waitForSecond ?? params.waitForFirst, waitOptions); + await expectFeishuLifecycleEventually(params.waitForSecond ?? params.waitForFirst, waitTimeoutMs); } export async function runFeishuLifecycleSequence( @@ -318,9 +329,10 @@ export async function runFeishuLifecycleSequence( ) { for (const [index, deliver] of deliveries.entries()) { await deliver(); - await vi.waitFor(waits[index] ?? waits.at(-1) ?? (() => {}), { - timeout: FEISHU_LIFECYCLE_WAIT_TIMEOUT_MS, - }); + await expectFeishuLifecycleEventually( + waits[index] ?? waits.at(-1) ?? (() => {}), + FEISHU_LIFECYCLE_WAIT_TIMEOUT_MS, + ); } }