diff --git a/.github/workflows/coverage-report.yml b/.github/workflows/coverage-report.yml new file mode 100644 index 00000000..6861fd44 --- /dev/null +++ b/.github/workflows/coverage-report.yml @@ -0,0 +1,42 @@ +name: Report Coverage + +on: + workflow_run: + workflows: ['Coverage'] + types: + - completed + +jobs: + report: + runs-on: ubuntu-latest + + permissions: + pull-requests: write + + steps: + - name: Slugify variables + uses: rlespinasse/github-slug-action@102b1a064a9b145e56556e22b18b19c624538d94 # v4.4.1 + + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Download Artifacts + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + run-id: ${{ github.event.workflow_run.id }} + name: coverage-${{ env.GITHUB_HEAD_REF_SLUG }} + path: coverage + + - name: Download main Artifacts + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + run-id: ${{ github.event.workflow_run.id }} + name: coverage-main + path: coverage-main + + - name: Report Coverage + uses: davelosert/vitest-coverage-report-action@7cb62972347776255c2333807d26c60110c0df45 # v2.3.0 + with: + json-summary-compare-path: coverage-main/coverage-summary.json diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..3982af54 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,58 @@ +name: Coverage + +on: + pull_request: + +jobs: + coverage: + runs-on: ubuntu-latest + strategy: + matrix: + branch: + - ${{ github.head_ref }} + - 'main' + + permissions: + # Required to checkout the code + contents: read + + steps: + - name: Slugify variables + uses: rlespinasse/github-slug-action@102b1a064a9b145e56556e22b18b19c624538d94 # v4.4.1 + + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + ref: ${{ matrix.branch }} + + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0 + + - name: Set node version to 20 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + with: + node-version: 20 + cache: 'pnpm' + + - name: Install deps + run: pnpm install + + - name: Build + run: pnpm run build + + - name: Test + run: pnpm vitest --coverage + + - name: Upload Coverage + if: ${{ matrix.branch != 'main' }} + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: coverage-${{ env.GITHUB_HEAD_REF_SLUG }} + path: coverage + + - name: Upload main Coverage + if: ${{ matrix.branch == 'main' }} + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: coverage-main + path: coverage diff --git a/package.json b/package.json index ec5b7d3b..e2d5d9c6 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "ts-check": "tsc", "test": "vitest", "test:update-snapshots": "vitest run -u", - "coverage": "vitest run --coverage", + "test:coverage": "vitest --coverage", "docs:dev": "docsify serve docs", "premigrate": "run-s build:bin", "migrate": "node bin/node-pg-migrate.js", diff --git a/vitest.config.ts b/vitest.config.ts index cf782c78..67f3b6d9 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -6,8 +6,15 @@ export default defineConfig({ coverage: { all: true, provider: 'v8', - reporter: ['clover', 'cobertura', 'lcov', 'text'], + reporter: ['clover', 'cobertura', 'json-summary', 'json', 'lcov', 'text'], include: ['src'], + reportOnFailure: true, + thresholds: { + lines: 50, + branches: 50, + functions: 50, + statements: 50, + }, }, reporters: process.env.CI_PREFLIGHT ? ['basic', 'github-actions']