From 7332ca17a89c4ffcb48c69c48547a7f096ca1a7a Mon Sep 17 00:00:00 2001 From: MeAkib Date: Thu, 22 Oct 2026 23:12:18 +0600 Subject: [PATCH 1/2] test(@angular/build): add spec for the unit-test `coverageWatermarks` option The `coverageWatermarks` option had no test. Run coverage with the HTML reporter using watermarks that classify any result as high (`[0, 0]`) or low (`[101, 101]`) and check the report's status class. --- .../options/code-coverage-watermarks_spec.ts | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts new file mode 100644 index 000000000000..eec73a88201b --- /dev/null +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts @@ -0,0 +1,47 @@ +/** + * @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 + */ + +import { execute } from '../../index'; +import { + BASE_OPTIONS, + describeBuilder, + UNIT_TEST_BUILDER_INFO, + setupApplicationTarget, +} from '../setup'; + +describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { + describe('Option: "coverageWatermarks"', () => { + beforeEach(async () => { + setupApplicationTarget(harness); + }); + + // Any coverage percentage is at or above a 0% high watermark and below a 101% low watermark. + for (const [watermark, level] of [ + [[0, 0], 'high'], + [[101, 101], 'low'], + ] as const) { + it(`should mark coverage as "${level}" in the HTML report with ${watermark} watermarks`, async () => { + harness.useTarget('test', { + ...BASE_OPTIONS, + coverage: true, + coverageReporters: ['html'] as any, + coverageWatermarks: { + statements: [...watermark], + branches: [...watermark], + functions: [...watermark], + lines: [...watermark], + }, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBeTrue(); + harness.expectFile('coverage/test/index.html').content.toContain(`status-line ${level}`); + }); + } + }); +}); From 9fa0f27e0ed77606ddd47e556bbe81fc24703c8b Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib <48770016+MeAkib@users.noreply.github.com> Date: Thu, 22 Oct 2026 23:24:48 +0600 Subject: [PATCH 2/2] fixup! test(@angular/build): add spec for the unit-test `coverageWatermarks` option --- .../unit-test/tests/options/code-coverage-watermarks_spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts index eec73a88201b..8e29470e86b0 100644 --- a/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts +++ b/packages/angular/build/src/builders/unit-test/tests/options/code-coverage-watermarks_spec.ts @@ -7,6 +7,7 @@ */ import { execute } from '../../index'; +import { CoverageReporterEnum } from '../../schema'; import { BASE_OPTIONS, describeBuilder, @@ -29,7 +30,7 @@ describeBuilder(execute, UNIT_TEST_BUILDER_INFO, (harness) => { harness.useTarget('test', { ...BASE_OPTIONS, coverage: true, - coverageReporters: ['html'] as any, + coverageReporters: [CoverageReporterEnum.Html], coverageWatermarks: { statements: [...watermark], branches: [...watermark],