run-integration-tests
Run integration tests to verify that extension components work together correctly. Use this after modifying component interactions or event handling.
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 147
- Forks
- 82
01 前言 Front Matter
- name
- run-integration-tests
- description
- Run integration tests to verify that extension components work together correctly. Use this after modifying component interactions or event handling.
03 SKILL.md 正文
Run integration tests to verify that multiple components (managers, API, settings) work together correctly.
When to Use This Skill
- After modifying how components communicate (events, state sharing)
- After changing the API surface
- After modifying managers or their interactions
- When components seem out of sync (UI shows stale data, events not firing)
Quick Reference
| 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 |
How Integration Tests Work
Integration tests run in a real VS Code instance but focus on component interactions:
- Does the API reflect manager state?
- Do events fire when state changes?
- Do different scopes return appropriate data?
They're faster than E2E (which test full workflows) but more thorough than smoke tests.
Workflow
Step 1: Compile and Run
npm run compile && npm run compile-tests && npm run integration-test
Step 2: Interpret Results
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.
Debugging Failures
| 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
Adding New Integration Tests
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
});
});
Test Files
| 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) |
Prerequisites
- CI needs webpack build - Run
npm run compile(webpack) before tests, not justnpm run compile-tests(tsc) - Extension builds - Run
npm run compilebefore tests
Notes
- Integration tests are faster than E2E (30s-2min vs 1-3min)
- Focus on testing component boundaries, not full user workflows
- First run downloads VS Code (~100MB, cached in
.vscode-test/)
04 同仓库更多 Skills
settings-precedence
VS Code settings precedence rules and common pitfalls. Essential for any code that reads or writes settings. Covers getConfiguration scope, inspect() vs get(), and multi-workspace handling.
run-smoke-tests
Run smoke tests to verify extension functionality in a real VS Code environment. Use this when checking if basic features work after changes.
run-pre-commit-checks
Run the mandatory pre-commit checks before committing code. Includes lint, type checking, and unit tests. MUST be run before every commit.
run-e2e-tests
Run E2E tests to verify complete user workflows like environment discovery, creation, and selection. Use this before releases or after major changes.
python-manager-discovery
Environment manager-specific discovery patterns and known issues. Use when working on or reviewing environment discovery code for conda, poetry, pipenv, pyenv, or venv.
generate-snapshot
Generate a codebase health snapshot for technical debt tracking and planning. Analyzes git history, code complexity, debt markers, and dependencies to identify hotspots and refactoring priorities.