From 796bbbc8abd0026456ea8cd7801489c12bca5f46 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Tue, 11 Aug 2026 14:38:13 +0800 Subject: [PATCH] test: fix TtsPanel test teardown race condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用 act() 包裹 render 和 cleanup,避免 React 并发渲染在 jsdom 环境销毁后触发 window is not defined 错误。 --- .../components/TtsPanel.test.tsx | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/apps/web/src/test/pages/editing-planner/components/TtsPanel.test.tsx b/apps/web/src/test/pages/editing-planner/components/TtsPanel.test.tsx index c6989db77..5d0f8a28e 100644 --- a/apps/web/src/test/pages/editing-planner/components/TtsPanel.test.tsx +++ b/apps/web/src/test/pages/editing-planner/components/TtsPanel.test.tsx @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it, vi } from "vitest" -import { render, cleanup } from "@testing-library/react" +import { render, cleanup, act } from "@testing-library/react" import TtsPanel from "@/pages/editing-planner/components/TtsPanel" import { DEFAULT_TTS_CONFIG } from "@/pages/editing-planner/types" @@ -16,17 +16,28 @@ const defaultProps = { } describe("TtsPanel", () => { - afterEach(() => { + afterEach(async () => { + // Flush pending React updates before cleanup to avoid + // "window is not defined" errors after jsdom teardown + await act(async () => {}) cleanup() }) - it("should render without crashing", () => { - const { container } = render() - expect(container).toBeTruthy() + it("should render without crashing", async () => { + let container: HTMLElement + await act(async () => { + const result = render() + container = result.container + }) + expect(container!).toBeTruthy() }) - it("should render when closed", () => { - const { container } = render() - expect(container).toBeTruthy() + it("should render when closed", async () => { + let container: HTMLElement + await act(async () => { + const result = render() + container = result.container + }) + expect(container!).toBeTruthy() }) })