From 0eb89546c237200c00b3a607fba348d894b0b356 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 14 Jun 2026 01:46:21 +0200 Subject: [PATCH] test(ui-web): drain dynamic imports globally for async components (#1893) Add vi.dynamicImportSettled() to the global afterEach hook so pending dynamic imports (defineAsyncComponent loaders, lazy routes) settle before Vitest tears down the test environment. Prevents EnvironmentTeardownError on transitive .vue import chains observed under filtered runs (e.g. -t "should open authorize dialog"). Covers App.vue, ModernLayout.vue, and any future component using defineAsyncComponent or lazy-loaded routes. --- ui/web/tests/setup.ts | 3 ++- ui/web/tests/unit/skins/modern/ModernLayout.test.ts | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/web/tests/setup.ts b/ui/web/tests/setup.ts index b1a7c710..b3585e35 100644 --- a/ui/web/tests/setup.ts +++ b/ui/web/tests/setup.ts @@ -26,6 +26,7 @@ vi.mock('vue-toast-notification', () => ({ useToast: () => toastMock, })) -afterEach(() => { +afterEach(async () => { localStorage.clear() + await vi.dynamicImportSettled() }) diff --git a/ui/web/tests/unit/skins/modern/ModernLayout.test.ts b/ui/web/tests/unit/skins/modern/ModernLayout.test.ts index fab7a241..dc9ed509 100644 --- a/ui/web/tests/unit/skins/modern/ModernLayout.test.ts +++ b/ui/web/tests/unit/skins/modern/ModernLayout.test.ts @@ -364,6 +364,8 @@ describe('ModernLayout', () => { await flushPromises() // Verify dialog components exist (stubbed to true = rendered when dialog state is set) expect(wrapper.findComponent({ name: 'AuthorizeDialog' }).exists()).toBe(true) + expect(wrapper.findComponent({ name: 'SetSupervisionUrlDialog' }).exists()).toBe(true) + expect(wrapper.findComponent({ name: 'StartTransactionDialog' }).exists()).toBe(true) wrapper.unmount() }) }) -- 2.53.0