integration-tests
Use when running integration tests in the VS Code repo. Covers scripts/test-integration.sh (macOS/Linux) and scripts/test-integration.bat (Windows), their supported arguments for filtering, and the difference between node.js integration tests and extension host tests.
Works with
--- name: integration-tests description: Use when running integration tests in the VS Code repo. Covers scripts/test-integration.sh (macOS/Linux) and scripts/test-integration.bat (Windows), their supported arguments for filtering, and the difference between node.js integration tests and extension host tests. license: MIT --- # 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. The deterministic Agent Host E2E entrypoints are parallelized across isolated test processes during the node.js phase, then excluded from the remaining serial node.js run. 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`. ## Examples ```bash # Run all integration tests (node.js + extension host) ./scripts/test-integration.sh # Run a single integration test file ./scripts/test-integration.sh --run src/vs/workbench/services/search/test/browser/search.integrationTest.ts # Run integration tests matching a grep pattern ./scripts/test-integration.sh --grep "TextSearchProvider" # Run integration tests under a specific area ./scripts/test-integration.sh --runGlob "**/workbench/**/*.integrationTest.js" # Run only Git extension host tests ./scripts/test-integration.sh --suite git # Run API folder + workspace extension tests (glob) ./scripts/test-integration.sh --suite 'api*' # Run multiple extension test suites ./scripts/test-integration.sh --suite 'git,typescript,emmet' # Grep for specific tests in the API folder suite ./scripts/test-integration.sh --suite api-folder --grep 'should open' # Combine file and grep ./scripts/test-integration.sh --run src/vs/workbench/services/search/test/browser/search.integrationTest.ts --grep "should search" ``` ## Compilation requirement Tests run against compiled JavaScript output. Ensure the `VS Code - Build` watch task is running or that compilation has completed before running tests. ## Distinction from unit tests - **Unit tests** (`.test.ts`) → use `scripts/test.sh` or the `runTests` tool - **Integration tests** (`.integrationTest.ts` and extension tests) → use `scripts/test-integration.sh` Do **not** mix these up: `scripts/test.sh` will not find integration test files unless you explicitly pass `--runGlob **/*.integrationTest.js`, and `scripts/test-integration.sh` is not intended for `.test.ts` files.
More Testing skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
setup-pre-commit
mattpocock/skills
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

