1
0
mirror of https://github.com/bitwarden/directory-connector synced 2025-12-05 23:53:21 +00:00

Configure Codecov coverage and results (#569)

* Configure Codecov coverage and results

* Actually produce reports
This commit is contained in:
Matt Bishop
2024-08-30 16:48:13 -04:00
committed by GitHub
parent 14314a3553
commit d01522bfc4
4 changed files with 88 additions and 19 deletions

View File

@@ -1,26 +1,46 @@
--- name: Testing
name: Run tests
on: on:
workflow_dispatch: workflow_dispatch:
push: push:
branches: branches:
- "main" - "main"
pull_request: {} pull_request:
defaults:
run:
shell: bash
jobs: jobs:
test: check-test-secrets:
name: Run tests name: Check for test secrets
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
outputs:
available: ${{ steps.check-test-secrets.outputs.available }}
permissions:
contents: read
steps: steps:
- name: Checkout repo - name: Check
id: check-test-secrets
run: |
if [ "${{ secrets.CODECOV_TOKEN }}" != '' ]; then
echo "available=true" >> $GITHUB_OUTPUT;
else
echo "available=false" >> $GITHUB_OUTPUT;
fi
testing:
name: Run tests
if: ${{ startsWith(github.head_ref, 'version_bump_') == false }}
runs-on: ubuntu-22.04
needs: check-test-secrets
permissions:
checks: write
contents: read
pull-requests: write
steps:
- name: Check out repo
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Get Node Version - name: Get Node version
id: retrieve-node-version id: retrieve-node-version
run: | run: |
NODE_NVMRC=$(cat .nvmrc) NODE_NVMRC=$(cat .nvmrc)
@@ -34,11 +54,6 @@ jobs:
cache-dependency-path: '**/package-lock.json' cache-dependency-path: '**/package-lock.json'
node-version: ${{ steps.retrieve-node-version.outputs.node_version }} node-version: ${{ steps.retrieve-node-version.outputs.node_version }}
- name: Print environment
run: |
node --version
npm --version
- name: Install Node dependencies - name: Install Node dependencies
run: npm ci run: npm ci
@@ -49,4 +64,25 @@ jobs:
run: npm run test:types --coverage run: npm run test:types --coverage
- name: Run tests - name: Run tests
run: npm run test run: npm run test --coverage
- name: Report test results
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5 # v1.9.1
if: ${{ needs.check-test-secrets.outputs.available == 'true' && !cancelled() }}
with:
name: Test Results
path: "junit.xml"
reporter: jest-junit
fail-on-error: true
- name: Upload coverage to codecov.io
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
if: ${{ needs.check-test-secrets.outputs.available == 'true' }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Upload results to codecov.io
uses: codecov/test-results-action@1b5b448b98e58ba90d1a1a1d9fcb72ca2263be46 # v1.0.0
if: ${{ needs.check-test-secrets.outputs.available == 'true' }}
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

View File

@@ -11,6 +11,14 @@ module.exports = {
// ...angularPreset, // ...angularPreset,
preset: "jest-preset-angular", preset: "jest-preset-angular",
reporters: ["default", "jest-junit"],
collectCoverage: true,
// Ensure we collect coverage from files without tests
collectCoverageFrom: ["src/**/*.ts"],
coverageReporters: ["html", "lcov"],
coverageDirectory: "coverage",
testEnvironment: "jsdom", testEnvironment: "jsdom",
testMatch: ["**/+(*.)+(spec).+(ts)"], testMatch: ["**/+(*.)+(spec).+(ts)"],

28
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "@bitwarden/directory-connector", "name": "@bitwarden/directory-connector",
"version": "2024.2.2", "version": "2024.7.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@bitwarden/directory-connector", "name": "@bitwarden/directory-connector",
"version": "2024.2.2", "version": "2024.7.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
@@ -91,6 +91,7 @@
"html-webpack-plugin": "5.6.0", "html-webpack-plugin": "5.6.0",
"husky": "9.0.10", "husky": "9.0.10",
"jest": "29.7.0", "jest": "29.7.0",
"jest-junit": "16.0.0",
"jest-preset-angular": "13.1.1", "jest-preset-angular": "13.1.1",
"lint-staged": "15.2.0", "lint-staged": "15.2.0",
"mini-css-extract-plugin": "2.7.7", "mini-css-extract-plugin": "2.7.7",
@@ -13513,6 +13514,22 @@
"fsevents": "^2.3.2" "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-leak-detector": { "node_modules/jest-leak-detector": {
"version": "29.7.0", "version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
@@ -20910,6 +20927,13 @@
} }
} }
}, },
"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": { "node_modules/xml-name-validator": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",

View File

@@ -114,6 +114,7 @@
"html-webpack-plugin": "5.6.0", "html-webpack-plugin": "5.6.0",
"husky": "9.0.10", "husky": "9.0.10",
"jest": "29.7.0", "jest": "29.7.0",
"jest-junit": "16.0.0",
"jest-preset-angular": "13.1.1", "jest-preset-angular": "13.1.1",
"lint-staged": "15.2.0", "lint-staged": "15.2.0",
"mini-css-extract-plugin": "2.7.7", "mini-css-extract-plugin": "2.7.7",