import { runTests } from '@vscode/test-electron'; import * as path from 'path'; import { fileURLToPath } from 'url'; import * as os from 'os'; import * as fs from 'fs'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); async function main() { try { // Create a temporary test workspace // Using the system temp directory instead of external volume const tmpDir = os.tmpdir(); const testWorkspaceDir = path.join(tmpDir, `vscode-test-workspace-${Math.random().toString(36).substring(2)}`); const userDataDir = path.join(tmpDir, `vscode-test-user-data-${Math.random().toString(36).substring(2)}`); // Ensure the test workspace directory exists if (!fs.existsSync(testWorkspaceDir)) { fs.mkdirSync(testWorkspaceDir, { recursive: true }); } // The folder containing the Extension Manifest package.json // Passed to `--extensionDevelopmentPath` const extensionDevelopmentPath = path.resolve(__dirname, '../../'); // The path to the extension test script // Passed to --extensionTestsPath const extensionTestsPath = path.resolve(__dirname, '../../out/test'); console.log('Running tests with the following configuration:'); console.log(`Extension Development Path: ${extensionDevelopmentPath}`); console.log(`Extension Tests Path: ${extensionTestsPath}`); console.log(`Workspace Dir: ${testWorkspaceDir}`); console.log(`User Data Dir: ${userDataDir}`); // Download VS Code, unzip it and run the integration test await runTests({ version: '1.98.0', // Specify the exact version your extension is built for extensionDevelopmentPath, extensionTestsPath, launchArgs: [ testWorkspaceDir, '--disable-extensions', `--user-data-dir=${userDataDir}`, '--skip-getting-started', '--skip-release-notes', '--disable-telemetry', '--disable-updates', '--disable-crash-reporter', '--disable-workspace-trust' ] }); } catch (err) { console.error('Failed to run tests', err); process.exit(1); } } main();