/** @vitest-environment jsdom */ import { vi } from 'vitest'; import { registerAuthTests } from './appSurface/auth.suite'; import { registerChatComposerControlTests } from './appSurface/chat-composer.suite'; import { registerDesignAgentSurfaceTests } from './appSurface/design-agent.suite'; import { describe } from './appSurface/harness'; import { registerClientHomeTests, registerHomeProjectCreationTests, registerRecentProjectsTests, } from './appSurface/home.suite'; import { registerProjectConversationTests } from './appSurface/project-conversation.suite'; import { registerProjectAgentStatusTests, registerProjectWorkbenchFoundationTests, registerProjectWorkbenchNavigationTests, } from './appSurface/project-development.suite'; import { registerAgentStatusDerivationTests, registerRuntimeSettingsTests, } from './appSurface/runtime-settings.suite'; import { registerToolCallGroupTests } from './appSurface/tool-call-group.suite'; /** * 原生文件对话框是宿主能力,不能在 jsdom 里真开窗。 * * 这里只替代"用户选了哪个目标路径"这一件事:`save` 按调用方给的建议文件名返回一个 * 固定的导出路径,让「下载」用例能断言工具条真的走到了 `save_local_project_asset_file`。 * 声明必须留在入口文件:`project-conversation.suite` 等模块比 * `project-development.suite` 更早 import 工作台视图,放在别处注册会晚于真实模块实例化。 */ vi.mock('@tauri-apps/plugin-dialog', () => ({ open: async () => null, save: async (options?: { defaultPath?: string }) => options?.defaultPath ? `/tmp/native-export/${options.defaultPath}` : null, })); describe('AI 游戏创作 App 界面边界', () => { registerProjectWorkbenchFoundationTests(); registerAuthTests(); registerAgentStatusDerivationTests(); registerClientHomeTests(); registerHomeProjectCreationTests(); registerRuntimeSettingsTests(); registerRecentProjectsTests(); registerProjectWorkbenchNavigationTests(); registerProjectConversationTests(); registerProjectAgentStatusTests(); registerDesignAgentSurfaceTests(); registerToolCallGroupTests(); registerChatComposerControlTests(); });