run: cd src-ui && npm run lint
-
name: Run Jest unit tests
+ env:
+ JEST_JUNIT_OUTPUT_FILE: junit-report-${{ matrix.shard-index }}.xml
run: cd src-ui && npm run test -- --max-workers=2 --shard=${{ matrix.shard-index }}/${{ matrix.shard-count }}
-
name: Upload Jest coverage
src-ui/coverage/lcov.info
src-ui/coverage/clover.xml
retention-days: 7
- if-no-files-found: warn
+ if-no-files-found: error
-
name: Run Playwright e2e tests
run: cd src-ui && npx playwright test --shard ${{ matrix.shard-index }}/${{ matrix.shard-count }}
name: playwright-report-${{ matrix.shard-index }}
path: src-ui/playwright-report
retention-days: 7
+ if-no-files-found: error
+ -
+ name: Upload frontend test results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: junit-report-${{ matrix.shard-index }}
+ path: src-ui/junit-report-${{ matrix.shard-index }}.xml
+ retention-days: 7
+ if-no-files-found: error
tests-coverage-upload:
name: "Upload to Codecov"
path: src-ui/coverage/
pattern: playwright-report-*
merge-multiple: true
+ -
+ name: Download frontend test results
+ uses: actions/download-artifact@v4
+ with:
+ path: src-ui/junit/
+ pattern: junit-report-*
+ merge-multiple: true
-
name: Upload frontend coverage to Codecov
uses: codecov/codecov-action@v5
directory: src-ui/coverage/
# dont include backend coverage files here
files: '!coverage.xml'
+ -
+ name: Upload frontend test results to Codecov
+ if: ${{ !cancelled() }}
+ uses: codecov/test-results-action@v1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ flags: frontend
+ directory: src-ui/junit/
-
name: Download backend coverage
uses: actions/download-artifact@v4
flags: backend
directory: src/
-
- name: Upload test results to Codecov
+ name: Upload backend test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
"eslint": "^9.21.0",
"jest": "29.7.0",
"jest-environment-jsdom": "^29.7.0",
+ "jest-junit": "^16.0.0",
"jest-preset-angular": "^14.5.3",
"jest-websocket-mock": "^2.5.0",
"patch-package": "^8.0.0",
"fsevents": "^2.3.2"
}
},
+ "node_modules/jest-junit": {
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz",
+ "integrity": "sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "strip-ansi": "^6.0.1",
+ "uuid": "^8.3.2",
+ "xml": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/jest-junit/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/jest-leak-detector": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
}
}
},
+ "node_modules/xml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/xml-name-validator": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",