Skip to content

Commit 9ae8351

Browse files
committed
test(@angular/ssr): refine spec setup to resolve component ID collision warnings
This update addresses excessive log noise caused by the following warning: `NG0912: Component ID generation collision detected. Components 'AppComponent' and 'AppComponent' with selector 'app-root' generated the same component ID. To fix this, you can change the selector of one of those components or add an extra host attribute to force a different ID. Find more at https://angular.dev/errors/NG0912`. (cherry picked from commit 6647247)
1 parent 6c319e4 commit 9ae8351

File tree

3 files changed

+32
-35
lines changed

3 files changed

+32
-35
lines changed

Diff for: packages/angular/ssr/test/app-engine_spec.ts

+20-24
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,21 @@ import { RenderMode } from '../src/routes/route-config';
1919
import { setAngularAppTestingManifest } from './testing-utils';
2020

2121
function createEntryPoint(locale: string) {
22-
return async () => {
23-
@Component({
24-
standalone: true,
25-
selector: `app-ssr-${locale}`,
26-
template: `SSR works ${locale.toUpperCase()}`,
27-
})
28-
class SSRComponent {}
29-
30-
@Component({
31-
standalone: true,
32-
selector: `app-ssg-${locale}`,
33-
template: `SSG works ${locale.toUpperCase()}`,
34-
})
35-
class SSGComponent {}
22+
@Component({
23+
standalone: true,
24+
selector: `app-ssr-${locale}`,
25+
template: `SSR works ${locale.toUpperCase()}`,
26+
})
27+
class SSRComponent {}
28+
29+
@Component({
30+
standalone: true,
31+
selector: `app-ssg-${locale}`,
32+
template: `SSG works ${locale.toUpperCase()}`,
33+
})
34+
class SSGComponent {}
3635

36+
return async () => {
3737
setAngularAppTestingManifest(
3838
[
3939
{ path: 'ssg', component: SSGComponent },
@@ -74,8 +74,6 @@ describe('AngularAppEngine', () => {
7474

7575
describe('Localized app', () => {
7676
beforeAll(() => {
77-
destroyAngularServerApp();
78-
7977
setAngularAppEngineManifest({
8078
// Note: Although we are testing only one locale, we need to configure two or more
8179
// to ensure that we test a different code path.
@@ -142,18 +140,16 @@ describe('AngularAppEngine', () => {
142140

143141
describe('Non-localized app', () => {
144142
beforeAll(() => {
145-
destroyAngularServerApp();
143+
@Component({
144+
standalone: true,
145+
selector: 'app-home',
146+
template: `Home works`,
147+
})
148+
class HomeComponent {}
146149

147150
setAngularAppEngineManifest({
148151
entryPoints: {
149152
'': async () => {
150-
@Component({
151-
standalone: true,
152-
selector: 'app-home',
153-
template: `Home works`,
154-
})
155-
class HomeComponent {}
156-
157153
setAngularAppTestingManifest(
158154
[{ path: 'home', component: HomeComponent }],
159155
[{ path: '**', renderMode: RenderMode.Server }],

Diff for: packages/angular/ssr/test/app_spec.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@ import '@angular/compiler';
1212
/* eslint-enable import/no-unassigned-import */
1313

1414
import { Component } from '@angular/core';
15-
import { AngularServerApp, destroyAngularServerApp } from '../src/app';
15+
import { AngularServerApp } from '../src/app';
1616
import { RenderMode } from '../src/routes/route-config';
1717
import { setAngularAppTestingManifest } from './testing-utils';
1818

1919
describe('AngularServerApp', () => {
2020
let app: AngularServerApp;
2121

2222
beforeAll(() => {
23-
destroyAngularServerApp();
24-
2523
@Component({
2624
standalone: true,
2725
selector: 'app-home',

Diff for: packages/angular/ssr/test/testing-utils.ts

+11-8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Component, provideExperimentalZonelessChangeDetection } from '@angular/
1010
import { bootstrapApplication } from '@angular/platform-browser';
1111
import { provideServerRendering } from '@angular/platform-server';
1212
import { RouterOutlet, Routes, provideRouter } from '@angular/router';
13+
import { destroyAngularServerApp } from '../src/app';
1314
import { ServerAsset, setAngularAppManifest } from '../src/manifest';
1415
import { ServerRoute, provideServerRoutesConfig } from '../src/routes/route-config';
1516

@@ -29,6 +30,16 @@ export function setAngularAppTestingManifest(
2930
baseHref = '/',
3031
additionalServerAssets: Record<string, ServerAsset> = {},
3132
): void {
33+
destroyAngularServerApp();
34+
35+
@Component({
36+
standalone: true,
37+
selector: 'app-root',
38+
template: '<router-outlet />',
39+
imports: [RouterOutlet],
40+
})
41+
class AppComponent {}
42+
3243
setAngularAppManifest({
3344
inlineCriticalCss: false,
3445
baseHref,
@@ -65,14 +76,6 @@ export function setAngularAppTestingManifest(
6576
},
6677
},
6778
bootstrap: async () => () => {
68-
@Component({
69-
standalone: true,
70-
selector: 'app-root',
71-
template: '<router-outlet />',
72-
imports: [RouterOutlet],
73-
})
74-
class AppComponent {}
75-
7679
return bootstrapApplication(AppComponent, {
7780
providers: [
7881
provideServerRendering(),

0 commit comments

Comments
 (0)