name: Coverage Report on: push: branches: [main] jobs: report: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm ci - name: Generate coverage run: | npm run test:unit -- --coverage node scripts/coverage-trend.js > coverage-metrics.json - name: Upload metrics uses: actions/upload-artifact@v4 with: name: coverage-metrics path: coverage-metrics.json - name: Comment coverage on PR if: github.event_name == 'pull_request' uses: actions/github-script@v7 with: script: | const fs = require('fs'); const metrics = JSON.parse(fs.readFileSync('coverage-metrics.json', 'utf8')); const comment = `## Coverage Report - Statements: ${metrics.statements}% - Branches: ${metrics.branches}% - Functions: ${metrics.functions}% - Lines: ${metrics.lines}% Generated at: ${metrics.timestamp}`; github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: comment }); github-token: ${{ secrets.GITHUB_TOKEN }}