From c99e82a10587090440cacc79510dcfa5faa1361c Mon Sep 17 00:00:00 2001 From: Stephen Zhou Date: Thu, 19 Mar 2026 18:54:43 +0800 Subject: [PATCH] test(web): enable async leak detection and stabilize common modal specs --- .../create/__tests__/common-modal.spec.tsx | 19 ++++++++++++------- web/vite.config.ts | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/web/app/components/plugins/plugin-detail-panel/subscription-list/create/__tests__/common-modal.spec.tsx b/web/app/components/plugins/plugin-detail-panel/subscription-list/create/__tests__/common-modal.spec.tsx index b9953bd249..ef9ad616af 100644 --- a/web/app/components/plugins/plugin-detail-panel/subscription-list/create/__tests__/common-modal.spec.tsx +++ b/web/app/components/plugins/plugin-detail-panel/subscription-list/create/__tests__/common-modal.spec.tsx @@ -1333,12 +1333,9 @@ describe('CommonCreateModal', () => { mockVerifyCredentials.mockImplementation((params, { onSuccess }) => { onSuccess() }) + const builder = createMockSubscriptionBuilder() - render() - - await waitFor(() => { - expect(mockCreateBuilder).toHaveBeenCalled() - }) + render() fireEvent.click(screen.getByTestId('modal-confirm')) @@ -1975,8 +1972,8 @@ describe('CommonCreateModal', () => { }) mockUsePluginStore.mockReturnValue(detailWithCredentials) - // Make createBuilder slow - mockCreateBuilder.mockImplementation(() => new Promise(resolve => setTimeout(resolve, 1000))) + const createBuilderPromise = Promise.withResolvers<{ subscription_builder: TriggerSubscriptionBuilder }>() + mockCreateBuilder.mockImplementation(() => createBuilderPromise.promise) render() @@ -1985,6 +1982,14 @@ describe('CommonCreateModal', () => { // Should still attempt to verify expect(screen.getByTestId('modal')).toBeInTheDocument() + + createBuilderPromise.resolve({ + subscription_builder: createMockSubscriptionBuilder(), + }) + + await waitFor(() => { + expect(mockCreateBuilder).toHaveBeenCalled() + }) }) }) diff --git a/web/vite.config.ts b/web/vite.config.ts index 665d2d0a5f..b1e655199d 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -77,6 +77,7 @@ export default defineConfig(({ mode }) => { test: { environment: 'jsdom', globals: true, + detectAsyncLeaks: true, setupFiles: ['./vitest.setup.ts'], coverage: { provider: 'v8',