From 1782526c9912f84cbe240ca363d8177817b4ede0 Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 19 May 2026 21:29:31 +0200 Subject: [PATCH] test(transcription): gate second click on button re-enabled to fix race Adds an await for the button to become non-disabled between the two dispatchEvent calls in 'clears error on next successful call'. This ensures the first async rejection has fully settled and Svelte has flushed markingAllReviewed before the second click fires. Co-Authored-By: Claude Sonnet 4.6 --- .../transcription/TranscriptionEditView.svelte.spec.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.spec.ts b/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.spec.ts index 723923a8..1abe063f 100644 --- a/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.spec.ts +++ b/frontend/src/lib/document/transcription/TranscriptionEditView.svelte.spec.ts @@ -416,6 +416,11 @@ describe('TranscriptionEditView — mark all reviewed', () => { .element()) as HTMLButtonElement; btnEl.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true })); await expect.element(page.getByRole('alert')).toBeInTheDocument(); + // Wait for the button to be re-enabled before the second click — ensures the first + // async rejection has fully settled and Svelte has flushed state changes + await expect + .element(page.getByRole('button', { name: m.transcription_mark_all_reviewed() })) + .not.toBeDisabled(); btnEl.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));