import * as path from "path"; import * as fs from "fs"; import { runTests } from "@vscode/test-electron"; async function main() { // The folder containing the Extension Manifest package.json // Passed to `--extensionDevelopmentPath` const extensionDevelopmentPath = path.resolve(__dirname, "../../"); // Minimum supported version. const jsonData = fs.readFileSync(path.join(extensionDevelopmentPath, "package.json")); const json = JSON.parse(jsonData.toString()); let minimalVersion: string = json.engines.vscode; if (minimalVersion.startsWith("^")) minimalVersion = minimalVersion.slice(1); const launchArgs = ["--disable-extensions", extensionDevelopmentPath]; // All test suites (either unit tests or integration tests) should be in subfolders. const extensionTestsPath = path.resolve(__dirname, "./unit/index"); // Run tests using the minimal supported version. await runTests({ version: minimalVersion, launchArgs, extensionDevelopmentPath, extensionTestsPath, }); // and the latest one await runTests({ version: "stable", launchArgs, extensionDevelopmentPath, extensionTestsPath, }); } main().catch((err) => { // eslint-disable-next-line no-console console.error("Failed to run tests", err); process.exit(1); });