Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
ec6d9bf
Initial plan
Copilot Aug 29, 2025
a71ab9f
Fix karma configuration for headless testing
Copilot Aug 29, 2025
f18818e
Update Angular core packages to v12.2.17
Copilot Aug 29, 2025
1cb193b
Update Angular CLI to v12.2.18 and apply migrations
Copilot Aug 29, 2025
e2839e9
Update Angular Material and CDK to v12.2.13
Copilot Aug 29, 2025
57369ec
Update to Angular 13.4.0 and apply migrations
Copilot Aug 29, 2025
1f0d901
Update Material/CDK to v13 and third-party packages
Copilot Aug 29, 2025
65581df
Update to Angular 14.3.0 and apply migrations
Copilot Aug 29, 2025
fb76ada
Update to Angular 14, fix karma configuration and build issues
Copilot Aug 29, 2025
c4e3f12
Update to Angular 15.2.10 and apply migrations
Copilot Aug 29, 2025
ddd8c6b
Update Material/CDK to v15 and apply migrations
Copilot Aug 29, 2025
a13d8ed
Update to Angular 16.2.12
Copilot Aug 29, 2025
42a8ebe
Update to Angular 16 with compatible third-party packages
Copilot Aug 29, 2025
4b4abb2
Update to Angular 17.3.12
Copilot Aug 29, 2025
b627663
Update to Angular 17 - in progress with third-party compatibility issues
Copilot Aug 29, 2025
b6b3142
Update to Angular 18.2.13 with HTTP provider migrations
Copilot Aug 29, 2025
cd7f330
Update Material to v17
Copilot Aug 29, 2025
95b5153
Update to Angular 18 with latest packages - building in progress
Copilot Aug 29, 2025
1d1bcdb
Update to Angular 19.2.14 with standalone migrations
Copilot Aug 29, 2025
f796314
๐ŸŽ‰ MAJOR SUCCESS: Complete Angular upgrade to v20.2.3 (latest stable)!
Copilot Aug 29, 2025
c5e6f84
Fix Angular 20 compatibility issues and remove legacy Node.js requireโ€ฆ
Copilot Aug 29, 2025
fa6e96c
Fix unit test errors by adding null check in repo-details component
Copilot Aug 29, 2025
89e4bb4
Update Node.js version to 22 in E2E workflow
Yehonal Aug 29, 2025
ddd3f20
Initial plan: Migrate e2e tests from deprecated Protractor to Cypress
Copilot Aug 29, 2025
fe91f02
Complete e2e migration from Protractor to Playwright with working tests
Copilot Aug 29, 2025
7fcc735
Add Playwright test artifacts to .gitignore
Copilot Aug 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,14 @@ jobs:
runs-on: ubuntu-latest
env:
CI: true
NODE_OPTIONS: --openssl-legacy-provider
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
node-version: '22'

- name: Show Node/npm versions
run: |
Expand All @@ -29,6 +28,12 @@ jobs:
- name: Setup Chrome
uses: browser-actions/setup-chrome@v1

- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium

- name: Set Playwright Chrome executable for CI
run: echo "PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome" >> $GITHUB_ENV

- name: Cache npm
uses: actions/cache@v4
with:
Expand Down Expand Up @@ -72,5 +77,5 @@ jobs:
- name: Run unit tests (headless)
run: npm run test-ci -- --browsers=ChromeHeadless

- name: Run E2E tests (Protractor, headless)
run: npm run e2e -- --configuration=e2e --webdriver-update=false
- name: Run E2E tests (Playwright)
run: npm run e2e
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ src/**/*.js
!.vscode/extensions.json

