Google 스프레드시트 기반 시나리오를 E2E 테스트 스텁 코드로 자동 생성하고, 테스트 결과를 관리하는 CLI 도구입니다.
- 🌐 Google Sheets 연동: 서비스 어카운트 인증으로 시트를 안전하게 불러옵니다
- 🔍 멀티 시트 자동 처리:
[TC-x]
시트를 자동 감지하여 한 번에 변환합니다 - 🧪 프레임워크 지원: Playwright와 Detox 테스트 코드 스텁을 생성합니다
- 🚀 간편 CLI: 한 줄 명령으로 손쉽게 실행할 수 있습니다
- 📝 결과 자동 업데이트: 테스트 실행 결과를 Google Sheets에 자동으로 업데이트합니다
- 📊 커버리지 분석: 테스트 실행률, 성공률, 시트별 상세 통계를 제공합니다
- 🎯 커스텀 리포터: 전용 리포터로 정확한 테스트 결과 분석을 지원합니다
- ⚙️ 유연한 설정: 사용자 정의 컬럼 매핑으로 다양한 시트 구조를 지원합니다
💡 스텁 코드(Stub Code)란?
실제 구현 로직은 없지만 기본 구조와 가이드 주석이 포함된 코드 틀입니다.
개발자는 생성된 틀에 실제 테스트 로직만 추가하면 됩니다.
npm install @dhlab/e2e-autogen
설치가 정상적으로 완료되었는지 확인해보세요:
# 버전 정보 확인
e2e-autogen --version
# 사용법 확인
e2e-autogen --help
Google Sheets API를 사용하기 위해 서비스 어카운트 인증이 필요합니다:
# 인증 파일 디렉토리 생성
mkdir -p playwright/.auth
# 노션에 있는 credentials.json 내용을 복사하여 다음 위치에 저장
# playwright/.auth/credentials.json
💡 인증 파일 준비 방법
- 팀 계정으로 생성된 서비스 어카운트를 사용합니다
- 노션에서
credentials.json
파일 내용을 복사하여 저장하세요
팀 공통 QA 시트를 이용해주세요.
스프레드시트는 다음과 같은 컬럼 구조로 이루어져 있습니다.
컬럼 | 설명 | 예시 |
---|---|---|
A (시나리오 ID) | 테스트 시나리오 식별자 | TC-1.1 |
B (e2e 시나리오) | 시나리오 설명 | 질문 입력 |
C (UI path) | 테스트 대상 UI 경로 | 홈 / 입력창 |
D (action/when) | 테스트 액션 또는 조건 | 메인화면 로드 |
E (expected/then) | 기대 결과 | 질문 입력창이 정상적으로 표시 |
F (테스트 ID) | 개별 테스트 스텝 식별자 | TC-1.1.1 |
G (Tag) | 어떤 맥락에서 나온 테스트케이스인지 기록 | bugfix , new |
H (Comment) | 자유롭게 작성 | |
I~ (결과 컬럼) | 테스트 실행 결과 (자동 업데이트) | pass , fail , flaky , not_executed , manual_only |
- Google Sheets에서 테스트할 스프레드시트를 엽니다
- 공유 버튼 클릭
- 노션에 안내된 서비스 어카운트 이메일을 Editor 권한으로 추가
- 스프레드시트 URL을 복사합니다 (URL에 포함된 gid가 특정 시트를 지정합니다)
프로젝트 루트에 e2e-autogen.config.ts
파일을 생성하고 다음과 같이 설정하세요:
export default {
// Google Sheets URL (required)
sheetsUrl: "https://docs.google.com/spreadsheets/d/...",
// 테스트 프레임워크 (optional, default: "playwright")
framework: "playwright",
// 스텁 코드 생성 디렉토리 (optional, default: "./playwright/__generated-stub__")
stubOutputFolder: "./playwright/__generated-stub__",
// 테스트 결과 JSON 파일 경로 (optional, default: "./playwright/e2e-autogen-reporter.json")
jsonReporterFile: "./playwright/e2e-autogen-reporter.json",
// Google API 인증 파일 경로 (optional, default: "./playwright/.auth/credentials.json")
credentialsFile: "./playwright/.auth/credentials.json",
// Google Sheets 컬럼 매핑 (optional, 사용자 정의 가능)
googleSheetColumns: {
scenarioId: "A", // 시나리오 ID 컬럼
scenarioDescription: "B", // 시나리오 설명 컬럼
uiPath: "C", // UI 경로 컬럼
when: "D", // 액션/조건 컬럼
then: "E", // 기대결과 컬럼
testId: "F", // 테스트 ID 컬럼
tag: "G", // 태그 컬럼
comment: "H", // 코멘트 컬럼
},
};
# 스프레드시트에서 [TC-x] 시트 자동 처리
e2e-autogen generate
# 시트에 테스트 결과 자동 업데이트
e2e-autogen update
# 도움말 보기
e2e-autogen --help
# 버전 확인
e2e-autogen --version
Google Sheets 데이터에서 다음과 같은 테스트 스텁 코드가 생성됩니다:
// 📝 Auto-generated by E2E-Autogen
// 🔧 Generated from: TC-1.1
import { test } from "@playwright/test";
test("[TC-1.1] 질문 입력", async ({ page }) => {
await test.step("[TC-1.1.1] 메인화면 로드 -> 질문 입력창이 정상적으로 표시", async () => {
// 📍 UI Path: 홈 / 입력창
// 🎬 When: 메인화면 로드
// ✅ Then: 질문 입력창이 정상적으로 표시
});
await test.step("[TC-1.1.2] 질문 입력창에 문자 입력 -> 정상적으로 입력됨", async () => {
// 📍 UI Path: 홈 / 입력창
// 🎬 When: 질문 입력창에 문자 입력
// ✅ Then: 정상적으로 입력됨
});
});
💡 스텁 코드 특징
- 각 테스트 케이스는 여러 스텝으로 구성됩니다
- 실제 구현 로직은 포함되지 않으며, 개발자가 직접 추가해야 합니다
- Given/When/Then 패턴을 따르는 BDD 스타일 주석이 포함됩니다
- Playwright Test Generator를 활용하면 빠르게 작성 가능합니다
<output-directory>/
└── TC-1.stub.ts # sheetId(대분류)별 테스트 파일
정확한 테스트 결과 분석을 위해 전용 리포터를 사용하세요:
playwright.config.ts
에 리포터를 추가하세요:
import { defineConfig } from "@playwright/test";
export default defineConfig({
// ... 기존 설정
reporter: [
["html"],
[
require.resolve("@dhlab/e2e-autogen/playwright/reporter"),
{
outputFile: "./playwright/e2e-autogen-report.json",
},
],
],
// ... 나머지 설정
});
- test.step별 상태 추적: 각 테스트 스텝의 성공/실패/재시도 상태를 정확히 기록
- Flaky 테스트 감지: 재시도 시 성공/실패가 혼재하는 불안정한 테스트를 자동 감지
- Manual 테스트 지원: 수동으로만 실행 가능한 테스트 케이스 구분
- 상세 메타데이터: 실행 시간, 에러 메시지, 테스트 ID 등 상세 정보 수집
테스트 실행 결과를 Google Sheets에 자동으로 업데이트하는 기능입니다:
- 위치: 마지막 컬럼 다음에 자동으로 추가됩니다
- 구조: 결과 + 실행 날짜/시간 컬럼으로 구성됩니다
- 드롭다운: 결과 컬럼에는 선택 가능한 드롭다운 메뉴가 제공됩니다
- ✅
pass
: 테스트 성공 - ❌
fail
: 테스트 실패 ⚠️ flaky
: 불안정한 테스트 (일부 성공, 일부 실패)- ⏭️
not_executed
: 미실행 - 📝
manual_only
: 수동 테스트만 가능
- 시트 업데이트: 테스트 실행 후 결과가 시트에 반영
- 이력 관리: 실행 날짜와 시간을
YYYYMMDD:HH:mm
형식으로 기록 - 시트별 처리:
[TC-x]
패턴의 시트를 자동 감지하여 각각 업데이트 - 결과 통계: 테스트 ID별로 성공/실패 횟수를 집계하여 상태 결정
테스트 실행 결과를 바탕으로 상세한 커버리지 분석을 제공합니다:
- 총 스위트 수: 분석된 테스트 스위트 개수
- 시나리오 수: 총 테스트 시나리오 개수
- 테스트 케이스 수: 총 테스트 케이스 개수
- 실행률: (실행된 테스트 / 전체 테스트) × 100
- 성공률: (성공한 테스트 / 실행된 테스트) × 100
pass
: 성공한 테스트 수fail
: 실패한 테스트 수flaky
: 불안정한 테스트 수not_executed
: 미실행 테스트 수manual_only
: 수동 테스트 수
각 테스트 스위트([TC-x]
)별로 개별 커버리지 통계를 제공합니다.
e2e-autogen update
실행 시 [COVERAGE]
시트가 자동으로 생성되어 다음 정보를 기록합니다:
- 실행 시간 및 날짜
- 전체 커버리지 요약
- 스위트별 상세 통계
- 시간별 커버리지 변화 추이
💡 주의사항
- 서비스 어카운트에 Editor 권한이 필요합니다
- 커스텀 리포터 설정이 필요합니다
- 각 시트는
[TC-x]
형식으로 작성되어야 합니다
MIT © dhlab-fe