peach-e2e-setup

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

peach-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
undefined

agent-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 미설치"
미설치 시 안내:
bash
ls -d "/Applications/Google Chrome Beta.app" 2>/dev/null && echo "✅ Chrome Beta 설치됨" || echo "❌ Chrome Beta 미설치"
未安装时提示:

Step 3: 프로젝트 루트에 e2e/ 폴더 생성

步骤3:在项目根目录创建e2e/文件夹

bash
mkdir -p e2e/lib
bash
mkdir -p e2e/lib

Step 4: 인프라 코드 복사

步骤4:复制基础设施代码

references/
폴더의 인프라 코드 4개를
e2e/
에 복사한다.
소스 (references/)대상 (e2e/)
e2e.sh
e2e/e2e.sh
pwc.sh
e2e/pwc.sh
connect.js
e2e/lib/connect.js
selector.js
e2e/lib/selector.js
gmail-메일목록.js
e2e/시나리오/gmail-메일목록.js
(최초 1회, 없을 때만)
references 파일을 Read 도구로 읽은 뒤 Write 도구로 대상 경로에 작성한다. 인프라 파일은 항상 최신으로 덮어쓴다 (기존 파일이 있어도 덮어씀).
references/
文件夹下的4个基础设施代码文件复制到
e2e/
目录下:
源路径 (references/)目标路径 (e2e/)
e2e.sh
e2e/e2e.sh
pwc.sh
e2e/pwc.sh
connect.js
e2e/lib/connect.js
selector.js
e2e/lib/selector.js
gmail-메일목록.js
e2e/시나리오/gmail-메일목록.js
(仅首次,不存在时复制)
使用Read工具读取references下的文件,再用Write工具写入到目标路径。基础设施文件始终覆盖为最新版本(即使已有旧文件也会覆盖)。

Step 5: 시나리오 폴더 생성 + 테스트 시나리오 배포

步骤5:创建场景文件夹 + 部署测试场景

bash
undefined
bash
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.sh
bash
chmod +x e2e/e2e.sh e2e/pwc.sh

Step 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
    ,
    selector.js
    는 references의 최신 버전으로 항상 교체
  • 글로벌 도구 자동 설치 금지: 사용자에게 명령어를 안내하고 확인을 받은 후 진행
  • 시나리오 실행은 반드시
    ./e2e.sh run
    :
    node 시나리오.js
    직접 실행 시
    playwright-core
    를 못 찾음.
    e2e.sh
    NODE_PATH
    에 전역 npm 모듈 경로를 설정해야 정상 동작

  • 场景文件夹保护:如果
    e2e/시나리오/
    文件夹已存在,绝对不要覆盖或删除
  • 基础设施文件始终覆盖
    e2e.sh
    pwc.sh
    connect.js
    selector.js
    始终替换为references中的最新版本
  • 禁止自动安装全局工具:向用户展示安装命令,获得确认后再继续
  • 必须通过
    ./e2e.sh run
    执行场景
    :直接执行
    node 시나리오.js
    会找不到
    playwright-core
    ,需要
    e2e.sh
    NODE_PATH
    中配置全局npm模块路径才能正常运行

완료 조건 체크리스트

完成条件检查清单

  • 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授予执行权限
  • 已输出完成提示