# misc
/.angular/cache
/.sass-cache
/connect.lock
/coverage
Expand All @@ -44,6 +45,10 @@ testem.log
!/e2e/protractor.conf.js
/e2e/*.map

# Playwright
/test-results
/playwright-report

# System Files
.DS_Store
Thumbs.db
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
language: node_js
node_js:
- '10'
- '20'
dist: xenial
sudo: required
services:
Expand Down
79 changes: 41 additions & 38 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": true,
"assets": [
"src/favicon.ico",
"src/assets"
Expand All @@ -33,9 +32,15 @@
"src/styles.scss"
],
"scripts": [
"node_modules/marked/lib/marked.js",
"node_modules/marked/lib/marked.umd.js",
"node_modules/prismjs/prism.js"
]
],
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
},
"configurations": {
"production": {
Expand Down Expand Up @@ -74,26 +79,27 @@
}
]
}
}
},
"defaultConfiguration": ""
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "git-catalogue:build"
"buildTarget": "git-catalogue:build"
},
"configurations": {
"production": {
"browserTarget": "git-catalogue:build:production"
"buildTarget": "git-catalogue:build:production"
},
"e2e": {
"browserTarget": "git-catalogue:build:e2e"
"buildTarget": "git-catalogue:build:e2e"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "git-catalogue:build"
"buildTarget": "git-catalogue:build"
}
},
"test": {
Expand All @@ -113,44 +119,41 @@
"src/styles.scss"
],
"scripts": [
"node_modules/marked/lib/marked.js",
"node_modules/marked/lib/marked.umd.js",
"node_modules/prismjs/prism.js"
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json",
"e2e/tsconfig.json"
],
"exclude": [
"**/node_modules/**"
]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "git-catalogue:serve"
},
"configurations": {
"production": {
"devServerTarget": "git-catalogue:serve:production"
},
"e2e": {
"devServerTarget": "git-catalogue:serve:e2e"
}
}
}
}
}
},
"defaultProject": "git-catalogue",
"cli": {
"analytics": false
},
"schematics": {
"@schematics/angular:component": {
"type": "component"
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:interceptor": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
}
}
49 changes: 49 additions & 0 deletions e2e/app.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { test, expect } from '@playwright/test';

test.describe('Git Catalogue App', () => {

test('should load the application', async ({ page }) => {
// Navigate to the application
await page.goto('/');

// Wait for the page to load
await page.waitForLoadState('networkidle');

// Check that the page loaded successfully by looking for Angular content
// The app should have loaded without critical errors
await expect(page).toHaveTitle('GitCatalogue');

// Check that the main app component is present
await expect(page.locator('app-root')).toBeVisible();
});

test('should not have console errors', async ({ page }) => {
const errors: string[] = [];

// Listen for console errors
page.on('console', (msg) => {
if (msg.type() === 'error') {
const text = msg.text();
// Filter out network-related errors that are expected in CI environments
const isNetworkError = text.includes('net::ERR_NAME_NOT_RESOLVED') ||
text.includes('Failed to load resource') ||
text.includes('fonts.googleapis.com') ||
text.includes('fonts.gstatic.com') ||
text.includes('HttpErrorResponse');

if (!isNetworkError) {
errors.push(text);
}
}
});

// Navigate to the application
await page.goto('/');

// Wait for the page to fully load
await page.waitForLoadState('networkidle');

// Assert that there are no critical console errors
expect(errors).toEqual([]);
});
});
37 changes: 0 additions & 37 deletions e2e/protractor.conf.js

This file was deleted.

36 changes: 0 additions & 36 deletions e2e/src/app.e2e-spec.ts

This file was deleted.

7 changes: 0 additions & 7 deletions e2e/src/app.po.ts

This file was deleted.

13 changes: 0 additions & 13 deletions e2e/tsconfig.json

This file was deleted.

15 changes: 9 additions & 6 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,26 @@ module.exports = function (config) {
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
coverageReporter: {
dir: require('path').join(__dirname, './coverage/git-catalogue'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
subdir: '.',
reporters: [
{ type: 'html' },
{ type: 'text-summary' }
]
},
reporters: ['progress', 'kjhtml'],
reporters: ['progress', 'kjhtml', 'coverage'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
browsers: ['ChromeHeadless'],
singleRun: false,
restartOnFileChange: true
});
Expand Down
Loading