From ddedcac54a0f079e7645b7a11aa5394a9bb24306 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 25 Apr 2026 00:49:07 +0100 Subject: [PATCH] test: stabilize full-suite lanes --- extensions/slack/src/monitor.test-helpers.ts | 24 +++++++++++++++++++- test/scripts/managed-child-process.test.ts | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/extensions/slack/src/monitor.test-helpers.ts b/extensions/slack/src/monitor.test-helpers.ts index 0016aac6641..7f4c5cf3484 100644 --- a/extensions/slack/src/monitor.test-helpers.ts +++ b/extensions/slack/src/monitor.test-helpers.ts @@ -1,6 +1,7 @@ import { Mock, vi } from "vitest"; type SlackHandler = (args: unknown) => Promise; +type SlackMiddleware = (args: { next: () => Promise } & Record) => unknown; type SlackProviderMonitor = (params: { botToken: string; appToken: string; @@ -255,12 +256,33 @@ vi.mock("@slack/bolt", () => { class App { client = slackClient; receiver: unknown; + middlewares: SlackMiddleware[] = []; constructor(args?: { receiver?: unknown }) { this.receiver = args?.receiver; } + use(middleware: SlackMiddleware) { + this.middlewares.push(middleware); + } event(name: string, handler: SlackHandler) { - handlers.set(name, handler); + handlers.set(name, async (args: unknown) => { + const eventArgs = + args && typeof args === "object" && !Array.isArray(args) + ? (args as Record) + : {}; + const run = async (index: number): Promise => { + const middleware = this.middlewares[index]; + if (!middleware) { + await handler(args); + return; + } + await middleware({ + ...eventArgs, + next: () => run(index + 1), + }); + }; + await run(0); + }); } command() { /* no-op */ diff --git a/test/scripts/managed-child-process.test.ts b/test/scripts/managed-child-process.test.ts index 0f1702c12f5..0759cb86c19 100644 --- a/test/scripts/managed-child-process.test.ts +++ b/test/scripts/managed-child-process.test.ts @@ -65,7 +65,7 @@ process.exitCode = await runManagedCommand({ const result = await waitForClose(runner); expect(result).toEqual({ code: 143, signal: null }); - await waitFor(() => !isProcessAlive(childPid)); + await waitFor(() => !isProcessAlive(childPid), 10_000); } finally { if (runner.pid && isProcessAlive(runner.pid)) { process.kill(runner.pid, "SIGKILL");