From 9030a7d03113a6b3a6036b4692a8932900ae73a6 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 13 May 2026 08:03:43 +0200 Subject: [PATCH] test(confirm-service): normalise vi.mock spelling and remove duplicate-id mocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Five test files mocked $lib/shared/services/confirm.svelte under BOTH spellings (.svelte and .svelte.js) within the same file; two more mocked only the .svelte.js form. Both resolve to the same module URL but register two distinct Playwright route handlers in @vitest/browser-playwright. The cleanup logic only removes one, leaving an orphan that fires when the next session loads the module — crashing the run with "[birpc] rpc is closed, cannot call resolveManualMock". This is the exact trigger fixed upstream by vitest PR #10267 (issue #9957). Normalise every confirm.svelte mock to the no-extension form, matching production imports and the source file basename (confirm.svelte.ts). After this commit: 8 confirm.svelte mocks across 8 spec files, all under one canonical ID. A meta-test (next commit) prevents the duplicate-id pattern from reappearing. Refs: #553 · vitest-dev/vitest#9957 · vitest-dev/vitest#10267 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../transcription/TranscriptionEditView.svelte.test.ts | 3 --- frontend/src/routes/admin/groups/[id]/page.svelte.test.ts | 2 +- frontend/src/routes/admin/tags/[id]/page.svelte.test.ts | 3 --- frontend/src/routes/admin/users/[id]/page.svelte.test.ts | 3 --- frontend/src/routes/documents/[id]/edit/page.svelte.test.ts | 2 +- frontend/src/routes/documents/[id]/page.svelte.test.ts | 3 --- frontend/src/routes/persons/[id]/edit/page.svelte.test.ts | 3 --- 7 files changed, 2 insertions(+), 17 deletions(-) diff --git a/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.test.ts b/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.test.ts index 6253c16a..254ba084 100644 --- a/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.test.ts +++ b/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.test.ts @@ -5,9 +5,6 @@ import { page } from 'vitest/browser'; vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ - getConfirmService: () => ({ confirm: async () => false }) -})); const { default: TranscriptionEditView } = await import('./TranscriptionEditView.svelte'); import type { TranscriptionBlockData } from '$lib/shared/types'; diff --git a/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts b/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts index 371a0f34..35f9b110 100644 --- a/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts +++ b/frontend/src/routes/admin/groups/[id]/page.svelte.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect, vi, afterEach } from 'vitest'; import { cleanup, render } from 'vitest-browser-svelte'; import { page } from 'vitest/browser'; -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ +vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); diff --git a/frontend/src/routes/admin/tags/[id]/page.svelte.test.ts b/frontend/src/routes/admin/tags/[id]/page.svelte.test.ts index 48a2e64f..5297722e 100644 --- a/frontend/src/routes/admin/tags/[id]/page.svelte.test.ts +++ b/frontend/src/routes/admin/tags/[id]/page.svelte.test.ts @@ -16,9 +16,6 @@ vi.mock('$app/stores', () => ({ vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ - getConfirmService: () => ({ confirm: async () => false }) -})); vi.mock('$app/navigation', () => ({ beforeNavigate: () => {}, diff --git a/frontend/src/routes/admin/users/[id]/page.svelte.test.ts b/frontend/src/routes/admin/users/[id]/page.svelte.test.ts index 861cd86d..33da7c50 100644 --- a/frontend/src/routes/admin/users/[id]/page.svelte.test.ts +++ b/frontend/src/routes/admin/users/[id]/page.svelte.test.ts @@ -5,9 +5,6 @@ import { page } from 'vitest/browser'; vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ - getConfirmService: () => ({ confirm: async () => false }) -})); const { default: AdminUserEditPage } = await import('./+page.svelte'); diff --git a/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts b/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts index e9cbc380..9aacf88f 100644 --- a/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts +++ b/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect, vi, afterEach } from 'vitest'; import { cleanup, render } from 'vitest-browser-svelte'; -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ +vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); diff --git a/frontend/src/routes/documents/[id]/page.svelte.test.ts b/frontend/src/routes/documents/[id]/page.svelte.test.ts index 589ea07c..d3ee08f0 100644 --- a/frontend/src/routes/documents/[id]/page.svelte.test.ts +++ b/frontend/src/routes/documents/[id]/page.svelte.test.ts @@ -30,9 +30,6 @@ vi.mock('$app/navigation', () => ({ vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ - getConfirmService: () => ({ confirm: async () => false }) -})); const { default: DocumentDetailPage } = await import('./+page.svelte'); diff --git a/frontend/src/routes/persons/[id]/edit/page.svelte.test.ts b/frontend/src/routes/persons/[id]/edit/page.svelte.test.ts index 19197ab9..e7dc990d 100644 --- a/frontend/src/routes/persons/[id]/edit/page.svelte.test.ts +++ b/frontend/src/routes/persons/[id]/edit/page.svelte.test.ts @@ -5,9 +5,6 @@ import { page } from 'vitest/browser'; vi.mock('$lib/shared/services/confirm.svelte', () => ({ getConfirmService: () => ({ confirm: async () => false }) })); -vi.mock('$lib/shared/services/confirm.svelte.js', () => ({ - getConfirmService: () => ({ confirm: async () => false }) -})); const { default: PersonEditPage } = await import('./+page.svelte');