用途:当项目使用组件浏览器且需要处理 UI(fixtures、截图、可视化测试,或在新增/修改 UI 时)阅读本技能。fixture 文件以 .fixture.ts 或 .fixture.tsx 结尾,由 Vite 插件自动发现。
主要能力:
- 核心模式:每个 fixture 提供 render 函数,接收容器 DOM 元素与 RenderContext,返回含 dispose 的清理对象,如 defineFixture({ render: (container) => ({ dispose: ... }) })。
- RenderContext 的 signal 为 AbortSignal,用于取消。
- React fixtures:用 createRoot 渲染并在 dispose 中 root.unmount()。
- 分组:用 defineFixtureGroup 组织相关 fixtures,可带路径前缀与标签等元数据。
- 变体:defineFixtureVariants 可并排渲染紧密相关的变体。
- 背景:设置 background: 'dark' 适配深色背景组件。
使用方式:可提取具名 render 函数、设置明确的容器宽高以便确定性截图、编写参数化渲染函数、异步渲染并加载服务。建议创建项目本地包装器(如 fixtureUtils.ts)集中应用主题变体、共享样式、DI 与清理管理,fixture 文件从本地模块导入。文件可放在组件旁或独立测试目录。
限制:fixtures 必须无副作用,不得修改全局状态,只能改动传入容器并完整清理,禁止写入 document.body、全局变量、localStorage、共享单例等。不得使用 :root、html、body、* 等全局样式,所有样式须限定到类名。应用级 CSS 不得被组件或 fixture 文件导入。不要直接在 fixture 文件中使用 @vscode/component-explorer 的 defineFixture/defineFixtureGroup,而应通过项目本地包装器使用。官方文本暂未提供。