From 401e46811e75197f623c642d6754f252cd6058f0 Mon Sep 17 00:00:00 2001
From: Alan Agius <17563226+alan-agius4@users.noreply.github.com>
Date: Wed, 3 Jun 2026 14:40:04 +0000
Subject: [PATCH] test: add 20.0-project E2E test asset and update update tests
to use it
Update e2e assets
---
tests/e2e/assets/19.0-project/package.json | 37 --------
.../src/app/app.component.spec.ts | 29 ------
.../19.0-project/src/app/app.component.ts | 12 ---
.../assets/19.0-project/src/app/app.config.ts | 8 --
tests/e2e/assets/19.0-project/src/index.html | 13 ---
tests/e2e/assets/19.0-project/src/main.ts | 5 -
.../.editorconfig | 0
.../{19.0-project => 20.0-project}/.gitignore | 1 +
.../20.0-project/.vscode/extensions.json | 4 +
.../assets/20.0-project/.vscode/launch.json | 20 ++++
.../assets/20.0-project/.vscode/tasks.json | 42 +++++++++
.../{19.0-project => 20.0-project}/README.md | 4 +-
.../angular.json | 36 +++++---
tests/e2e/assets/20.0-project/package.json | 48 ++++++++++
.../public/favicon.ico | Bin
.../assets/20.0-project/src/app/app.config.ts | 12 +++
.../src/app/app.css} | 0
.../src/app/app.html} | 86 +++++++++---------
.../src/app/app.routes.ts | 0
.../assets/20.0-project/src/app/app.spec.ts | 23 +++++
tests/e2e/assets/20.0-project/src/app/app.ts | 12 +++
tests/e2e/assets/20.0-project/src/index.html | 13 +++
tests/e2e/assets/20.0-project/src/main.ts | 6 ++
.../src/styles.css | 0
.../tsconfig.app.json | 8 +-
.../tsconfig.json | 17 +++-
.../tsconfig.spec.json | 9 +-
.../tests/update/update-multiple-versions.ts | 2 +-
tests/e2e/tests/update/update.ts | 14 +--
29 files changed, 280 insertions(+), 181 deletions(-)
delete mode 100644 tests/e2e/assets/19.0-project/package.json
delete mode 100644 tests/e2e/assets/19.0-project/src/app/app.component.spec.ts
delete mode 100644 tests/e2e/assets/19.0-project/src/app/app.component.ts
delete mode 100644 tests/e2e/assets/19.0-project/src/app/app.config.ts
delete mode 100644 tests/e2e/assets/19.0-project/src/index.html
delete mode 100644 tests/e2e/assets/19.0-project/src/main.ts
rename tests/e2e/assets/{19.0-project => 20.0-project}/.editorconfig (100%)
rename tests/e2e/assets/{19.0-project => 20.0-project}/.gitignore (97%)
create mode 100644 tests/e2e/assets/20.0-project/.vscode/extensions.json
create mode 100644 tests/e2e/assets/20.0-project/.vscode/launch.json
create mode 100644 tests/e2e/assets/20.0-project/.vscode/tasks.json
rename tests/e2e/assets/{19.0-project => 20.0-project}/README.md (96%)
rename tests/e2e/assets/{19.0-project => 20.0-project}/angular.json (70%)
create mode 100644 tests/e2e/assets/20.0-project/package.json
rename tests/e2e/assets/{19.0-project => 20.0-project}/public/favicon.ico (100%)
create mode 100644 tests/e2e/assets/20.0-project/src/app/app.config.ts
rename tests/e2e/assets/{19.0-project/src/app/app.component.css => 20.0-project/src/app/app.css} (100%)
rename tests/e2e/assets/{19.0-project/src/app/app.component.html => 20.0-project/src/app/app.html} (91%)
rename tests/e2e/assets/{19.0-project => 20.0-project}/src/app/app.routes.ts (100%)
create mode 100644 tests/e2e/assets/20.0-project/src/app/app.spec.ts
create mode 100644 tests/e2e/assets/20.0-project/src/app/app.ts
create mode 100644 tests/e2e/assets/20.0-project/src/index.html
create mode 100644 tests/e2e/assets/20.0-project/src/main.ts
rename tests/e2e/assets/{19.0-project => 20.0-project}/src/styles.css (100%)
rename tests/e2e/assets/{19.0-project => 20.0-project}/tsconfig.app.json (81%)
rename tests/e2e/assets/{19.0-project => 20.0-project}/tsconfig.json (79%)
rename tests/e2e/assets/{19.0-project => 20.0-project}/tsconfig.spec.json (76%)
diff --git a/tests/e2e/assets/19.0-project/package.json b/tests/e2e/assets/19.0-project/package.json
deleted file mode 100644
index 7b65d66807a2..000000000000
--- a/tests/e2e/assets/19.0-project/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "nineteen-project",
- "version": "0.0.0",
- "scripts": {
- "ng": "ng",
- "start": "ng serve",
- "build": "ng build",
- "watch": "ng build --watch --configuration development",
- "test": "ng test"
- },
- "private": true,
- "dependencies": {
- "@angular/common": "^19.2.0",
- "@angular/compiler": "^19.2.0",
- "@angular/core": "^19.2.0",
- "@angular/forms": "^19.2.0",
- "@angular/platform-browser": "^19.2.0",
- "@angular/platform-browser-dynamic": "^19.2.0",
- "@angular/router": "^19.2.0",
- "rxjs": "~7.8.0",
- "tslib": "^2.3.0",
- "zone.js": "~0.15.0"
- },
- "devDependencies": {
- "@angular-devkit/build-angular": "^19.2.13",
- "@angular/cli": "^19.2.13",
- "@angular/compiler-cli": "^19.2.0",
- "@types/jasmine": "~5.1.0",
- "jasmine-core": "~5.6.0",
- "karma": "~6.4.0",
- "karma-chrome-launcher": "~3.2.0",
- "karma-coverage": "~2.2.0",
- "karma-jasmine": "~5.1.0",
- "karma-jasmine-html-reporter": "~2.1.0",
- "typescript": "~5.7.2"
- }
-}
diff --git a/tests/e2e/assets/19.0-project/src/app/app.component.spec.ts b/tests/e2e/assets/19.0-project/src/app/app.component.spec.ts
deleted file mode 100644
index e390fd7bd137..000000000000
--- a/tests/e2e/assets/19.0-project/src/app/app.component.spec.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-import { AppComponent } from './app.component';
-
-describe('AppComponent', () => {
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- imports: [AppComponent],
- }).compileComponents();
- });
-
- it('should create the app', () => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.componentInstance;
- expect(app).toBeTruthy();
- });
-
- it(`should have the 'nineteen-project' title`, () => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.componentInstance;
- expect(app.title).toEqual('nineteen-project');
- });
-
- it('should render title', () => {
- const fixture = TestBed.createComponent(AppComponent);
- fixture.detectChanges();
- const compiled = fixture.nativeElement as HTMLElement;
- expect(compiled.querySelector('h1')?.textContent).toContain('Hello, nineteen-project');
- });
-});
diff --git a/tests/e2e/assets/19.0-project/src/app/app.component.ts b/tests/e2e/assets/19.0-project/src/app/app.component.ts
deleted file mode 100644
index 620c8a058372..000000000000
--- a/tests/e2e/assets/19.0-project/src/app/app.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-import { RouterOutlet } from '@angular/router';
-
-@Component({
- selector: 'app-root',
- imports: [RouterOutlet],
- templateUrl: './app.component.html',
- styleUrl: './app.component.css',
-})
-export class AppComponent {
- title = 'nineteen-project';
-}
diff --git a/tests/e2e/assets/19.0-project/src/app/app.config.ts b/tests/e2e/assets/19.0-project/src/app/app.config.ts
deleted file mode 100644
index 7afc797fbab7..000000000000
--- a/tests/e2e/assets/19.0-project/src/app/app.config.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
-import { provideRouter } from '@angular/router';
-
-import { routes } from './app.routes';
-
-export const appConfig: ApplicationConfig = {
- providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)],
-};
diff --git a/tests/e2e/assets/19.0-project/src/index.html b/tests/e2e/assets/19.0-project/src/index.html
deleted file mode 100644
index f374b0fe3d5e..000000000000
--- a/tests/e2e/assets/19.0-project/src/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- NineteenProject
-
-
-
-
-
-
-
-
diff --git a/tests/e2e/assets/19.0-project/src/main.ts b/tests/e2e/assets/19.0-project/src/main.ts
deleted file mode 100644
index 17447a5dce2c..000000000000
--- a/tests/e2e/assets/19.0-project/src/main.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { bootstrapApplication } from '@angular/platform-browser';
-import { appConfig } from './app/app.config';
-import { AppComponent } from './app/app.component';
-
-bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));
diff --git a/tests/e2e/assets/19.0-project/.editorconfig b/tests/e2e/assets/20.0-project/.editorconfig
similarity index 100%
rename from tests/e2e/assets/19.0-project/.editorconfig
rename to tests/e2e/assets/20.0-project/.editorconfig
diff --git a/tests/e2e/assets/19.0-project/.gitignore b/tests/e2e/assets/20.0-project/.gitignore
similarity index 97%
rename from tests/e2e/assets/19.0-project/.gitignore
rename to tests/e2e/assets/20.0-project/.gitignore
index cc7b141350ff..b1d225e26e57 100644
--- a/tests/e2e/assets/19.0-project/.gitignore
+++ b/tests/e2e/assets/20.0-project/.gitignore
@@ -36,6 +36,7 @@ yarn-error.log
/libpeerconnection.log
testem.log
/typings
+__screenshots__/
# System files
.DS_Store
diff --git a/tests/e2e/assets/20.0-project/.vscode/extensions.json b/tests/e2e/assets/20.0-project/.vscode/extensions.json
new file mode 100644
index 000000000000..77b374577de8
--- /dev/null
+++ b/tests/e2e/assets/20.0-project/.vscode/extensions.json
@@ -0,0 +1,4 @@
+{
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
+ "recommendations": ["angular.ng-template"]
+}
diff --git a/tests/e2e/assets/20.0-project/.vscode/launch.json b/tests/e2e/assets/20.0-project/.vscode/launch.json
new file mode 100644
index 000000000000..925af837050a
--- /dev/null
+++ b/tests/e2e/assets/20.0-project/.vscode/launch.json
@@ -0,0 +1,20 @@
+{
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "ng serve",
+ "type": "chrome",
+ "request": "launch",
+ "preLaunchTask": "npm: start",
+ "url": "http://localhost:4200/"
+ },
+ {
+ "name": "ng test",
+ "type": "chrome",
+ "request": "launch",
+ "preLaunchTask": "npm: test",
+ "url": "http://localhost:9876/debug.html"
+ }
+ ]
+}
diff --git a/tests/e2e/assets/20.0-project/.vscode/tasks.json b/tests/e2e/assets/20.0-project/.vscode/tasks.json
new file mode 100644
index 000000000000..a298b5bd8796
--- /dev/null
+++ b/tests/e2e/assets/20.0-project/.vscode/tasks.json
@@ -0,0 +1,42 @@
+{
+ // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "npm",
+ "script": "start",
+ "isBackground": true,
+ "problemMatcher": {
+ "owner": "typescript",
+ "pattern": "$tsc",
+ "background": {
+ "activeOnStart": true,
+ "beginsPattern": {
+ "regexp": "(.*?)"
+ },
+ "endsPattern": {
+ "regexp": "bundle generation complete"
+ }
+ }
+ }
+ },
+ {
+ "type": "npm",
+ "script": "test",
+ "isBackground": true,
+ "problemMatcher": {
+ "owner": "typescript",
+ "pattern": "$tsc",
+ "background": {
+ "activeOnStart": true,
+ "beginsPattern": {
+ "regexp": "(.*?)"
+ },
+ "endsPattern": {
+ "regexp": "bundle generation complete"
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/tests/e2e/assets/19.0-project/README.md b/tests/e2e/assets/20.0-project/README.md
similarity index 96%
rename from tests/e2e/assets/19.0-project/README.md
rename to tests/e2e/assets/20.0-project/README.md
index 80d80f5a3f1f..1f4d992edb5b 100644
--- a/tests/e2e/assets/19.0-project/README.md
+++ b/tests/e2e/assets/20.0-project/README.md
@@ -1,6 +1,6 @@
-# NineteenProject
+# TwentyProject
-This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.2.13.
+This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.27.
## Development server
diff --git a/tests/e2e/assets/19.0-project/angular.json b/tests/e2e/assets/20.0-project/angular.json
similarity index 70%
rename from tests/e2e/assets/19.0-project/angular.json
rename to tests/e2e/assets/20.0-project/angular.json
index b435223e9930..6c24b184adf2 100644
--- a/tests/e2e/assets/19.0-project/angular.json
+++ b/tests/e2e/assets/20.0-project/angular.json
@@ -3,7 +3,7 @@
"version": 1,
"newProjectRoot": "projects",
"projects": {
- "nineteen-project": {
+ "twenty-project": {
"projectType": "application",
"schematics": {},
"root": "",
@@ -11,12 +11,13 @@
"prefix": "app",
"architect": {
"build": {
- "builder": "@angular-devkit/build-angular:application",
+ "builder": "@angular/build:application",
"options": {
- "outputPath": "dist/nineteen-project",
- "index": "src/index.html",
+ "outputPath": "dist/twenty-project",
"browser": "src/main.ts",
- "polyfills": ["zone.js"],
+ "polyfills": [
+ "zone.js"
+ ],
"tsConfig": "tsconfig.app.json",
"assets": [
{
@@ -24,8 +25,9 @@
"input": "public"
}
],
- "styles": ["src/styles.css"],
- "scripts": []
+ "styles": [
+ "src/styles.css"
+ ]
},
"configurations": {
"production": {
@@ -52,24 +54,27 @@
"defaultConfiguration": "production"
},
"serve": {
- "builder": "@angular-devkit/build-angular:dev-server",
+ "builder": "@angular/build:dev-server",
"configurations": {
"production": {
- "buildTarget": "nineteen-project:build:production"
+ "buildTarget": "twenty-project:build:production"
},
"development": {
- "buildTarget": "nineteen-project:build:development"
+ "buildTarget": "twenty-project:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
- "builder": "@angular-devkit/build-angular:extract-i18n"
+ "builder": "@angular/build:extract-i18n"
},
"test": {
- "builder": "@angular-devkit/build-angular:karma",
+ "builder": "@angular/build:karma",
"options": {
- "polyfills": ["zone.js", "zone.js/testing"],
+ "polyfills": [
+ "zone.js",
+ "zone.js/testing"
+ ],
"tsConfig": "tsconfig.spec.json",
"assets": [
{
@@ -77,8 +82,9 @@
"input": "public"
}
],
- "styles": ["src/styles.css"],
- "scripts": []
+ "styles": [
+ "src/styles.css"
+ ]
}
}
}
diff --git a/tests/e2e/assets/20.0-project/package.json b/tests/e2e/assets/20.0-project/package.json
new file mode 100644
index 000000000000..dbbe2cd1478a
--- /dev/null
+++ b/tests/e2e/assets/20.0-project/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "twenty-project",
+ "version": "0.0.0",
+ "scripts": {
+ "ng": "ng",
+ "start": "ng serve",
+ "build": "ng build",
+ "watch": "ng build --watch --configuration development",
+ "test": "ng test"
+ },
+ "prettier": {
+ "printWidth": 100,
+ "singleQuote": true,
+ "overrides": [
+ {
+ "files": "*.html",
+ "options": {
+ "parser": "angular"
+ }
+ }
+ ]
+ },
+ "private": true,
+ "dependencies": {
+ "@angular/common": "^20.3.0",
+ "@angular/compiler": "^20.3.0",
+ "@angular/core": "^20.3.0",
+ "@angular/forms": "^20.3.0",
+ "@angular/platform-browser": "^20.3.0",
+ "@angular/router": "^20.3.0",
+ "rxjs": "~7.8.0",
+ "tslib": "^2.3.0",
+ "zone.js": "~0.15.0"
+ },
+ "devDependencies": {
+ "@angular/build": "^20.3.27",
+ "@angular/cli": "^20.3.27",
+ "@angular/compiler-cli": "^20.3.0",
+ "@types/jasmine": "~5.1.0",
+ "jasmine-core": "~5.9.0",
+ "karma": "~6.4.0",
+ "karma-chrome-launcher": "~3.2.0",
+ "karma-coverage": "~2.2.0",
+ "karma-jasmine": "~5.1.0",
+ "karma-jasmine-html-reporter": "~2.1.0",
+ "typescript": "~5.9.2"
+ }
+}
\ No newline at end of file
diff --git a/tests/e2e/assets/19.0-project/public/favicon.ico b/tests/e2e/assets/20.0-project/public/favicon.ico
similarity index 100%
rename from tests/e2e/assets/19.0-project/public/favicon.ico
rename to tests/e2e/assets/20.0-project/public/favicon.ico
diff --git a/tests/e2e/assets/20.0-project/src/app/app.config.ts b/tests/e2e/assets/20.0-project/src/app/app.config.ts
new file mode 100644
index 000000000000..d953f4c41b31
--- /dev/null
+++ b/tests/e2e/assets/20.0-project/src/app/app.config.ts
@@ -0,0 +1,12 @@
+import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';
+import { provideRouter } from '@angular/router';
+
+import { routes } from './app.routes';
+
+export const appConfig: ApplicationConfig = {
+ providers: [
+ provideBrowserGlobalErrorListeners(),
+ provideZoneChangeDetection({ eventCoalescing: true }),
+ provideRouter(routes)
+ ]
+};
diff --git a/tests/e2e/assets/19.0-project/src/app/app.component.css b/tests/e2e/assets/20.0-project/src/app/app.css
similarity index 100%
rename from tests/e2e/assets/19.0-project/src/app/app.component.css
rename to tests/e2e/assets/20.0-project/src/app/app.css
diff --git a/tests/e2e/assets/19.0-project/src/app/app.component.html b/tests/e2e/assets/20.0-project/src/app/app.html
similarity index 91%
rename from tests/e2e/assets/19.0-project/src/app/app.component.html
rename to tests/e2e/assets/20.0-project/src/app/app.html
index f8135391366c..752837241913 100644
--- a/tests/e2e/assets/19.0-project/src/app/app.component.html
+++ b/tests/e2e/assets/20.0-project/src/app/app.html
@@ -36,18 +36,9 @@
--pill-accent: var(--bright-blue);
- font-family:
- 'Inter',
- -apple-system,
- BlinkMacSystemFont,
- 'Segoe UI',
- Roboto,
- Helvetica,
- Arial,
- sans-serif,
- 'Apple Color Emoji',
- 'Segoe UI Emoji',
- 'Segoe UI Symbol';
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol";
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
@@ -60,18 +51,9 @@
line-height: 100%;
letter-spacing: -0.125rem;
margin: 0;
- font-family:
- 'Inter Tight',
- -apple-system,
- BlinkMacSystemFont,
- 'Segoe UI',
- Roboto,
- Helvetica,
- Arial,
- sans-serif,
- 'Apple Color Emoji',
- 'Segoe UI Emoji',
- 'Segoe UI Symbol';
+ font-family: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol";
}
p {
@@ -142,6 +124,7 @@
line-height: 1.4rem;
letter-spacing: -0.00875rem;
text-decoration: none;
+ white-space: nowrap;
}
.pill:hover {
@@ -152,11 +135,15 @@
--pill-accent: var(--bright-blue);
}
.pill-group .pill:nth-child(6n + 2) {
+ --pill-accent: var(--electric-violet);
+ }
+ .pill-group .pill:nth-child(6n + 3) {
--pill-accent: var(--french-violet);
}
- .pill-group .pill:nth-child(6n + 3),
+
.pill-group .pill:nth-child(6n + 4),
- .pill-group .pill:nth-child(6n + 5) {
+ .pill-group .pill:nth-child(6n + 5),
+ .pill-group .pill:nth-child(6n + 6) {
--pill-accent: var(--hot-red);
}
@@ -227,7 +214,14 @@
-
+
@@ -236,26 +230,26 @@
- Hello, {{ title }}
+ Hello, {{ title() }}
Congratulations! Your app is running. 🎉
- @for (
- item of [
- { title: 'Explore the Docs', link: 'https://angular.dev' },
- { title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' },
- { title: 'CLI Docs', link: 'https://angular.dev/tools/cli' },
- {
- title: 'Angular Language Service',
- link: 'https://angular.dev/tools/language-service',
- },
- { title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' },
- ];
- track item.title
- ) {
-
+ @for (item of [
+ { title: 'Explore the Docs', link: 'https://angular.dev' },
+ { title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' },
+ { title: 'Prompt and best practices for AI', link: 'https://angular.dev/ai/develop-with-ai'},
+ { title: 'CLI Docs', link: 'https://angular.dev/tools/cli' },
+ { title: 'Angular Language Service', link: 'https://angular.dev/tools/language-service' },
+ { title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' },
+ ]; track item.title) {
+
{{ item.title }}
-
+