
E2E 테스트는 작성하기 귀찮다. 셀렉터를 찾고, 시나리오를 짜고, 실패하면 디버깅하고. 그래서 많은 팀이 E2E 테스트를 미루거나 아예 안 쓴다.
expect-cli는 이 문제를 AI 에이전트에게 넘긴다. 하나의 명령어로:
- 코드 변경사항 스캔
- 테스트 계획 생성
- 실제 브라우저에서 실행
어떻게 작동하나
# 초기화
npx -y expect-cli@latest init
# 대화형 TUI
expect-cli open
# 자연어로 테스트 지시
expect-cli -m "test the login flow" -y
# 브랜치 변경사항 모두 테스트
expect-cli --target branch
# unstaged 변경사항 테스트
expect-cli --target unstaged
CLI 옵션
| 옵션 | 설명 |
|---|---|
-m, --message | 자연어 테스트 지시 |
-f, --flow | 저장된 플로우 재사용 |
-y, --yes | 계획 리뷰 스킵, 즉시 실행 |
-a, --agent | 에이전트 제공자 (claude 또는 codex) |
-t, --target | 테스트 대상: unstaged, branch, changes (기본값) |
--verbose | 상세 로깅 |
핵심 특징
1. 코드 변경사항 기반
Git diff를 분석해서 무엇이 바뀌었는지 이해하고, 그에 맞는 테스트 계획을 생성.
--target changes— 현재 변경사항 (기본)--target branch— 브랜치 전체 변경사항--target unstaged— unstaged 변경사항
2. 실제 브라우저에서 실행
헤드리스가 아닌 실제 브라우저에서 테스트. Playwright 기반으로:
- 실제 사용자 경험 시뮬레이션
- 시각적 디버깅 가능
- 네트워크, 타이밍 이슈 포착
3. 자연어 테스트 지시
expect-cli -m "로그인 플로우 테스트해줘" -y
셀렉터를 찾고 시나리오를 짜는 건 에이전트가.
4. 플로우 재사용
한 번 실행한 테스트는 플로우로 저장. -f 옵션으로 재사용:
expect-cli -f login-flow
5. 멀티 에이전트 지원
- Claude — Claude Code / Claude API
- Codex — OpenAI Codex
워크플로우 예시
PR 전 테스트
# PR 올리기 전에 브랜치 변경사항 테스트
expect-cli --target branch -m "test all new features" -y
개발 중 빠른 테스트
# 방금 작성한 코드 테스트
expect-cli --target unstaged -m "test the form validation"
CI/CD 통합
# CI에서 실행
NO_TELEMETRY=1 expect-cli --target branch -y
기존 E2E 테스트와의 차이
| 항목 | 기존 E2E | expect-cli |
|---|---|---|
| 작성 | 수동으로 셀렉터, 시나리오 작성 | 자연어로 지시 |
| 유지보수 | 코드 변경 시 셀렉터 업데이트 | 에이전트가 자동 적응 |
| 실행 | 헤드리스 브라우저 | 실제 브라우저 |
| 디버깅 | 로그, 스크린샷 | 실시간 시각 확인 |
| 비용 | 작성 시간 | API 호출 비용 |
언제 유용한가
✅ 적합한 경우:
- 빠르게 프로토타입 테스트
- PR 전 스모크 테스트
- 자주 바뀌는 UI
- E2E 테스트 작성이 부담스러운 소규모 팀
⚠️ 주의할 경우:
- 정밀한 회귀 테스트가 필요한 경우
- 100% 결정적 테스트가 필요한 경우
- API 비용이 민감한 경우
시작하기
# 설치 및 초기화
npx -y expect-cli@latest init
# 데모 체험
# https://expect.dev
마치며: 테스트 작성에서 테스트 지시로
expect-cli는 테스트를 “작성”하는 게 아니라 “지시”하는 것으로 바꾼다.
여전히 정밀한 회귀 테스트는 기존 방식이 필요하다. 하지만:
- 빠른 피드백
- 자주 바뀌는 UI
- PR 전 체크
이런 상황에서는 AI 에이전트에게 맡기는 게 훨씬 효율적일 수 있다.
🔗 관련 정보
- GitHub: https://github.com/millionco/expect
- Demo: https://expect.dev
- npm: https://npmjs.com/package/expect-cli
- License: FSL-1.1-MIT
- By: Million Software, Inc.