run-smoke-tests

Запустить дымовые тесты для проверки функциональности расширения в реальной среде VS Code. Используйте это при проверке базовых функций после изменений.

npx skills add https://github.com/microsoft/vscode-python-environments --skill run-smoke-tests

Run smoke tests to verify the extension loads and basic functionality works in a real VS Code environment.

When to Use This Skill

  • After making changes to extension activation code
  • After modifying commands or API exports
  • Before submitting a PR to verify nothing is broken
  • When the user asks to "run smoke tests" or "verify the extension works"

Quick Reference

ActionCommand
Run all smoke testsnpm run compile && npm run compile-tests && npm run smoke-test
Run specific testnpm run smoke-test -- --grep "Extension activates"
Debug in VS CodeDebug panel → "Smoke Tests" → F5

How Smoke Tests Work

Unlike unit tests (which mock VS Code), smoke tests run inside a real VS Code instance:

  1. npm run smoke-test uses @vscode/test-cli
  2. The CLI downloads a standalone VS Code binary (cached in .vscode-test/)
  3. It launches that VS Code with your extension installed
  4. Mocha runs test files inside that VS Code process
  5. Results are reported back to your terminal

This is why smoke tests are slower (~10-60s) but catch real integration issues.

Workflow

Step 1: Compile and Run

npm run compile && npm run compile-tests && npm run smoke-test

Step 2: Interpret Results

Pass: 4 passing (2s) → Extension works, proceed.

Fail: See error message and check Debugging section.

Running Individual Tests

To run a specific test instead of the whole suite:

# By test name (grep pattern)
npm run smoke-test -- --grep "Extension activates"

# Or temporarily add .only in code:
test.only('Extension activates without errors', ...)

Debugging Failures

ErrorCauseFix
Extension not installedBuild failed or ID mismatchRun npm run compile, check extension ID
Extension did not become activeError in activate()Debug with F5, check Debug Console
Command not registeredMissing from package.jsonAdd to contributes.commands
Timeout exceededSlow startup or infinite loopIncrease timeout or check for blocking code

For detailed debugging, use VS Code: Debug panel → "Smoke Tests" → F5

Adding New Smoke Tests

Create a new file in src/test/smoke/ with the naming convention *.smoke.test.ts:

import * as assert from 'assert';
import * as vscode from 'vscode';
import { waitForCondition } from '../testUtils';
import { ENVS_EXTENSION_ID } from '../constants';

suite('Smoke: [Feature Name]', function () {
    this.timeout(60_000);

    test('[Test description]', async function () {
        // Arrange
        const extension = vscode.extensions.getExtension(ENVS_EXTENSION_ID);
        assert.ok(extension, 'Extension not found');

        // Ensure extension is active
        if (!extension.isActive) {
            await extension.activate();
        }

        // Act
        const result = await someOperation();

        // Assert
        assert.strictEqual(result, expected, 'Description of what went wrong');
    });
});

Key patterns:

  • Use waitForCondition() instead of sleep() for async assertions
  • Set generous timeouts (this.timeout(60_000))
  • Include clear error messages in assertions

Test Files

FilePurpose
src/test/smoke/activation.smoke.test.tsExtension activation tests
src/test/smoke/index.tsTest runner entry point
src/test/testUtils.tsUtilities (waitForCondition, etc.)

Prerequisites

  • CI needs webpack build: The extension must be built with npm run compile (webpack) before tests run. The test runner uses dist/extension.js which is only created by webpack, not by npm run compile-tests (tsc)
  • Extension builds: Run npm run compile before tests

Notes

  • First run downloads VS Code (~100MB, cached in .vscode-test/)
  • Tests auto-retry once on failure

Больше skills от microsoft

oss-growth
microsoft
Персона OSS-хакера роста
official
accessibility-aria-expert
microsoft
Обнаруживает и исправляет проблемы доступности в веб-представлениях React/Fluent UI. Используйте при проверке кода на совместимость с экранными дикторами, исправлении ARIA-меток, обеспечении…
official
generate-canvas-app
microsoft
[УСТАРЕЛО — используйте canvas-app] Создать полное приложение Power Apps canvas.
official
django
microsoft
Лучшие практики веб-разработки на Django, включая модели, представления, шаблоны и тестирование.
official
github-issue-creator
microsoft
Преобразует сырые заметки, журналы ошибок, голосовой ввод или скриншоты в четкие отчеты о проблемах в формате GitHub-flavored markdown. Используется, когда пользователь вставляет информацию об ошибке, сообщение об ошибке…
official
python-package-management
microsoft
Использует uv для управления зависимостями и poethepoet для автоматизации задач.
official
runtime-validation
microsoft
Проверка во время выполнения для перенесённых приложений — охватывает стратегию тестирования (этап планирования) и выполнение тестов (этап валидации): проверка запуска,…
official
azure-postgres-ts
microsoft
Подключение к Azure Database for PostgreSQL Flexible Server с использованием пакета pg (node-postgres) с поддержкой аутентификации по паролю и Microsoft Entra ID (без пароля).
official