fix(test): load shared mocks via vi.hoisted, not a static import

CI caught that vi.mock('$app/forms', () => ({ ...formsMock })) with a
static `import * as formsMock` fails: vitest hoists vi.mock above the
import, so the factory references an uninitialised binding
("no top level variables inside"). Load the shared mock module via
`const formsMock = await vi.hoisted(() => import('$mocks/...'))` instead —
the factory may reference a vi.hoisted binding, and the dynamic import runs
at collection time (not in the lazily-invoked factory), so it stays clear
of ADR-012's birpc race and the no-async-mock-factories guard. Applies to
all 5 shared-mock consumers ($app/forms x4, $app/navigation x1). Part of #560.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-06-03 07:52:37 +02:00
committed by marcel
parent ad067d2e0e
commit 25b23843c9
5 changed files with 6 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
import { describe, it, expect, vi } from 'vitest';
import * as navMock from '$mocks/$app/navigation';
const navMock = await vi.hoisted(() => import('$mocks/$app/navigation'));
vi.mock('$app/navigation', () => ({ ...navMock }));