UNPKG

@dhlab/e2e-autogen

Version:

Google 스프레드시트 기반 시나리오를 Playwright 테스트 스텁 코드로 자동 생성하고, 테스트 실행 결과를 다시 시트에 업데이트하는 CLI 도구

200 lines (147 loc) 6.88 kB
# 🤖 E2E Autogen > ⚠️ DEPRECATED: 이 패키지는 더 이상 사용되지 않습니다. 이제부터는 [@jjades/e2e-autogen](https://www.npmjs.com/package/@jjades/e2e-autogen)에서 관리됩니다. Google Spreadsheet를 **단일 소스**로 삼아, **E2E 테스트의 작성–실행–리포팅**까지 자동화하여 QA·개발 리소스를 줄이는 도구입니다. - 한 번의 TC 정의 → 테스트 스텁 자동 생성 → 실행 결과 자동 업데이트 - PM은 더 이상 **수동 QA를 반복하지 않고**, 개발자는 **작성 비용을 크게 낮춥니다**. ## 🚩 왜 만들었나요? 현장의 E2E 테스트는 다음 이유로 우선순위에서 밀리는 경우가 많습니다. - **분산된 기준**: 요구사항/테스트 기준이 이슈·위키·시트·코드에 흩어져 합의가 어렵다. - **높은 작성 비용**: 테스트 코드 골격부터 매번 만들어야 하니 초기 진입 장벽이 높다. - **수동 결과 관리**: 실행/결과 정리가 수동이라 히스토리·커버리지 관리 비용이 크다. **E2E Autogen****스프레드시트를 단일 소스**로 삼아 아래를 자동화합니다: - 시트 → Playwright 테스트 스텁 자동 생성 - 공통 유틸/픽스처/목 인프라 제공으로 작성 시간 최소화 - 실행 결과를 다시 시트에 업데이트(+ 커버리지 집계) ## 🎯 목표 - PM은 **수동 기능 테스트를 반복하지 않아도 되는 환경** - 개발자는 **부담 없이 E2E를 도입**하고, 팀 공통 유틸로 빠르게 작성 - 테스트 히스토리/커버리지는 **시트 하나로 집계** ## ✅ 핵심 기능 1. **TC → 테스트 스텁 자동 생성** - Google 스프레드시트의 TC를 파싱해 Playwright 테스트 스켈레톤 생성 - 반복 보일러플레이트 최소화 2. **개발 DX 강화** - `Playwright`용 유틸/픽스처 제공 - `Mock Socket Server` 제공 - `api-recorder` 연동: 실제 API/소켓 트래픽을 JSON으로 캡처해 즉시 목 주입 3. **리포팅 자동화** - 실행 결과를 스프레드시트에 자동 업데이트 - 커버리지·히스토리를 같은 시트에서 관리 ## ⚙️ 빠른 시작 (Quick Start) ### 1) 설치 ```bash npm install -D @dhlab/e2e-autogen # 또는 yarn add -D @dhlab/e2e-autogen ``` 설치가 정상적으로 완료되었는지 확인해보세요: ```bash # 버전 정보 확인 e2e-autogen --version # 사용법 확인 e2e-autogen --help ``` ### 2) 설정 파일 생성 대화형 설정으로 `e2e-autogen.config.ts` 파일을 자동 생성할 수 있습니다: ```bash yarn e2e-autogen init ``` 이 명령어를 실행하면 다음과 같은 질문들이 나타납니다: - 📊 Google Sheets URL - 🧪 테스트 프레임워크 (Playwright/Detox) - 📁 스텁 파일 출력 폴더 - 📄 테스트 결과 JSON 파일 경로 - 🔐 Google API 인증 파일 경로 또는 수동으로 `e2e-autogen.config.ts` 파일을 생성할 수도 있습니다: ```typescript import { defineConfig } from '@dhlab/e2e-autogen'; export default defineConfig({ // Google Sheets URL (required) sheetsUrl: "https://docs.google.com/spreadsheets/d/...", // 테스트 프레임워크 (optional, default: "playwright") framework: "playwright", // 스텁 코드 생성 디렉토리 (optional) stubOutputFolder: "./playwright/__generated-stub__", // 테스트 결과 JSON 파일 경로 (optional) jsonReporterFile: "./playwright/e2e-autogen-reporter.json", // Google API 인증 파일 경로 (optional) credentialsFile: "./playwright/.auth/credentials.json", // Google Sheets 컬럼 매핑 (optional) googleSheetColumns: { scenarioId: "A", scenarioDescription: "B", uiPath: "C", action: "D", expected: "E", testId: "F", tag: "G", comment: "H", }, }); ``` ### 3) 스텁 생성 ```bash yarn e2e-autogen generate ``` `./playwright/__generated-stub__` 아래에 스텁 파일들이 생성됩니다. ```typescript import { test } from "@playwright/test"; test("[TC-1.1] 질문 입력", async ({ page }) => { await test.step("[TC-1.1.1] 메인화면 로드 -> 질문 입력창이 정상적으로 표시", async () => { // ... }); await test.step("[TC-1.1.2] 질문 입력창에 문자 입력 -> 정상적으로 입력됨", async () => { // ... }); }); ``` ### 4) 테스트 작성 (생성된 스텁 채우기) **🛠 작성 팁** - [Playwright Test Generator](https://playwright.dev/docs/codegen) 활용 시 빠른 작성이 가능합니다. - 스텁 코드 + 구현 코드를 AI에 함께 제공하면 작성 속도가 증가합니다. **⚠️ 주의사항** - generate CLI 실행 시 기존 스텁이 덮어쓰기 되므로, 작성한 코드는 다른 위치로 복사해 두는 것을 권장합니다. - Playwright로 자동화가 어려운 TC의 경우, `manual_only` 결과를 주입할 수 있습니다. → PM이 해당 케이스를 보고 수동 테스트를 진행합니다. **🚀 고급 활용** 1. 공통 Fixture 사용 - `@dhlab/e2e-autogen/playwright`에서 제공하는 다양한 fixture를 활용해 반복 코드를 줄이세요. - 제공하는 기능은 [여기](./docs/playwright.md)에서 확인할 수 있습니다. 2. 소켓 모킹 - Swagger에 정의되지 않은 Socket 통신은 직접 모킹하기 어렵습니다. - `api-recorder`로 실제 통신을 녹화한 후, `e2e-autogen``Mock Socket Server`에 주입하여 빠르게 모킹할 수 있습니다. - 자세한 가이드는 [여기](./docs/socket-io.md)에서 확인하세요. ### 5) 실행 & 결과 업데이트 E2E Autogen은 테스트 결과를 최적화하기 위해 커스텀 리포트를 제공합니다. `playwright.config.ts`에 전용 리포터를 추가하세요. ```typescript // 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" }, ], ], }); ``` **실행 & 시트 업데이트:** ```bash # 테스트 실행 + JSON 리포트 생성 yarn playwright test ``` ```bash # 시트 업데이트 yarn e2e-autogen update # → 결과/코멘트/커버리지가 스프레드시트에 반영 ``` ## 📚 자세한 사용법과 가이드 - **스프레드시트 작성 가이드**: [docs/how-to-write-sheet.md](docs/how-to-write-sheet.md) - **테스트 결과 및 커버리지 활용 가이드**: [docs/how-to-use-results.md](docs/how-to-use-results.md) - **Playwright fixture**: [docs/playwright.md](docs/playwright.md) - **목 소켓 서버(socket.io)**: [docs/socket-io.md](docs/socket-io.md) - **로컬 개발/배포(패키징) 가이드**: [docs/local-dev.md](docs/local-dev.md) ## 📄 라이선스 MIT © dhlab-fe