setup-e2e
프로젝트에 Playwright E2E 테스트 환경을 세팅합니다. 프로젝트 구조 감지 → 패키지 설치 → 설정 파일 → 디렉토리 구조 → 샘플 테스트 검증.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
프로젝트에 Playwright E2E 테스트 환경을 세팅합니다. 프로젝트 구조 감지 → 패키지 설치 → 설정 파일 → 디렉토리 구조 → 샘플 테스트 검증.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
세션 핸드오프. 컨텍스트가 차기 전에 중요 맥락을 progress.md에 문서화하고 새 세션 킥오프 프롬프트를 클립보드에 복사한다. "핸드오프", "세션 정리하고 넘기자", "컨텍스트 정리", "이어갈 준비" 등의 요청에 사용.
MD 파일 또는 텍스트로 작업을 정의하면, 분석 → 디자인 확인 → 구현 → 검증 → 커밋 → PR까지 전체 플로우를 수행한다. "이거 만들어줘", "기능 구현해줘", "작업 시작하자", "이 티켓 진행해줘" 등 코드 작업 착수 발화에 사용.
Claude + OpenAI Codex 협업 스킬. MCP 서버 설정 시에만 사용 가능.
code-forge 상태 대시보드. REFLECT flag, quality 이벤트, notepad/decisions, usage 집계를 한 번에. forge-glow 같은 외부 도구는 --json으로 파싱.
교차 모델 토론. Agent Teams / Codex CLI / self-debate 모드 선택. 설계 결정, 아키텍처 선택 시 활용. "어느 쪽이 나을까", "설계 비교해줘", "토론시켜줘", "교차 검증해줘" 등의 요청에 사용.
화면 단위 E2E 테스트 자동화. Figma/코드 기반 테스트 케이스 도출 → Playwright 코드 생성 → Forge Loop(에스컬레이션 기반 자율 실행). "E2E 돌려줘", "화면 테스트 만들어줘", "이 페이지 자동 테스트" 등의 요청에 사용.
| name | setup-e2e |
| description | 프로젝트에 Playwright E2E 테스트 환경을 세팅합니다. 프로젝트 구조 감지 → 패키지 설치 → 설정 파일 → 디렉토리 구조 → 샘플 테스트 검증. |
E2E 테스트 환경이 없는 프로젝트에 Playwright 기반 초기 세팅을 수행합니다.
설계 문서: @../../docs/e2e-forge-loop-design.md
/setup-e2e # 자동 감지
/setup-e2e --baseUrl http://localhost:3000
다음을 자동 감지합니다:
# Playwright 설치 여부
ls node_modules/@playwright 2>/dev/null
cat package.json | grep playwright
# 기존 E2E 디렉토리
ls e2e/ 2>/dev/null || ls tests/ 2>/dev/null || ls __e2e__/ 2>/dev/null
# 기존 설정 파일
ls playwright.config.* 2>/dev/null
이미 Playwright가 설정된 경우 → "기존 E2E 환경이 감지됐습니다. 보완만 진행할까요?" 확인.
| 감지 대상 | 방법 |
|---|---|
| Next.js | next.config.* → baseURL: http://localhost:3000 |
| Vite | vite.config.* → baseURL: http://localhost:5173 |
| CRA | react-scripts → baseURL: http://localhost:3000 |
| 커스텀 | package.json scripts에서 dev/start 포트 추출 |
ls apps/ 2>/dev/null
모노레포인 경우 → "어떤 앱의 E2E를 세팅할까요?" 선택 요청.
프로젝트 분석 결과:
- 프레임워크: Next.js 13 (Pages Router)
- 개발 서버: http://localhost:3000
- 기존 E2E: 없음
- 패키지 매니저: yarn
세팅할 항목:
1. @playwright/test 패키지 설치
2. playwright.config.ts 생성
3. e2e/ 디렉토리 구조 생성
4. 공통 fixtures (인증, 데이터) 생성
5. Page Object 베이스 클래스 생성
6. package.json에 test:e2e 스크립트 추가
7. .gitignore에 playwright 관련 항목 추가
진행할까요?
# 패키지 매니저 자동 감지
# yarn.lock → yarn, package-lock.json → npm, pnpm-lock.yaml → pnpm
{pm} add -D @playwright/test
# 브라우저 설치
npx playwright install chromium
Firefox/WebKit은 기본 설치하지 않음 (Chromium만). 필요 시 사용자 요청으로 추가.
프레임워크에 맞게 생성:
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: [['html', { open: 'never' }]],
use: {
baseURL: '{감지된 baseURL}',
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
],
// 개발 서버 자동 시작 (감지된 dev 명령어)
webServer: {
command: '{감지된 dev 명령어}',
url: '{감지된 baseURL}',
reuseExistingServer: !process.env.CI,
timeout: 120_000,
},
});
e2e/
├── fixtures/
│ ├── auth.fixture.ts # 인증 상태 fixture
│ └── test-data.fixture.ts # 테스트 데이터 fixture
├── pages/
│ └── base.page.ts # Page Object 베이스 클래스
├── utils/
│ └── helpers.ts # 공통 헬퍼 (waitForApi 등)
└── sample.spec.ts # 환경 검증용 샘플 테스트
import { test as base } from '@playwright/test';
type AuthFixtures = {
authenticatedPage: Page;
};
export const test = base.extend<AuthFixtures>({
authenticatedPage: async ({ page }, use) => {
// 프로젝트 인증 방식에 맞게 수정 필요
// 예: 로그인 페이지 → 토큰 저장 → 재사용
await use(page);
},
});
import { Page, Locator } from '@playwright/test';
export abstract class BasePage {
constructor(protected readonly page: Page) {}
async navigate(path: string) {
await this.page.goto(path);
}
async waitForPageLoad() {
await this.page.waitForLoadState('networkidle');
}
}
// e2e/sample.spec.ts
import { test, expect } from '@playwright/test';
test('메인 페이지가 정상 로드된다', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveTitle(/.+/);
});
{
"scripts": {
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:report": "playwright show-report"
}
}
# Playwright
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
# 샘플 테스트 실행
npx playwright test e2e/sample.spec.ts
성공 시:
## E2E 환경 세팅 완료
- Playwright: @playwright/test 설치됨
- 브라우저: Chromium
- 설정: playwright.config.ts
- 테스트 디렉토리: e2e/
- 샘플 테스트: PASS
다음 단계: `/e2e {페이지경로}` 로 E2E 테스트를 생성하세요.
실패 시:
{dev 명령어}"