프로젝트를 진행하면서 테스트 코드의 실행 여부는 확인했지만, 실제 테스트 커버리지가 충분한지 파악하는 과정이 부족했습니다.

테스트 커버리지를 수동으로 확인하려면 매번 테스트를 실행하고 결과를 분석해야 하는 번거로움이 있었고,

PR을 검토할 때도 어떤 코드가 테스트되지 않았는지 쉽게 확인하기 어려웠습니다.

이를 해결하기 위해, GitHub Actions를 활용하여 테스트 실행 후 커버리지 보고서를 자동으로 생성하고, PR에 주석을 추가하는 워크플로우를 설정하려고 합니다.

이제 PR을 생성하거나 코드 변경이 있을 때 자동으로 테스트 커버리지를 측정하고, 그 결과를 PR에서 바로 확인할 수 있도록 설정해 보겠습니다.


GitHub Actions 워크플로우 파일 작성

테스트 커버리지 자동화를 위해 .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 }}

📌 설정 설명