@angular/build
Version:
Official build system for Angular
224 lines (223 loc) • 8.5 kB
TypeScript
/**
* Unit testing options for Angular applications.
*/
export type Schema = {
/**
* Specifies the browser viewport dimensions for browser-based tests in the format
* `widthxheight`.
*/
browserViewport?: string;
/**
* Specifies the browsers to use for test execution. When not specified, tests are run in a
* Node.js environment using jsdom. For both Vitest and Karma, browser names ending with
* 'Headless' (e.g., 'ChromeHeadless') will enable headless mode.
*/
browsers?: string[];
/**
* Specifies the build target to use for the unit test build in the format
* `project:target[:configuration]`. This defaults to the `build` target of the current
* project with the `development` configuration. You can also pass a comma-separated list of
* configurations. Example: `project:target:production,staging`.
*/
buildTarget?: string;
/**
* Enables coverage reporting for tests.
*/
coverage?: boolean;
/**
* Specifies glob patterns of files to exclude from the coverage report.
*/
coverageExclude?: string[];
/**
* Specifies glob patterns of files to include in the coverage report.
*/
coverageInclude?: string[];
/**
* Specifies the reporters to use for coverage results. Each reporter can be a string
* representing its name, or a tuple containing the name and an options object. Built-in
* reporters include 'html', 'lcov', 'lcovonly', 'text', 'text-summary', 'cobertura',
* 'json', and 'json-summary'.
*/
coverageReporters?: SchemaCoverageReporter[];
/**
* Specifies minimum coverage thresholds that must be met. If thresholds are not met, the
* builder will exit with an error.
*/
coverageThresholds?: CoverageThresholds;
/**
* Specifies coverage watermarks for the HTML reporter. These determine the color coding for
* high, medium, and low coverage.
*/
coverageWatermarks?: CoverageWatermarks;
/**
* Enables debugging mode for tests, allowing the use of the Node Inspector.
*/
debug?: boolean;
/**
* Dumps build output files to the `.angular/cache` directory for debugging purposes.
*/
dumpVirtualFiles?: boolean;
/**
* Specifies glob patterns of files to exclude from testing, relative to the project root.
*/
exclude?: string[];
/**
* Specifies a regular expression pattern to match against test suite and test names. Only
* tests with a name matching the pattern will be executed. For example, `^App` will run
* only tests in suites beginning with 'App'.
*/
filter?: string;
/**
* Specifies glob patterns of files to include for testing, relative to the project root.
* This option also has special handling for directory paths (includes all test files
* within) and file paths (includes the corresponding test file if one exists).
*/
include?: string[];
/**
* Lists all discovered test files and exits the process without building or executing the
* tests.
*/
listTests?: boolean;
/**
* Specifies a file path for the test report, applying only to the first reporter. To
* configure output files for multiple reporters, use the tuple format `['reporter-name', {
* outputFile: '...' }]` within the `reporters` option. When not provided, output is written
* to the console.
*/
outputFile?: string;
/**
* Shows build progress information in the console. Defaults to the `progress` setting of
* the specified `buildTarget`.
*/
progress?: boolean;
/**
* Specifies the path to a TypeScript file that provides an array of Angular providers for
* the test environment. The file must contain a default export of the provider array.
*/
providersFile?: string;
/**
* Specifies the reporters to use during test execution. Each reporter can be a string
* representing its name, or a tuple containing the name and an options object. Built-in
* reporters include 'default', 'verbose', 'dots', 'json', 'junit', 'tap', 'tap-flat', and
* 'html'. You can also provide a path to a custom reporter.
*/
reporters?: SchemaReporter[];
/**
* Specifies the test runner to use for test execution.
*/
runner?: Runner;
/**
* Specifies the configuration file for the selected test runner. If a string is provided,
* it will be used as the path to the configuration file. If `true`, the builder will search
* for a default configuration file (e.g., `vitest.config.ts` or `karma.conf.js`). If
* `false`, no external configuration file will be used.\nFor Vitest, this enables advanced
* options and the use of custom plugins. Please note that while the file is loaded, the
* Angular team does not provide direct support for its specific contents or any third-party
* plugins used within it.
*/
runnerConfig?: RunnerConfig;
/**
* A list of paths to global setup files that are executed before the test files. The
* application's polyfills and the Angular TestBed are always initialized before these files.
*/
setupFiles?: string[];
/**
* The path to the TypeScript configuration file, relative to the workspace root. Defaults
* to `tsconfig.spec.json` in the project root if it exists. If not specified and the
* default does not exist, the `tsConfig` from the specified `buildTarget` will be used.
*/
tsConfig?: string;
/**
* Enables the Vitest UI for interactive test execution. This option is only available for
* the Vitest runner.
*/
ui?: boolean;
/**
* Enables watch mode, which re-runs tests when source files change. Defaults to `true` in
* TTY environments and `false` otherwise.
*/
watch?: boolean;
};
export type SchemaCoverageReporter = CoverageReporterCoverageReporterUnion[] | CoverageReporterEnum;
export type CoverageReporterCoverageReporterUnion = CoverageReporterEnum | {
[key: string]: any;
};
export declare enum CoverageReporterEnum {
Cobertura = "cobertura",
Html = "html",
Json = "json",
JsonSummary = "json-summary",
Lcov = "lcov",
Lcovonly = "lcovonly",
Text = "text",
TextSummary = "text-summary"
}
/**
* Specifies minimum coverage thresholds that must be met. If thresholds are not met, the
* builder will exit with an error.
*/
export type CoverageThresholds = {
/**
* Minimum percentage of branches covered.
*/
branches?: number;
/**
* Minimum percentage of functions covered.
*/
functions?: number;
/**
* Minimum percentage of lines covered.
*/
lines?: number;
/**
* When true, thresholds are enforced for each file individually.
*/
perFile?: boolean;
/**
* Minimum percentage of statements covered.
*/
statements?: number;
};
/**
* Specifies coverage watermarks for the HTML reporter. These determine the color coding for
* high, medium, and low coverage.
*/
export type CoverageWatermarks = {
/**
* The high and low watermarks for branches coverage. `[low, high]`
*/
branches?: number[];
/**
* The high and low watermarks for functions coverage. `[low, high]`
*/
functions?: number[];
/**
* The high and low watermarks for lines coverage. `[low, high]`
*/
lines?: number[];
/**
* The high and low watermarks for statements coverage. `[low, high]`
*/
statements?: number[];
};
export type SchemaReporter = ReporterReporter[] | string;
export type ReporterReporter = {
[key: string]: any;
} | string;
/**
* Specifies the test runner to use for test execution.
*/
export declare enum Runner {
Karma = "karma",
Vitest = "vitest"
}
/**
* Specifies the configuration file for the selected test runner. If a string is provided,
* it will be used as the path to the configuration file. If `true`, the builder will search
* for a default configuration file (e.g., `vitest.config.ts` or `karma.conf.js`). If
* `false`, no external configuration file will be used.\nFor Vitest, this enables advanced
* options and the use of custom plugins. Please note that while the file is loaded, the
* Angular team does not provide direct support for its specific contents or any third-party
* plugins used within it.
*/
export type RunnerConfig = boolean | string;