@angular/build
Version:
Official build system for Angular
62 lines • 2.85 kB
JavaScript
;
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const node_assert_1 = __importDefault(require("node:assert"));
const dependency_checker_1 = require("../dependency-checker");
const build_options_1 = require("./build-options");
const executor_1 = require("./executor");
/**
* A declarative definition of the Vitest test runner.
*/
const VitestTestRunner = {
name: 'vitest',
validateDependencies(options) {
const checker = new dependency_checker_1.DependencyChecker(options.projectSourceRoot);
checker.check('vitest');
if (options.browsers?.length) {
if (process.versions.webcontainer) {
checker.check('@vitest/browser-preview');
}
else {
checker.checkAny(['@vitest/browser-playwright', '@vitest/browser-webdriverio', '@vitest/browser-preview'], 'The "browsers" option requires either ' +
'"@vitest/browser-playwright", "@vitest/browser-webdriverio", or "@vitest/browser-preview" to be installed.');
}
}
else {
// DOM emulation is used when no browsers are specified
checker.checkAny(['jsdom', 'happy-dom'], 'A DOM environment is required for non-browser tests. Please install either "jsdom" or "happy-dom".');
}
if (options.coverage.enabled) {
checker.check('@vitest/coverage-v8');
}
checker.report();
},
getBuildOptions(options, baseBuildOptions) {
return (0, build_options_1.getVitestBuildOptions)(options, baseBuildOptions);
},
async createExecutor(context, options, testEntryPointMappings) {
const projectName = context.target?.project;
(0, node_assert_1.default)(projectName, 'The builder requires a target.');
if (!!process.versions.webcontainer && options.browsers?.length) {
context.logger.info(`Webcontainer environment detected. Using '@vitest/browser-preview' for browser-based tests.`);
}
if (typeof options.runnerConfig === 'string') {
context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`);
}
else if (options.runnerConfig) {
context.logger.info('Automatically searching for and using Vitest configuration file.');
}
return new executor_1.VitestExecutor(projectName, options, testEntryPointMappings, context.logger);
},
};
exports.default = VitestTestRunner;
//# sourceMappingURL=index.js.map