Create and maintain screenshot test fixtures for UI components effectively.
The material indicates a prompt/documentation-style skill in an open-source repository for component fixture guidance. It requires no secrets, declares no remote endpoints, and does not itself show independent execution or data exfiltration capabilities; overall risk is low, with only minor caution that referenced external tools would need separate review.
The material explicitly states there are no required keys or environment variables; the README does not request login, tokens, or external service authentication, and shows no sign of credential collection, storage, or misuse.
Neither the system checks nor the material declare any remote endpoints; the content mainly describes a local component explorer/screenshot workflow and does not show user data being sent to external networks.
This skill is marked as prompt-only; the material is documentation about fixture authoring and local task usage, not an executable install script, and it does not show that the skill itself can spawn processes or execute system commands.
The documentation only describes fixture file locations, naming conventions, and rendering helpers; it does not declare additional access to the filesystem, databases, or sensitive resources, and shows no request for excessive permissions.
The source points to the open-source Microsoft/vscode repository on GitHub, making the code auditable and materially lowering risk. Although the star/maintenance fields are incomplete in this material, there are no red flags such as closed source, unclear distribution, or suspicious installation chains.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "component-fixtures" skill from askskill: 1. Download https://raw.githubusercontent.com/microsoft/vscode/main/.github/skills/component-fixtures/SKILL.md 2. Save it as ~/.claude/skills/component-fixtures/SKILL.md 3. Reload skills and tell me it's ready
Design a fixture strategy for this React component for screenshot testing, including file structure, theme switching, mocked service data, async rendering handling, and common pitfalls to avoid.
A clear fixture organization plan explaining how to render the component stably for screenshot testing.
Review why this UI component is hard to fixture and suggest improvements, focusing on CSS scoping, external service dependencies, default states, and async loading flows.
Actionable recommendations to make the component easier to isolate, reproduce, and capture reliably.
My component screenshot tests fail intermittently. Analyze possible instability sources in the fixture, such as theme injection, network mocks, time-based rendering, and lazy loading, then provide fixes.
A troubleshooting checklist and fixes to improve screenshot test consistency.
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');
…
Validate Azure DevOps pipeline changes and troubleshoot builds and YAML faster.
Update the GitHub Copilot CLI or SDK to a newer version.
Upgrade Anthropic SDKs, migrate versions, and fix dependency or typing issues.
Generate or update chat customization files for AI coding agents.
Find and read Code OSS dev build logs for faster debugging.
Merge session branch changes back into the base branch cleanly.
Handle UI changes, fixtures, screenshots, and visual testing in component explorer projects.
Download and commit screenshot baselines from the latest CI run.
Write, fix, and improve tests for React components, hooks, and pages.
Build reusable Convex components with isolated tables and app-facing backend APIs.
Capture screen context so AI can better understand your current interface.
Build, inspect, audit, and fix UI across frameworks end to end.