帮助开发者创建和维护组件截图测试夹具,并优化组件的可测试性。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "component-fixtures" 技能: 1. 下载 https://raw.githubusercontent.com/microsoft/vscode/main/.github/skills/component-fixtures/SKILL.md 2. 保存为 ~/.claude/skills/component-fixtures/SKILL.md 3. 装好后重载技能,告诉我可以用了
请为这个 React 组件设计适合截图测试的 fixture 方案,包含文件结构、主题切换、模拟服务数据、异步渲染处理,以及需要避免的常见问题。
一套清晰的 fixture 组织方案,说明如何稳定渲染组件并用于截图测试。
请检查这个 UI 组件为什么难以做 fixture,并给出改造建议,重点关注样式作用域、外部服务依赖、默认状态和异步加载流程。
可执行的改造建议,帮助组件更容易被隔离、复现和稳定截图。
我的组件截图测试经常失败,请帮我分析 fixture 中可能导致不稳定的因素,例如主题注入、网络 mock、时间相关渲染和延迟加载,并提供修复建议。
对不稳定原因的排查清单和修复方案,用于提升截图测试的一致性。
Component fixtures render isolated UI components for visual screenshot testing via the component explorer. Fixtures live in src/vs/workbench/test/browser/componentFixtures/ and are auto-discovered by the Vite dev server using the glob src/**/*.fixture.ts.
Use tools mcp_component-exp_* to list and screenshot fixtures. If you cannot see these tools, inform the user to them on.
mcp_component-exp_list_fixtures tool to see all available fixtures and their URLsmcp_component-exp_screenshot tool to capture screenshots programmaticallyEach fixture file exports a default defineThemedFixtureGroup(...). The file must end with .fixture.ts.
src/vs/workbench/test/browser/componentFixtures/
fixtureUtils.ts # Shared helpers (DO NOT import @vscode/component-explorer elsewhere)
myComponent.fixture.ts # Your fixture file
import { ComponentFixtureContext, createEditorServices, defineComponentFixture, defineThemedFixtureGroup } from './fixtureUtils.js';
export default defineThemedFixtureGroup({ path: 'myFeature/' }, {
Default: defineComponentFixture({ render: renderMyComponent }),
AnotherVariant: defineComponentFixture({ render: renderMyComponent }),
});
function renderMyComponent({ container, disposableStore, theme }: ComponentFixtureContext): void {
container.style.width = '400px';
const instantiationService = createEditorServices(disposableStore, {
colorTheme: theme,
additionalServices: (reg) => {
// Register additional services the component needs
reg.define(IMyService, MyServiceImpl);
reg.defineInstance(IMockService, mockInstance);
},
});
const widget = disposableStore.add(
instantiationService.createInstance(MyWidget, /* constructor args */)
);
container.appendChild(widget.domNode);
}
Key points:
defineThemedFixtureGroup automatically creates Dark and Light variants for each fixturedefineComponentFixture wraps your render function with theme setup and shadow DOM isolationcreateEditorServices provides a TestInstantiationService with base editor services pre-registereddisposableStore.add(...) to prevent leakscolorTheme: theme to createEditorServices so theme colors render correctly| Export | Purpose |
|---|---|
defineComponentFixture | Creates Dark/Light themed fixture variants from a render function |
defineThemedFixtureGroup | Groups multiple themed fixtures into a named fixture group |
createEditorServices | Creates TestInstantiationService with all base editor services |
registerWorkbenchServices | Registers additional workbench services (context menu, label, etc.) |
createTextModel | Creates a text model via ModelService for editor fixtures |
setupTheme | Applies theme CSS to a container (called automatically by defineComponentFixture) |
darkTheme / lightTheme | Pre-loaded ColorThemeData instances |
Important: Only fixtureUtils.ts may import from @vscode/component-explorer. All fixture files must go through the helpers in fixtureUtils.ts.
Fixtures render inside shadow DOM. The component-explorer automatically adopts the global VS Code stylesheets and theme CSS.
Many VS Code components have CSS rules scoped to deep ancestor selectors (e.g., .interactive-session .interactive-input-part > .widget-container .my-element). In fixtures, you must recreate the required ancestor DOM structure for these selectors to match:
function render({ container }: ComponentFixtureContext): void {
container.classList.add('interactive-session');
…
帮助开发者定位并读取 Code OSS 开发构建日志,快速排查运行与扩展问题。
帮助开发者新增、修改或审查 VS Code 配置策略,并生成平台相关产物。
帮助开发者验证 Azure DevOps 流水线改动,快速排查构建与 YAML 配置问题。
在隔离环境启动 VS Code OSS,便于联动自动化操作与多进程调试。
运行聊天性能基准与内存泄漏检查,定位聊天界面回归和性能问题。
帮助开发者排查 VS Code 遥测中的未处理错误并定位根因。
帮助你在使用组件浏览器的项目中高效处理 UI 变更、截图与视觉测试。
从最新 CI 运行下载并提交截图基线,快速更新组件视觉测试结果。
通过截图捕获屏幕上下文,帮助 AI 更准确理解当前界面与问题。
帮助你完整搭建 Component Explorer,配置 CLI、MCP、VS Code 任务与调试环境。
帮助开发者快速安装 Component Explorer 轻量环境并接入 AI 代理集成。
帮助用户设计并生成高质量、可生产的前端界面与网页组件代码