microsoft/run-integration-tests
Run integration tests to verify that extension components work together correctly. Use this after modifying component interactions or event handling.
npx skills add https://github.com/microsoft/vscode-python-environments --skill run-integration-tests
Run integration tests to verify that multiple components (managers, API, settings) work together correctly.
| Action | Command |
| ------------------------- | ---------------------------------------------------------------------- |
| Run all integration tests | npm run compile && npm run compile-tests && npm run integration-test |
| Run specific test | npm run integration-test -- --grep "manager" |
| Debug in VS Code | Debug panel → "Integration Tests" → F5 |
Integration tests run in a real VS Code instance but focus on component interactions:
They're faster than E2E (which test full workflows) but more thorough than smoke tests.
npm run compile && npm run compile-tests && npm run integration-test
Pass:
Integration: Environment Manager + API
✓ API reflects manager state after refresh
✓ Different scopes return appropriate environments
✓ Environment objects have consistent structure
3 passing (25s)
Fail: Check error message and see Debugging section.
| Error | Cause | Fix |
| ------------------- | --------------------------- | ------------------------------- |
| API not available | Extension activation failed | Check Debug Console |
| Event not fired | Event wiring issue | Check event registration |
| State mismatch | Components out of sync | Add logging, check update paths |
| Timeout | Async operation stuck | Check for deadlocks |
For detailed debugging: Debug panel → "Integration Tests" → F5
Create files in src/test/integration/ with pattern *.integration.test.ts:
import * as assert from 'assert';
import * as vscode from 'vscode';
import { waitForCondition, TestEventHandler } from '../testUtils';
import { ENVS_EXTENSION_ID } from '../constants';
suite('Integration: [Component A] + [Component B]', function () {
this.timeout(120_000);
let api: ExtensionApi;
suiteSetup(async function () {
const extension = vscode.extensions.getExtension(ENVS_EXTENSION_ID);
assert.ok(extension, 'Extension not found');
if (!extension.isActive) await extension.activate();
api = extension.exports;
});
test('[Interaction test]', async function () {
// Test component interaction
});
});
| File | Purpose |
| -------------------------------------------------------- | -------------------------------------------------- |
| src/test/integration/envManagerApi.integration.test.ts | Manager + API tests |
| src/test/integration/index.ts | Test runner entry point |
| src/test/testUtils.ts | Utilities (waitForCondition, TestEventHandler) |
npm run compile (webpack) before tests, not just npm run compile-tests (tsc)npm run compile before tests.vscode-test/)Take microsoft/run-integration-tests from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.