peach-e2e-setup
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesepeach-e2e-setup — E2E 테스트 환경 설정
peach-e2e-setup — E2E测试环境配置
대상 프로젝트에 E2E 테스트 인프라를 설정한다.
npm 글로벌 도구 설치를 확인하고, Chrome Beta 존재를 검증하고, e2e/ 폴더에 인프라 코드를 배포한다.
为目标项目配置E2E测试基础设施,检查npm全局工具安装情况,验证Chrome Beta是否存在,并将基础设施代码部署到e2e/文件夹下。
페르소나
角色
E2E 환경 설정 전문가.
글로벌 도구와 Chrome Beta가 준비되었는지 확인하고, 인프라 코드를 프로젝트에 복사한다.
기존 시나리오 폴더는 절대 건드리지 않는다.
E2E环境配置专家
确认全局工具和Chrome Beta已准备就绪,将基础设施代码复制到项目中,绝对不会修改已有的场景文件夹。
전제조건
前置条件
- 대상 프로젝트 루트에서 실행 (peach-harness 자체가 아닌 대상 프로젝트)
- macOS 환경 (Chrome Beta 경로가 macOS 기준)
- 在目标项目根目录下执行(不是peach-harness本身,是目标项目)
- macOS环境(Chrome Beta路径为macOS标准路径)
Workflow
工作流
Step 1: npm 글로벌 도구 설치 체크
步骤1:检查npm全局工具安装情况
다음 3개 도구의 설치 여부를 확인한다:
bash
undefined确认以下3个工具是否已安装:
bash
undefinedagent-browser (탐색/검증/확인용 기본 도구)
agent-browser (浏览/验证/检查用基础工具)
command -v agent-browser && echo "✅ agent-browser 설치됨" || echo "❌ agent-browser 미설치"
command -v agent-browser && echo "✅ agent-browser 설치됨" || echo "❌ agent-browser 미설치"
playwright-cli (시나리오 실행 + iframe fallback용)
playwright-cli (场景执行 + iframe fallback用)
command -v playwright-cli && echo "✅ playwright-cli 설치됨" || echo "❌ playwright-cli 미설치"
command -v playwright-cli && echo "✅ playwright-cli 설치됨" || echo "❌ playwright-cli 미설치"
playwright-core (CDP 연결 라이브러리)
playwright-core (CDP连接库)
node -e "require('playwright-core')" 2>/dev/null && echo "✅ playwright-core 설치됨" || echo "❌ playwright-core 미설치"
미설치 도구가 있으면 사용자에게 안내한다:
- `agent-browser`: `npm install -g agent-browser`
- `playwright-cli`: `npm install -g @playwright/cli`
- `playwright-core`: `npm install -g playwright-core`
**자동 설치하지 않는다.** 사용자에게 명령어를 안내하고 확인을 받는다.node -e "require('playwright-core')" 2>/dev/null && echo "✅ playwright-core 설치됨" || echo "❌ playwright-core 미설치"
如果有未安装的工具,向用户提示安装命令:
- `agent-browser`: `npm install -g agent-browser`
- `playwright-cli`: `npm install -g @playwright/cli`
- `playwright-core`: `npm install -g playwright-core`
**不要自动安装**,向用户展示命令并获得确认后再推进。Step 2: Chrome Beta 설치 여부 확인
步骤2:确认Chrome Beta安装情况
bash
ls -d "/Applications/Google Chrome Beta.app" 2>/dev/null && echo "✅ Chrome Beta 설치됨" || echo "❌ Chrome Beta 미설치"미설치 시 안내:
- 설치 URL: https://www.google.com/chrome/beta/
- 기본 Chrome과 동시 실행 가능, E2E 전용으로 분리 사용
bash
ls -d "/Applications/Google Chrome Beta.app" 2>/dev/null && echo "✅ Chrome Beta 설치됨" || echo "❌ Chrome Beta 미설치"未安装时提示:
- 安装地址:https://www.google.com/chrome/beta/
- 可与普通Chrome同时运行,可单独作为E2E专用浏览器使用
Step 3: 프로젝트 루트에 e2e/ 폴더 생성
步骤3:在项目根目录创建e2e/文件夹
bash
mkdir -p e2e/libbash
mkdir -p e2e/libStep 4: 인프라 코드 복사
步骤4:复制基础设施代码
references/e2e/| 소스 (references/) | 대상 (e2e/) |
|---|---|
| |
| |
| |
| |
| |
references 파일을 Read 도구로 읽은 뒤 Write 도구로 대상 경로에 작성한다.
인프라 파일은 항상 최신으로 덮어쓴다 (기존 파일이 있어도 덮어씀).
将文件夹下的4个基础设施代码文件复制到目录下:
references/e2e/| 源路径 (references/) | 目标路径 (e2e/) |
|---|---|
| |
| |
| |
| |
| |
使用Read工具读取references下的文件,再用Write工具写入到目标路径。基础设施文件始终覆盖为最新版本(即使已有旧文件也会覆盖)。
Step 5: 시나리오 폴더 생성 + 테스트 시나리오 배포
步骤5:创建场景文件夹 + 部署测试场景
bash
undefinedbash
undefined시나리오 폴더가 없을 때만 생성. 있으면 절대 건드리지 않음.
仅当场景文件夹不存在时创建,已存在时绝对不修改
if [ ! -d "e2e/시나리오" ]; then
mkdir -p "e2e/시나리오"
echo "✅ e2e/시나리오/ 폴더 생성됨"
else
echo "✅ e2e/시나리오/ 폴더 이미 존재 (건드리지 않음)"
fi
테스트 시나리오 배포 (최초 설정 시 동작 검증용):
- `references/gmail-메일목록.js` → `e2e/시나리오/gmail-메일목록.js`
- **없으면 무조건 복사** (최초 설치)
- **있으면 내용 비교 후 다를 때만 사용자에게 업데이트 여부 질문**
처리 순서:
1. 파일이 없으면 → 무조건 복사, 질문 없음
2. 파일이 있으면 → references 내용과 비교
- 동일하면 → "최신 상태" 메시지 출력 후 스킵
- 다르면 → 변경 요약을 보여주고 "업데이트하시겠습니까? (y/N)" 질문
- y → 덮어씀
- N (기본) → 스킵
파일 없음 → 복사 (질문 없음)
파일 있음 + 동일 → "✅ gmail-메일목록.js 최신 상태"
파일 있음 + 다름 → diff 요약 출력 → "업데이트하시겠습니까? (y/N)"
y → 덮어씀 / N → 스킵
비교는 Read 도구로 두 파일을 읽어 내용이 동일한지 확인한다.
diff 요약은 변경된 핵심 부분(몇 줄이 바뀌었는지 등)을 간략히 설명한다.if [ ! -d "e2e/시나리오" ]; then
mkdir -p "e2e/시나리오"
echo "✅ e2e/시나리오/ 폴더 생성됨"
else
echo "✅ e2e/시나리오/ 폴더 이미 존재 (건드리지 않음)"
fi
测试场景部署(首次配置时用于验证功能):
- `references/gmail-메일목록.js` → `e2e/시나리오/gmail-메일목록.js`
- **不存在时无条件复制**(首次安装)
- **已存在时对比内容,不同时询问用户是否更新**
处理顺序:
1. 文件不存在 → 无条件复制,无需询问
2. 文件存在 → 对比与references中文件的内容
- 内容相同 → 输出「已是最新版本」提示后跳过
- 内容不同 → 展示变更摘要,询问「是否更新?(y/N)」
- y → 覆盖
- N(默认) → 跳过
파일 없음 → 복사 (질문 없음)
파일 있음 + 동일 → "✅ gmail-메일목록.js 최신 상태"
파일 있음 + 다름 → diff 요약 출력 → "업데이트하시겠습니까? (y/N)"
y → 덮어씀 / N → 스킵
使用Read工具读取两个文件确认内容是否相同,diff摘要简要说明修改的核心内容(比如修改了多少行等)。Step 6: 실행 권한 부여
步骤6:授予执行权限
bash
chmod +x e2e/e2e.sh e2e/pwc.shbash
chmod +x e2e/e2e.sh e2e/pwc.shStep 7: 완료 메시지
步骤7:完成提示
설정 결과를 요약 출력한다:
✅ E2E 환경 설정 완료
배포된 인프라 코드:
e2e/e2e.sh — E2E 통합 CLI
e2e/pwc.sh — playwright-cli CDP 래퍼
e2e/lib/connect.js — Chrome CDP 연결 모듈
e2e/lib/selector.js — 탭/시나리오 선택기
다음 단계:
1. cd e2e && ./e2e.sh setup — 환경 자동 체크 + 설정
2. cd e2e && ./e2e.sh chrome — Chrome Beta CDP 모드 실행
3. 브라우저에서 Google 로그인
4. cd e2e && ./e2e.sh run 시나리오/gmail-메일목록.js — 테스트 시나리오 실행输出配置结果摘要:
✅ E2E 환경 설정 완료
배포된 인프라 코드:
e2e/e2e.sh — E2E 통합 CLI
e2e/pwc.sh — playwright-cli CDP 래퍼
e2e/lib/connect.js — Chrome CDP 연결 모듈
e2e/lib/selector.js — 탭/시나리오 선택기
다음 단계:
1. cd e2e && ./e2e.sh setup — 환경 자동 체크 + 설정
2. cd e2e && ./e2e.sh chrome — Chrome Beta CDP 모드 실행
3. 브라우저에서 Google 로그인
4. cd e2e && ./e2e.sh run 시나리오/gmail-메일목록.js — 테스트 시나리오 실행주의사항
注意事项
- 시나리오 폴더 보호: 폴더가 이미 존재하면 절대 덮어쓰거나 삭제하지 않는다
e2e/시나리오/ - 인프라 파일은 항상 덮어씀: ,
e2e.sh,pwc.sh,connect.js는 references의 최신 버전으로 항상 교체selector.js - 글로벌 도구 자동 설치 금지: 사용자에게 명령어를 안내하고 확인을 받은 후 진행
- 시나리오 실행은 반드시 :
./e2e.sh run직접 실행 시node 시나리오.js를 못 찾음.playwright-core가e2e.sh에 전역 npm 모듈 경로를 설정해야 정상 동작NODE_PATH
- 场景文件夹保护:如果文件夹已存在,绝对不要覆盖或删除
e2e/시나리오/ - 基础设施文件始终覆盖:、
e2e.sh、pwc.sh、connect.js始终替换为references中的最新版本selector.js - 禁止自动安装全局工具:向用户展示安装命令,获得确认后再继续
- 必须通过执行场景:直接执行
./e2e.sh run会找不到node 시나리오.js,需要playwright-core在e2e.sh中配置全局npm模块路径才能正常运行NODE_PATH
완료 조건 체크리스트
完成条件检查清单
- npm 글로벌 도구 3개 설치 상태 확인됨 (agent-browser, playwright-cli, playwright-core)
- Chrome Beta 설치 상태 확인됨
- e2e/ 폴더 구조 생성됨
- 인프라 코드 4개 복사됨 (e2e.sh, pwc.sh, connect.js, selector.js)
- e2e/시나리오/ 폴더 생성됨 (기존 존재 시 미변경)
- 테스트 시나리오 gmail-메일목록.js 배포됨 (없으면 복사, 있고 다르면 사용자 확인 후 업데이트)
- e2e.sh, pwc.sh 실행 권한 부여됨
- 완료 메시지 출력됨
- 已确认3个npm全局工具安装状态(agent-browser、playwright-cli、playwright-core)
- 已确认Chrome Beta安装状态
- 已创建e2e/文件夹结构
- 已复制4个基础设施代码文件(e2e.sh、pwc.sh、connect.js、selector.js)
- 已创建e2e/시나리오/文件夹(已存在时不修改)
- 已部署测试场景gmail-메일목록.js(不存在时复制,已存在且内容不同时经用户确认后更新)
- 已为e2e.sh、pwc.sh授予执行权限
- 已输出完成提示