AI 코드 검증, Playwright E2E 테스트로 자동화
AI 코드 생성 시대에 검증 병목 현상 심화, 사람이 일일이 검증하는 것의 한계 노출
AI 에이전트에게 Playwright E2E 테스트 환경을 제공하여 브라우저 조작 및 코드 검증 능력 부여
결정론적 테스트 코드 작성을 통해 AI의 비결정론적 검증 방식 개선 및 토큰 소모 문제 해결
핵심 사용자 플로우(Critical User Flow)부터 E2E 테스트 적용, 테스트 생성 비용 절감 및 전체 시스템 수준 검증 강화
자가개선 루프(Self-Improving Loop) 구축을 통해 AI가 실패한 테스트를 스스로 수정하도록 하여 개발 생산성 향상
AI 코드 생성 시대의 검증 병목과 E2E 테스트의 필요성
AI 코드 생성 도구 도입 후 개발 속도는 빨라졌지만, 생성된 코드의 검증(Verification)이 새로운 병목으로 부상함. AI는 자신이 작성한 코드의 결함을 스스로 찾아내기 어렵고, 사람이 모든 PR을 직접 검증하는 것은 현실적으로 불가능함. 특히 프레임워크 내부 변경으로 인한 기존 기능의 회귀(Regression)는 AI가 놓치기 쉬운 부분임. 따라서 실제 사용 환경과 유사한 End-to-End(E2E) 테스트를 통해 UI부터 백엔드 API까지 통합적으로 검증하는 것이 중요해짐. 이는 Testing Trophy의 최상단에 위치하며, 이전에는 비용 문제로 주저했지만 AI 시대에는 필수적인 요소가 됨.
Playwright E2E 테스트 환경 구축 및 테스트 생성 전략
대규모 프로젝트에서 E2E 테스트 범위를 효과적으로 넓히기 위해 핵심 사용자 플로우(Critical User Flow)부터 시작하는 것이 중요함. Playwright의 Test Generator(codegen)를 활용하면 브라우저 조작을 녹화하여 테스트 코드 초안을 쉽게 생성할 수 있음. 생성된 코드는 AI 에이전트의 도움을 받아 팀 컨벤션에 맞게 정리하고, 테스트 작성을 자동화할 수 있음. 또한, AGENTS.md, E2E 테스트 가이드 등 맥락 정보를 제공하여 AI 에이전트가 코드베이스에 대한 이해도를 높이고 효율적으로 테스트를 작성하도록 지원함.
테스트 독립성 확보 및 모킹 전략
E2E 테스트의 실행 속도와 안정성을 높이기 위해 테스트 독립성(Test Independence) 확보가 필수적임. 각 테스트는 이전 단계의 상태에 의존하지 않고, 테스트용 API 호출이나 Playwright의 storageState를 활용하여 특정 시점부터 시작하도록 구성해야 함. 외부 의존성(External Dependencies)은 Playwright의 `page.route`나 환경 변수를 이용해 통제 가능한 범위 내에서만 모킹(Mocking)하여, 실제 시스템 검증이라는 E2E 테스트의 본질을 유지하면서도 외부 서비스 변경으로 인한 불필한 테스트 실패를 방지해야 함.
AI 기반 자가개선 루프(Self-Improving Loop) 구축
실패한 테스트를 사람이 직접 수정하는 부담을 줄이기 위해 AI 에이전트에게 자가개선 루프(Self-Improving Loop)를 구축함. CI에서 테스트 실패 시, Playwright의 trace 아티팩트를 분석하여 원인을 진단하고 수정하는 `e2e-debug` 스킬을 활용함. Playwright의 공식 Healer 에이전트나 커스텀 스킬을 통해 실패한 테스트를 자동으로 수정하고 재실행하는 과정을 반복함. 이는 루프 엔지니어링(Loop Engineering)의 핵심으로, AI가 스스로 학습하고 개선하는 환경을 제공하여 개발 생산성을 극대화함.
E2E 테스트의 가이드 및 센서 역할과 사람의 역할
E2E 테스트 코드는 실행 시 결정론적 센서(Deterministic Sensor) 역할을 하여 실제 동작을 검증하고, 읽을 때는 해당 기능의 명세(Specification) 역할을 하는 가이드(Guide)가 됨. AI 에이전트가 테스트 계획, 작성, 수정을 자동화하더라도, 시스템의 맥락 이해, 비즈니스 로직 판단, 테스트 인프라 설계 등은 여전히 사람의 역할임. AI는 예상된 문제만 검증할 수 있으므로, 사람이 설계하고 조향(Steering)하는 과정이 필수적임. 결국 루프의 품질은 하네스 구성에 달려있음.