Skip to content

Commit e0de868

Browse files
lacolacojkrems
authored andcommitted
fix(@angular/build): inject zone.js/testing before karma builder execution
`unit-test` builder doesn't inject `zone.js/testing` for `Karma` runner but only for `Vitest`. Closes: #30595
1 parent 7d58762 commit e0de868

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

packages/angular/build/src/builders/unit-test/builder.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { OutputHashing } from '../application/schema';
2424
import { writeTestFiles } from '../karma/application_builder';
2525
import { findTests, getTestEntrypoints } from '../karma/find-tests';
2626
import { useKarmaBuilder } from './karma-bridge';
27-
import { NormalizedUnitTestOptions, normalizeOptions } from './options';
27+
import { NormalizedUnitTestOptions, injectTestingPolyfills, normalizeOptions } from './options';
2828
import type { Schema as UnitTestOptions } from './schema';
2929

3030
export type { UnitTestOptions };
@@ -111,9 +111,7 @@ export async function* execute(
111111
await context.getBuilderNameForTarget(normalizedOptions.buildTarget),
112112
)) as unknown as ApplicationBuilderInternalOptions;
113113

114-
if (buildTargetOptions.polyfills?.includes('zone.js')) {
115-
buildTargetOptions.polyfills.push('zone.js/testing');
116-
}
114+
buildTargetOptions.polyfills = injectTestingPolyfills(buildTargetOptions.polyfills);
117115

118116
const outputPath = path.join(context.workspaceRoot, generateOutputPath());
119117
const buildOptions: ApplicationBuilderInternalOptions = {

packages/angular/build/src/builders/unit-test/karma-bridge.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect';
1010
import type { ApplicationBuilderInternalOptions } from '../application/options';
1111
import type { KarmaBuilderOptions } from '../karma';
12-
import type { NormalizedUnitTestOptions } from './options';
12+
import { type NormalizedUnitTestOptions, injectTestingPolyfills } from './options';
1313

1414
export async function useKarmaBuilder(
1515
context: BuilderContext,
@@ -26,6 +26,8 @@ export async function useKarmaBuilder(
2626
await context.getBuilderNameForTarget(unitTestOptions.buildTarget),
2727
)) as unknown as ApplicationBuilderInternalOptions;
2828

29+
buildTargetOptions.polyfills = injectTestingPolyfills(buildTargetOptions.polyfills);
30+
2931
const options: KarmaBuilderOptions = {
3032
tsConfig: unitTestOptions.tsConfig,
3133
polyfills: buildTargetOptions.polyfills,

packages/angular/build/src/builders/unit-test/options.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,7 @@ export async function normalizeOptions(
6464
providersFile: options.providersFile && path.join(workspaceRoot, options.providersFile),
6565
};
6666
}
67+
68+
export function injectTestingPolyfills(polyfills: string[] = []): string[] {
69+
return polyfills.includes('zone.js') ? [...polyfills, 'zone.js/testing'] : polyfills;
70+
}

0 commit comments

Comments
 (0)