Skip to content

Update Deterministic hardhat via viatrix PR #42

Update Deterministic hardhat via viatrix PR

Update Deterministic hardhat via viatrix PR #42

Workflow file for this run

name: Coverage Check
on:
pull_request:
branches: [main, master]
jobs:
coverage:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Print environment versions
run: |
echo "Node.js: $(node -v)"
echo "NPM: $(npm -v)"
npx hardhat --version
npx solcjs --version 2>/dev/null || echo "(will be downloaded by Hardhat if needed)"
- name: Setup environment variables
run: |
cp .env.example .env
echo "✅ Environment configured"
- name: Fetch main branch baseline
run: |
echo "📥 Fetching coverage baseline from main branch..."
git fetch origin main
git show origin/main:coverage-baseline.json > baseline-from-main.json 2>/dev/null || echo '{"lines":"0","functions":"0","branches":"0","statements":"0"}' > baseline-from-main.json
- name: Run coverage
run: |
set -e
echo ""
echo "📊 Running test coverage analysis in CI..."
echo "This generates fresh coverage from your PR code"
npm run coverage
- name: Display coverage comparison
run: |
set -e
echo ""
echo "=================================================="
echo " COVERAGE VALIDATION"
echo "=================================================="
echo ""
# Extract coverage from CI run (actual)
CI_COV=$(npx ts-node --files scripts/get-coverage-percentage.ts)
# Extract PR baseline (what developer committed)
PR_BASELINE=$(jq -r '.lines // "0"' coverage-baseline.json)
# Extract main baseline (production baseline)
MAIN_BASELINE=$(jq -r '.lines // "0"' baseline-from-main.json)
echo "📊 Coverage Results (Lines):"
echo " CI (actual): ${CI_COV}% ← Fresh coverage from this PR"
echo " PR baseline: ${PR_BASELINE}% ← Baseline you committed"
echo " Main baseline: ${MAIN_BASELINE}% ← Baseline from main branch"
echo ""
echo "✓ Check 1: CI coverage should match PR baseline"
echo " (proves you ran coverage locally)"
echo "✓ Check 2: CI coverage should be >= Main baseline - 0.2%"
echo " (proves coverage didn't decrease beyond tolerance)"
echo ""
echo "💡 Allowed tolerance: ±0.2%"
echo ""
echo "=================================================="
echo ""
- name: Verify coverage
run: |
set -e
echo "🔍 Running coverage validation..."
npx ts-node --files scripts/check-coverage.ts --main-baseline=baseline-from-main.json
- name: Upload coverage report (optional)
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/