
Integration Tests
Run and filter VS Code repo integration tests (Node Mocha vs full extension-host suites) without guessing script flags.
Install
npx skills add https://github.com/microsoft/vscode --skill integration-testsWhat is this skill?
- Documents ./scripts/test-integration.sh and .bat with macOS/Linux vs Windows entry points
- Splits Node.js *.integrationTest.ts (Electron Mocha) from extension host tests under extensions/
- Explains filter behavior: --run/--runGlob skip extension host; --grep alone runs all suites
- --suite runs only matching extension host test suites
Adoption & trust: 103 installs on skills.sh; 186k GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Agent Browservercel-labs/open-agents
Tddmattpocock/skills
Use My Browserxixu-me/skills
Test Driven Developmentobra/superpowers
Verification Before Completionobra/superpowers
Webapp Testinganthropics/skills
Journey fit
Common Questions / FAQ
Is Integration Tests safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Integration Tests
# Running Integration Tests Integration tests in VS Code are split into two categories: 1. **Node.js integration tests** - files ending in `.integrationTest.ts` under `src/`. These run in Electron via the same Mocha runner as unit tests. 2. **Extension host tests** - tests embedded in built-in extensions under `extensions/` (API tests, Git tests, TypeScript tests, etc.). These launch a full VS Code instance with `--extensionDevelopmentPath`. ## Scripts - **macOS / Linux:** `./scripts/test-integration.sh [options]` - **Windows:** `.\scripts\test-integration.bat [options]` When run **without filters**, both scripts execute all node.js integration tests followed by all extension host tests. When run **with `--run` or `--runGlob`** (without `--suite`), only the node.js integration tests are run and the filter is applied. Extension host tests are skipped since these filters are node.js-specific. When run **with `--grep` alone** (no `--run`, `--runGlob`, or `--suite`), all tests are run -- both node.js integration tests and all extension host suites -- with the grep pattern forwarded to every test runner. When run **with `--suite`**, only the matching extension host test suites are run. Node.js integration tests are skipped. Combine `--suite` with `--grep` to filter individual tests within the selected suites. ## Options ### `--run <file>` - Run tests from a specific file Accepts a **source file path** (starting with `src/`). Works identically to `scripts/test.sh --run`. ```bash ./scripts/test-integration.sh --run src/vs/workbench/services/search/test/browser/search.integrationTest.ts ``` ### `--runGlob <pattern>` (aliases: `--glob`, `--runGrep`) - Select test files by path Selects which test **files** to load by matching compiled `.js` file paths against a glob pattern. Overrides the default `**/*.integrationTest.js` glob. Only applies to node.js integration tests (extension host tests are skipped). ```bash ./scripts/test-integration.sh --runGlob "**/search/**/*.integrationTest.js" ``` ### `--grep <pattern>` (aliases: `-g`, `-f`) - Filter test cases by name Filters which **test cases** run by matching against their test titles (e.g. `describe`/`test` names). When used alone, the grep is applied to both node.js integration tests and all extension host suites. When combined with `--suite`, only the matched suites run with the grep. ```bash ./scripts/test-integration.sh --grep "TextSearchProvider" ``` ### `--suite <pattern>` - Run specific extension host test suites Runs only the extension host test suites whose name matches the pattern. Supports comma-separated values and shell glob patterns (on macOS/Linux). Node.js integration tests are skipped. Available suite names: `api-folder`, `api-workspace`, `colorize`, `terminal-suggest`, `typescript`, `markdown`, `emmet`, `git`, `git-base`, `ipynb`, `notebook-renderers`, `configuration-editing`, `github-authentication`, `css`, `html`. ```bash # Run only Git extension tests ./scripts/test-integration.sh --suite git # Run API folder and workspace tests (glob, macOS/Linux only) ./scripts/test-integration.sh --suite 'api*' # Run multiple specific suites ./scripts/test-integration.sh --suite 'git,emmet,typescript' # Filter tests within a suite by name ./scripts/test-integration.sh --suite api-folder --grep 'should open' ``` ### `--help`, `-h` - Show help ```bash ./scripts/test-integration.sh --help ``` ### Other options All other options (e.g. `--timeout`, `--coverage`, `--reporter`) are forwarded to the underlying `scripts/test.sh` runner for node.js integration tests. These extra options are **not** forwarded to extension host suites when using `--suite`.