도구 소개
대부분의 테스트 스위트에는 같은 CI 골격이 필요합니다. 코드를 체크아웃하고, 런타임을 설치하고, 의존성과 브라우저를 설치하고, 테스트를 실행한 뒤 실패하면 리포트를 보관하는 것입니다. 이 생성기는 Playwright(TypeScript), Cypress, Java·Maven 기반 Selenium, pytest용 워크플로를 공식 액션의 최신 메이저 버전(checkout@v4, setup-node@v4, setup-java@v4, setup-python@v5, cache@v4, upload-artifact@v4)으로 작성합니다. Playwright의 경우 --shard=i/n으로 스위트를 병렬 잡에 나눠 실행한 뒤, Playwright 공식 문서의 패턴에 따라 blob 리포트를 하나의 HTML 리포트로 병합할 수 있습니다. 예약 실행은 GitHub Actions의 요구대로 UTC 기준 5필드 cron을 사용합니다.
사용 방법
- 프레임워크와 런타임 버전을 고르고 트리거를 선택합니다: push, pull_request, cron 스케줄, 수동 workflow_dispatch.
- 브라우저를 선택하고, Playwright라면 샤드 수를 정합니다. 특별한 이유가 없다면 캐싱과 리포트 업로드는 켜 두세요.
- YAML을 복사하거나 다운로드해 저장소의 .github/workflows/ 아래에 저장하고, npm ci나 pip install -r requirements.txt 같은 명령어가 프로젝트와 맞는지 확인합니다.
테스트용 GitHub Actions 워크플로 생성기 자주 묻는 질문
스케줄이 예상과 다른 시간에 실행되는 이유는 무엇인가요?
GitHub Actions는 cron을 UTC 기준으로 평가하므로 현지 시간대에서 변환해야 합니다. 사용량이 많은 시간에는 예약 실행이 늦게 시작될 수 있으며, 공개 저장소에서는 저장소 활동이 60일간 없으면 예약 워크플로가 자동으로 비활성화됩니다.
여기서 Playwright 샤딩은 어떻게 동작하나요?
매트릭스가 샤드마다 잡을 하나씩 시작하고, 각 잡은 blob 리포터로 npx playwright test --shard=i/n을 실행합니다. 후속 잡이 모든 blob 리포트를 다운로드하고 npx playwright merge-reports를 실행해 하나의 HTML 리포트 아티팩트를 만듭니다.
브라우저마다 --project 플래그가 붙는 이유는 무엇인가요?
Playwright는 playwright.config.ts에 정의된 프로젝트로 브라우저를 선택합니다. 생성된 명령어는 선택한 브라우저마다 --project=<name>을 전달하므로 해당 프로젝트 이름이 설정 파일에 있어야 합니다. 모든 프로젝트를 실행하려면 이 플래그를 제거하세요.
테스트 사용자 비밀번호 같은 자격 증명은 어디에 두나요?
저장소 또는 환경 시크릿으로 저장하고 env 블록에서 ${{ secrets.NAME }}으로 참조하세요. 워크플로 파일에 직접 커밋해서는 안 됩니다.