From 913cbe836e400bcc26c490a1d2e23893abd738a1 Mon Sep 17 00:00:00 2001 From: Kawa Date: Mon, 30 Mar 2026 09:43:14 +0200 Subject: [PATCH] feat(05-03): fix ReviewStep act() warnings with vi.useFakeTimers - Add afterEach to vitest imports - Add vi.useFakeTimers() at the start of beforeEach block - Add afterEach(() => vi.useRealTimers()) to restore timers after each test - Freezes OutputBlock's setTimeout(setCopied(false), 2000) during tests --- src/components/wizard/ReviewStep.test.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/wizard/ReviewStep.test.tsx b/src/components/wizard/ReviewStep.test.tsx index b50ccbc..70ed53d 100644 --- a/src/components/wizard/ReviewStep.test.tsx +++ b/src/components/wizard/ReviewStep.test.tsx @@ -5,7 +5,7 @@ // Covers SECU-02: privacy/no-server message in rendered output // Covers TECH-01: scriptTargets filtering in ReviewStep // Covers TECH-02: Back button navigation in ReviewStep -import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { render, screen, fireEvent, act } from '@testing-library/react'; import React, { useEffect } from 'react'; import ReviewStep from './ReviewStep'; @@ -17,6 +17,7 @@ vi.mock('../../utils/downloadFile', () => ({ downloadFile: vi.fn() })); vi.mock('../../utils/downloadZip', () => ({ downloadZip: vi.fn().mockResolvedValue(undefined) })); beforeEach(() => { + vi.useFakeTimers(); vi.clearAllMocks(); // Re-establish the resolved mock after clearAllMocks vi.mocked(downloadZip).mockResolvedValue(undefined); @@ -30,6 +31,10 @@ beforeEach(() => { }); }); +afterEach(() => { + vi.useRealTimers(); +}); + // Helper: render ReviewStep inside WizardProvider. // The fully populated state must be injected by the implementation via // a custom context initializer — for now the wrapper just provides the provider.