
예시 테스트에서 AI 에이전트는 작업공간을 Pro 요금제로 바꾸고 청구서 미리보기의 비례 배분 금액을 확인한다. e2e는 이때 수행한 에이전트 동작을 기억해 가능한 경우 다음 실행에서 모델 호출 없이 재생한다.
TesterArmy가 공개한 오픈소스 TypeScript 테스트 프레임워크 e2e는 웹과 모바일 앱을 같은 API로 테스트한다. 자연어로 목표를 지정하는 에이전트 동작과 정확한 위치 지정자·검증 코드를 함께 쓸 수 있어, 테스트를 만드는 개발자와 AI 에이전트를 활용하는 팀이 살펴볼 만하다.
e2e는 어떤 도구인가?
e2e는 앱에서 사람이 하듯 동작하는 테스트를 작성하고 실행하는 도구다. 반복 동작을 저장해 재생하는 방식은 녹화한 절차를 다시 실행하는 것에 빗대면 이해하기 쉽다. 다만 테스트 목표를 자연어로 적어 에이전트가 동작을 수행하게 할 수도 있고, 필요한 단계는 코드로 정확하게 지정할 수도 있다.
웹 테스트 예시는 다음과 같다. 원문에는 화살표가 =>로 표기돼 있다.
import { test, expect } from 'e2e';
test('a member upgrades to Pro', async ({ app, agent, screen }) => { await app.open('/settings/billing');
await agent.act('upgrade the workspace to the Pro plan'); await agent.assert('the invoice preview shows a prorated amount');
await expect(screen.getByRole('status')).toContainText('Pro');});
설치는 npx e2e init으로 시작할 수 있다. AI 에이전트용 설정을 추가하는 명령으로 npx skills add tester-army/e2e도 안내한다.
모델과 실행 환경은 어떻게 설정하나?
e2e는 모델 제공자와 실행 엔진을 사용자가 선택하도록 구성한다. AI SDK 모델을 사용할 수 있으며, ChatGPT·GitHub Copilot·SuperGrok 구독, Vercel AI Gateway나 OpenRouter 키, 로컬 서버를 이용할 수 있다고 안내한다. 설정 화면은 게이트웨이를 선택하는 예시를 든다.
import { gateway } from 'ai';
model: gateway('openai/gpt-6-luna-fast'),
에이전트에는 사용할 모델을 지정한다.
import { gateway } from 'ai';
agents: { default: createAgent({ model: gateway(''), }),},
시스템 프롬프트로 에이전트의 역할과 테스트 기준을 정할 수 있다.
e2e.config.tsagents: { default: createAgent({ system: '', }),},
웹·모바일 환경을 선택하거나 자체 실행 엔진을 연결할 수 있다. 다음 조각은 웹 엔진에 접속 주소를 지정하는 예시다.
import { web } from '@e2e-dev/web';
export default { targets: [{ engine: web({ url: '' }) }], agents: { default: createAgent({ model: gateway('openai/gpt-6-luna-fast'), }), },} satisfies E2EConfig;
설정을 합친 예시는 다음과 같다.
import type { E2EConfig } from 'e2e';import { createAgent } from 'e2e/agent';import { web } from '@e2e-dev/web';import { gateway } from 'ai';
export default { targets: [{ engine: web({ url: 'http://localhost:3000' }) }], agents: { default: createAgent({ model: gateway('openai/gpt-6-luna-fast'), system: 'You are a QA testing agent.', }), },} satisfies E2EConfig;
반복 실행과 모바일 테스트에서 달라지는 점은?
e2e는 호환되는 에이전트 동작을 캐시에 저장해 불필요한 모델 호출을 피하는 것을 핵심 기능으로 내세운다. 테스트 목표를 자연어로 적고 에이전트가 동작하게 하는 한편, 정확성이 필요한 부분에는 위치 지정자와 결정적 검증을 쓸 수 있다. 웹과 모바일 앱에 같은 API를 적용하고 자체 실행 엔진도 연결할 수 있다.
모바일 테스트는 @e2e-dev/mobile이 agent-device를 통해 iOS 시뮬레이터와 Android 에뮬레이터를 제어하는 방식이다. 웹에서 작성한 것과 같은 테스트, 픽스처, 검증을 사용할 수 있다고 안내한다.
CI(지속적 통합) 모드에서는 한 번 재시도하고 추적 캐시를 읽기 전용으로 사용한다. 변경이 없으면 검증된 에이전트 동작을 모델 호출 없이 재생한다. 실패 보고서에는 실패한 단계, 스크린샷, 추적 정보와 .e2e 아래의 로그가 포함된다. --headed 또는 --debug로 실행 과정을 볼 수 있으며, 오류 코드별 해결 방법은 문서에서 확인할 수 있다.
도입 전에 무엇을 확인해야 하나?
다른 프레임워크에서 옮길 때는 Playwright, Cypress, Selenium, Detox, Maestro용 마이그레이션 안내를 참고할 수 있다. 비밀값은 환경 변수에 두고 설정에서 이름으로 참조하며, 실행 시 주입하는 방식이라 테스트 코드나 대화 기록에 값이 들어가지 않는다고 FAQ는 설명한다. 모델 키는 CI 작업의 비밀값으로 전달해야 한다.
도입할 때는 사용할 모델 제공자와 모델 키, 대상 앱의 웹·모바일 실행 환경, 비밀값 관리 방식을 확인하면 된다. 원문은 요금이나 지원되는 각 모델의 구체적인 범위, 캐시가 재생되는 세부 판정 조건은 밝히지 않는다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요