TL;DR

  • e2e는 웹·모바일 앱 테스트에서 자연어 기반 AI 에이전트 동작과 결정론적 검증을 결합하고, 검증된 동작을 캐시해 변경이 없을 때 모델 호출 없이 재생하는 오픈소스 TypeScript 프레임워크임
  • 테스트는 app.open, agent.act, agent.assert, 화면 요소에 대한 expect를 한 흐름에 함께 작성하는 방식임
  • 모델, AI 게이트웨이, 시스템 프롬프트, 실행 엔진을 선택할 수 있으며 웹·모바일 또는 사용자 정의 엔진을 구성할 수 있음
  • CI 모드에서는 한 번 재시도, 읽기 전용 추적 캐시, 변경 없는 에이전트 동작 재생을 적용함
  • iOS 시뮬레이터와 Android 에뮬레이터를 지원하며, Playwright·Cypress·Selenium·Detox·Maestro 마이그레이션 안내와 실패 단계·스크린샷·추적·로그 보고서를 제공함

E2E: 오픈소스 AI 테스트 프레임워크

  • e2e는 웹, 모바일 앱 등을 위한 사용자 정의 가능한 TypeScript 테스트 프레임워크임
  • 사람과 에이전트를 위한 테스트를 표방하며, npx e2e init으로 시작하고 npx skills add tester-army/e2e로 스킬을 추가하는 방식을 안내함
  • 예시 테스트는 앱의 결제 설정을 열고, 에이전트에 워크스페이스를 Pro 요금제로 업그레이드하도록 요청한 뒤, 청구서 미리보기에 비례 배분 금액이 표시되는지 확인하고 화면의 상태 요소에 Pro가 포함되는지 검증함

01. e2e를 사용하는 이유

  • AI 테스트는 매번 처음부터 시작하는 경우가 많음
  • e2e는 에이전트의 동작을 기억하고 가능한 경우 재생해 모델을 다시 호출하지 않음
  • 반복 추론 감소, 토큰 절약, 비용 절감이 핵심 효익임

02. e2e 구성

  • 테스트 스택의 각 계층을 선택하며, 설정 파일을 통해 구성을 연결함
  • 연결 방식으로 Vercel AI Gateway, OpenRouter, 직접 API 키, 구독을 선택할 수 있음
  • 원하는 모델을 선택하며, 예시에는 openai/gpt-6-luna-fast가 제시됨. 지원 모델 목록에는 OpenAI, Claude, Gemini, SpaceXAI, Llama, Mistral, DeepSeek와 사용자 정의 모델이 포함됨
  • 에이전트의 목적과 테스트 접근 방식, 확인할 항목을 시스템 프롬프트로 지정할 수 있음
  • 웹, 모바일 또는 사용자 정의 엔진을 사용할 수 있음
  • 모델·에이전트·엔진을 하나의 테스트 프레임워크에서 연결하며, 설정 예시는 @e2e-dev/web 엔진으로 http://localhost:3000을 대상으로 지정하고 AI SDK의 gateway를 통해 모델을 구성함

03. 핵심 기능

  • 불필요한 재추론 방지: 호환되는 캐시 동작을 재생해 불필요한 모델 호출을 줄임
  • 스크립트가 아닌 목표: 테스트 목표를 자연어로 기술하고 실제 동작은 에이전트가 처리함
  • 필요한 곳에서 정확성 확보: AI 기반 동작과 정확한 로케이터, 결정론적 검증을 결합함
  • AI 선택권: 선호하는 AI 모델을 선택하고 테스트 에이전트를 사용자 정의함
  • 하나의 API로 여러 환경 지원: 공유 API로 웹과 모바일 애플리케이션을 테스트함
  • 사용자 정의 엔진 연결: 자체 실행 백엔드로 프레임워크를 확장함

04. 개발자 반응

  • 반응에서는 UI 변경에 취약한 일반적인 E2E 테스트와, 같은 동작을 반복해 토큰을 소모하는 에이전트 테스트의 단점을 함께 지적함
  • 결정론적 로케이터와 에이전트 단계를 혼합하고 에이전트 실행을 캐시하는 접근이 비용과 불안정성을 줄이는 방식이라는 평가가 제시됨
  • 웹·iOS·Android 지원, 자체 모델 사용, @expo EAS Simulator와의 작동, 결정론적 테스트와 에이전트 테스트의 혼합이 언급됨
  • 일부 반응은 순수 에이전트 기반 E2E 테스트의 불안정성을 지적하며, 검증된 동작 재생과 결정론적 단언(assertion)을 함께 쓰는 구성을 긍정적으로 평가함
  • 토큰 사용량 절감 가능성이 주목받았으며, 한 사용자는 커피 주문 테스트에서 0.60달러를 절약했다고 언급함
  • 토큰 소비를 주의해야 한다는 의견과, e2e와 Playwright를 함께 사용하는 하이브리드 구성을 만든다는 의견도 있음
  • 여러 사용자가 자연어 테스트 지시와 에이전트 단계 캐시를 유용한 기능으로 언급함

05. 자주 묻는 질문

  • 어떤 AI 모델을 사용할 수 있는가?
  • AI SDK 모델을 사용할 수 있음
  • 이미 이용 중인 ChatGPT, GitHub Copilot, SuperGrok 구독으로 로그인하거나 Vercel AI Gateway·OpenRouter 키를 가져오거나 로컬 서버를 실행 대상으로 지정할 수 있음
  • 모델은 설정에서 선택하며, e2e는 별도의 마크업을 추가하지 않음
  • 모델이 비밀 정보를 볼 수 있는가?
  • 비밀 정보는 환경 변수에 보관함
  • 설정은 이름이 지정된 자격 증명을 참조하고 실행기가 실행 시 값을 채우므로, 실제 값은 테스트 코드나 대화 기록에 저장되지 않음
  • 모바일 앱을 테스트하는가?
  • @e2e-dev/mobile이 agent-device를 통해 iOS 시뮬레이터와 Android 에뮬레이터를 제어함
  • 웹 테스트에서 사용하는 것과 같은 테스트, 픽스처, 단언을 모바일 테스트에도 사용함
  • CI에서 실행할 수 있는가?
  • CI 모드가 자동으로 활성화되며 한 번 재시도하고 읽기 전용 추적 캐시를 사용함
  • 변경이 없는 에이전트 단계는 검증된 동작을 모델 호출 없이 재생함
  • 모델 키를 비밀 값으로 전달해 일반 테스트 작업처럼 실행함
  • 다른 프레임워크에서 마이그레이션할 수 있는가?
  • 문서에 Playwright, Cypress, Selenium, Detox, Maestro 마이그레이션 안내가 포함됨
  • 로케이터와 단언의 대응 방식이 유사하며, 취약한 부분부터 에이전트 단계로 대체할 수 있음
  • 실패한 실행에서 무엇을 확인할 수 있는가?
  • 정확한 실패 단계, 스크린샷, 추적 정보, 로그가 .e2e 아래에 보고서로 제공됨
  • --headed 또는 --debug로 다시 실행해 동작을 실시간으로 확인할 수 있으며, 각 오류 코드에는 문서의 해결 방법이 연결됨