From 602a31f6ab8ad69aec9d90ba0fae6503ba2afed7 Mon Sep 17 00:00:00 2001 From: "Bjorn S." Date: Thu, 11 Sep 2025 19:15:40 +0200 Subject: [PATCH] fix(@angular/build): reverts the test output location to its original and removes unique UUID folders. closes #30713 --- .../build/src/builders/karma/application_builder.ts | 6 +++--- .../build_angular/src/builders/jest/index.ts | 8 +++++--- .../build_angular/src/builders/web-test-runner/index.ts | 7 ++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/angular/build/src/builders/karma/application_builder.ts b/packages/angular/build/src/builders/karma/application_builder.ts index 004c46930ff9..b77c30edeeb9 100644 --- a/packages/angular/build/src/builders/karma/application_builder.ts +++ b/packages/angular/build/src/builders/karma/application_builder.ts @@ -8,7 +8,6 @@ import type { BuilderContext, BuilderOutput } from '@angular-devkit/architect'; import type { Config, ConfigOptions, FilePattern, InlinePluginDef, Server } from 'karma'; -import { randomUUID } from 'node:crypto'; import * as fs from 'node:fs/promises'; import type { IncomingMessage, ServerResponse } from 'node:http'; import { createRequire } from 'node:module'; @@ -24,9 +23,9 @@ import { ApplicationBuilderInternalOptions } from '../application/options'; import { Result, ResultFile, ResultKind } from '../application/results'; import { OutputHashing } from '../application/schema'; import { findTests, getTestEntrypoints } from './find-tests'; +import type { KarmaBuilderTransformsOptions } from './index'; import { NormalizedKarmaBuilderOptions, normalizeOptions } from './options'; import { Schema as KarmaBuilderOptions } from './schema'; -import type { KarmaBuilderTransformsOptions } from './index'; const localResolve = createRequire(__filename).resolve; const isWindows = process.platform === 'win32'; @@ -383,7 +382,8 @@ async function initializeApplication( ): Promise< [typeof import('karma'), Config & ConfigOptions, BuildOptions, AsyncIterator | null] > { - const outputPath = path.join(context.workspaceRoot, 'dist/test-out', randomUUID()); + const testOutput = '.angular/cache/test-out'; // Could be extended later to optionally allow for a randomUUID or a custom outputPath. + const outputPath = path.join(context.workspaceRoot, testOutput); const projectSourceRoot = await getProjectSourceRoot(context); const [karma, entryPoints] = await Promise.all([ diff --git a/packages/angular_devkit/build_angular/src/builders/jest/index.ts b/packages/angular_devkit/build_angular/src/builders/jest/index.ts index c972dfa41a46..4477df77ccb0 100644 --- a/packages/angular_devkit/build_angular/src/builders/jest/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/jest/index.ts @@ -6,10 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { ResultKind, buildApplicationInternal } from '@angular/build/private'; import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect'; +import { ResultKind, buildApplicationInternal } from '@angular/build/private'; import { execFile as execFileCb } from 'node:child_process'; -import { randomUUID } from 'node:crypto'; import * as fs from 'node:fs/promises'; import * as path from 'node:path'; import { promisify } from 'node:util'; @@ -30,7 +29,10 @@ export default createBuilder( ); const options = normalizeOptions(schema); - const testOut = path.join(context.workspaceRoot, 'dist/test-out', randomUUID()); // TODO(dgp1130): Hide in temp directory. + // Could be extended later to optionally allow for a randomUUID or a custom outputPath. + const testOutput = '.angular/cache/test-out'; + + const testOut = path.join(context.workspaceRoot, testOutput); // Verify Jest installation and get the path to it's binary. // We need to `node_modules/.bin/jest`, but there is no means to resolve that directly. Fortunately Jest's `package.json` exports the diff --git a/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts b/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts index 066ed905760e..8301e690e5ed 100644 --- a/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/web-test-runner/index.ts @@ -6,10 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ -import { Result, ResultKind, buildApplicationInternal } from '@angular/build/private'; import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect'; +import { Result, ResultKind, buildApplicationInternal } from '@angular/build/private'; import type * as WebTestRunner from '@web/test-runner'; -import { randomUUID } from 'node:crypto'; import fs from 'node:fs/promises'; import { createRequire } from 'node:module'; import path from 'node:path'; @@ -43,8 +42,10 @@ export default createBuilder( } const options = normalizeOptions(schema); + // Could be extended later to optionally allow for a randomUUID or a custom outputPath. + const testOutput = '.angular/cache/test-out'; - const testDir = path.join(ctx.workspaceRoot, 'dist/test-out', randomUUID()); + const testDir = path.join(ctx.workspaceRoot, testOutput); // Parallelize startup work. const [testFiles] = await Promise.all([