From 6da83309199a42fda2304d4570c861403b5a7368 Mon Sep 17 00:00:00 2001 From: Jean Brito Date: Sun, 21 Jun 2026 23:31:26 -0300 Subject: [PATCH] chore: add test coverage measurement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wire coverage collection, reporting, and a non-failing CI signal to establish a baseline. No threshold gate — coverage never blocks merge. - jest.config.js: root-level collectCoverageFrom across src/**, with text-summary/lcov/json-summary reporters - package.json: add test:coverage script (test left untouched) - validate-pr.yml: run test:coverage, upload coverage/ as artifact (Linux-only, non-blocking) - .gitignore: ignore /coverage Baseline: 17.15% lines, 17.67% statements, 13.18% branches, 11.87% functions (282 pass, 2 skip). --- .github/workflows/validate-pr.yml | 9 ++++++++- .gitignore | 1 + jest.config.js | 11 +++++++++++ package.json | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index 1c7c9adbef..d2ff6de319 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -41,7 +41,14 @@ jobs: - name: Lint run: yarn lint - name: Test - run: yarn test + run: yarn test:coverage + - name: Upload coverage report + if: ${{ always() && matrix.os == 'ubuntu-latest' }} + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: coverage-report + path: coverage/ + if-no-files-found: warn - name: Build app/ run: yarn build env: diff --git a/.gitignore b/.gitignore index dc885ae4c7..932cbb258e 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ supportedVersions.jwt localdev/ # caches and temp +/coverage jest_dx/ node-compile-cache/ coderabbit-update-*/ diff --git a/jest.config.js b/jest.config.js index 937b388efe..cb152d3c2f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,15 @@ module.exports = { + collectCoverageFrom: [ + 'src/**/*.{ts,tsx}', + '!src/**/*.spec.{ts,tsx}', + '!src/**/*.test.{ts,tsx}', + '!src/**/*.d.ts', + '!src/.jest/**', + '!src/public/**', + ], + coverageReporters: ['text-summary', 'lcov', 'json-summary'], + coverageDirectory: 'coverage', + coveragePathIgnorePatterns: ['/node_modules/', '/app/', '/dist/'], projects: [ { preset: 'ts-jest', diff --git a/package.json b/package.json index 519364af00..0afe8910ed 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "release": "yarn electron-builder --publish onTagOrDraft --x64", "install-app-deps": "electron-builder install-app-deps", "test": "xvfb-maybe jest --forceExit --detectOpenHandles --maxWorkers=1", + "test:coverage": "xvfb-maybe jest --coverage --forceExit --detectOpenHandles --maxWorkers=1", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", "lint": "run-s .:lint:eslint .:lint:tsc", ".:lint:eslint": "eslint .",