diff --git a/src/components/ai-edition/AudioTrackPane.test.tsx b/src/components/ai-edition/AudioTrackPane.test.tsx
new file mode 100644
index 000000000..010888217
--- /dev/null
+++ b/src/components/ai-edition/AudioTrackPane.test.tsx
@@ -0,0 +1,69 @@
+// @vitest-environment jsdom
+import "@testing-library/jest-dom";
+import { fireEvent, render, screen } from "@testing-library/react";
+import { describe, expect, it, vi } from "vitest";
+
+vi.mock("@/contexts/I18nContext", () => ({
+ useScopedT: (scope: string) => (key: string) => `${scope}.${key}`,
+}));
+
+import { AudioTrackPane } from "./RightPanes";
+
+describe("AudioTrackPane", () => {
+ const createTl = () => ({
+ selectedAudioTrackId: "track_1",
+ audioTracks: [
+ {
+ id: "track_1",
+ clipId: "clip_1",
+ assetId: "asset_audio_1",
+ startSec: 0,
+ durationSec: 5,
+ gainDb: 0,
+ fadeInMs: 0,
+ fadeOutMs: 0,
+ offsetSec: 0,
+ },
+ ],
+ assets: [
+ {
+ id: "asset_audio_1",
+ kind: "audio" as const,
+ label: "voice.mp3",
+ originalPath: "/path/voice.mp3",
+ durationSec: 5,
+ },
+ ],
+ clearSelection: vi.fn(),
+ selectAudioTrack: vi.fn(),
+ setAudioTrackGain: vi.fn(),
+ setAudioTrackFade: vi.fn(),
+ removeAudioTrack: vi.fn(),
+ });
+
+ it("renders close button and closes audio track by default", () => {
+ const tl = createTl();
+ render(