프로젝트를 진행하면서 테스트 코드의 실행 여부는 확인했지만, 실제 테스트 커버리지가 충분한지 파악하는 과정이 부족했습니다.
테스트 커버리지를 수동으로 확인하려면 매번 테스트를 실행하고 결과를 분석해야 하는 번거로움이 있었고,
PR을 검토할 때도 어떤 코드가 테스트되지 않았는지 쉽게 확인하기 어려웠습니다.
이를 해결하기 위해, GitHub Actions를 활용하여 테스트 실행 후 커버리지 보고서를 자동으로 생성하고, PR에 주석을 추가하는 워크플로우를 설정하려고 합니다.
이제 PR을 생성하거나 코드 변경이 있을 때 자동으로 테스트 커버리지를 측정하고, 그 결과를 PR에서 바로 확인할 수 있도록 설정해 보겠습니다.
테스트 커버리지 자동화를 위해 .github/workflows/test.yml
파일을 생성합니다.
mkdir -p .github/workflows
touch .github/workflows/test.yml
test.yml
설정아래 워크플로우는 PR 생성 및 코드 변경 시 테스트 커버리지를 실행하고, 결과를 PR에 주석으로 남깁니다.
name: coverage
on:
pull_request:
types: [opened, synchronize, reopened]
branches:
- develop
- main
jobs:
coverage:
environment: development
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Set up environment variables
run: |
touch .env
echo "APP_API_URL=${{ secrets.APP_API_URL }}" >> .env
echo "NEXTAUTH_URL=${{ secrets.NEXTAUTH_URL }}" >> .env
echo "NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }}" >> .env
env:
APP_API_URL: ${{ secrets.APP_API_URL }}
NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }}
NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }}
- name: Install dependencies
run: npm ci
- name: Run tests with coverage
run: npm run test -- --coverage
- name: Upload coverage report
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: coverage/
- name: Annotate PR with coverage
uses: ArtiomTr/jest-coverage-report-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
📌 설정 설명
on: pull_request
→ PR이 생성, 동기화(synchronize), 다시 열릴 때(reopened) 실행됨branches: develop, main
→ develop 및 main 브랜치에 대한 PR에서 실행