Skip to content

Fix/final-review

Fix/final-review #381

Workflow file for this run

name: CI
on:
pull_request:
branches: [master]
jobs:
Prettier-check:
name: Prettier Check
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3
- name: Setup Node.js environment
uses: actions/setup-node@v3
id: cache-primes
with:
node-version-file: '.nvmrc'
- name: Setup PNPM environment
if: steps.cache-primes.outputs.cache-hit != 'true'
run: |
npm install -g pnpm@latest
pnpm config set store-dir ~/.pnpm-store
- name: Cache PNPM dependencies
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-v3-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-v3-
- name: Install dependencies
if: steps.cache-primes.outputs.cache-hit != 'true'
run: pnpm install --frozen-lockfile
- name: Prettier Check
run: pnpm run prettier-check
Test:
name: Run Tests and Coverage
runs-on: ubuntu-latest
needs: [Prettier-check]
steps:
- name: Checkout repo
uses: actions/checkout@v3
- uses: actions/setup-node@v3
id: cache-primes
with:
node-version-file: '.nvmrc'
- name: Setup PNPM environment
if: steps.cache-primes.outputs.cache-hit != 'true'
run: |
npm install -g pnpm@latest
pnpm config set store-dir ~/.pnpm-store
- name: Cache PNPM dependencies
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-v3-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-v3-
- name: Install dependencies
if: steps.cache-primes.outputs.cache-hit != 'true'
run: pnpm install --frozen-lockfile
- name: Run Tests with Coverage
run: pnpm run test:coverage
- name: Check Coverage Thresholds
run: |
COVERAGE_OUTPUT=$(cat coverage/coverage-summary.json)
STATEMENTS_PCT=$(echo $COVERAGE_OUTPUT | jq -r '.total.statements.pct')
BRANCHES_PCT=$(echo $COVERAGE_OUTPUT | jq -r '.total.branches.pct')
FUNCTIONS_PCT=$(echo $COVERAGE_OUTPUT | jq -r '.total.functions.pct')
LINES_PCT=$(echo $COVERAGE_OUTPUT | jq -r '.total.lines.pct')
THRESHOLD=1
if (( $(echo "$STATEMENTS_PCT < $THRESHOLD" | bc -l) )); then
echo "❌ Statement coverage ($STATEMENTS_PCT%) is below threshold ($THRESHOLD%)"
exit 1
fi
if (( $(echo "$BRANCHES_PCT < $THRESHOLD" | bc -l) )); then
echo "❌ Branch coverage ($BRANCHES_PCT%) is below threshold ($THRESHOLD%)"
exit 1
fi
if (( $(echo "$FUNCTIONS_PCT < $THRESHOLD" | bc -l) )); then
echo "❌ Function coverage ($FUNCTIONS_PCT%) is below threshold ($THRESHOLD%)"
exit 1
fi
if (( $(echo "$LINES_PCT < $THRESHOLD" | bc -l) )); then
echo "❌ Line coverage ($LINES_PCT%) is below threshold ($THRESHOLD%)"
exit 1
fi
echo "✅ All coverage thresholds met!"
echo "Statements: $STATEMENTS_PCT%"
echo "Branches: $BRANCHES_PCT%"
echo "Functions: $FUNCTIONS_PCT%"
echo "Lines: $LINES_PCT%"
- name: Archive code coverage results
uses: actions/upload-artifact@v4
with:
name: code-coverage-report
path: coverage/
retention-days: 30
Build:
name: Build project
runs-on: ubuntu-latest
needs: [Prettier-check, Test]
steps:
- name: Checkout repo
uses: actions/checkout@v3
- uses: actions/setup-node@v3
id: cache-primes
with:
node-version-file: '.nvmrc'
- name: Setup PNPM environment
if: steps.cache-primes.outputs.cache-hit != 'true'
run: |
npm install -g pnpm@latest
pnpm config set store-dir ~/.pnpm-store
- name: Cache PNPM dependencies
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-v3-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-v3-
- name: Install dependencies
if: steps.cache-primes.outputs.cache-hit != 'true'
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm run build
Status-Check:
name: Status Check
runs-on: ubuntu-latest
needs: [Prettier-check, Test, Build]
if: always()
steps:
- name: Check status
run: |
if [ "${{ needs.Prettier-check.result }}" != "success" ] || \
[ "${{ needs.Test.result }}" != "success" ] || \
[ "${{ needs.Build.result }}" != "success" ]; then
echo "One or more jobs failed"
exit 1
fi
echo "All jobs passed successfully"