DEV Community

Sol Lee
Sol Lee

Posted on

Playwright E2E 테스트 실행 속도를 높이는 전략

Playwright는 강력한 E2E 테스트 도구이지만, 테스트 수가 많아지면 실행 속도가 느려지는 문제가 발생할 수 있다. 이를 해결하기 위해 몇 가지 최적화 전략을 적용할 수 있는데, 이번 글을 통해 공유해보려고 한다.

실제로 필자가 재직중인 회사에서 동료 개발자들이 테스트 시간이 오래 걸린다는 푸념을 하고 있던 상황이었고, 나는 리서치를 통해 개선 사항들을 정리하고 실제로 적용해본 경험이 있다.

1. 더 많은 워커(Worker) 실행하기

Playwright는 기본적으로 병렬 실행을 지원하며, --workers 옵션을 조정하면 더 많은 테스트를 동시에 실행할 수 있다.

npx playwright test --workers=4

테스트 환경과 머신 리소스에 따라 최적의 워커 수를 조정하면 실행 속도를 높일 수 있다.

2. 가능한 경우 목(Mocking) 활용하기

실 API 호출을 최소화하면 테스트 속도를 크게 향상할 수 있다. Playwright의 request API를 사용해 API 응답을 목(mock) 처리하면 네트워크 요청 대기 시간을 줄일 수 있다.

page.route('**/api/data', async (route) => {
  await route.fulfill({
    status: 200,
    body: JSON.stringify({ data: 'mocked response' }),
  });
});
Enter fullscreen mode Exit fullscreen mode

API 호출이 꼭 필요하지 않은 경우, 목 데이터를 활용해 실행 속도를 최적해보자.

3. 컴포넌트 테스트 고려하기

전체적인 E2E 테스트를 실행하기 전에, Playwright의 컴포넌트 테스트를 활용하면 특정 UI 컴포넌트만 빠르게 검증할 수 있다. 이렇게 하면 불필요한 전체적인 UI 테스트 없이도 주요 기능을 검증할 수 있다.

npx playwright test --config=playwright.component.config.ts

4. 서브셋 테스트 실행하기 (스모크 테스트)

모든 테스트를 매번 실행하는 대신, 가장 중요한 기능을 검증하는 스모크 테스트(smoke test) 세트를 정의하면 실행 시간을 절약할 수 있다.

npx playwright test --grep @smoke

테스트 케이스에 @smoke 태그를 추가하고, 주요 기능만 실행하도록 설정하면 빠르게 주요 시나리오를 검증할 수 있다.

5. 변경된 코드 기반으로 테스트 실행하기

모든 테스트를 실행하는 대신, 변경된 코드와 관련된 테스트만 실행하면 시간을 단축할 수 있다.

예를 들어, git diff를 활용해 변경된 파일을 확인하고, 관련 테스트만 실행하는 스크립트를 만들 수 있다.

git diff --name-only HEAD~1 | grep "src/" | xargs -I {} npx playwright test --grep="{}"

이 방법을 CI/CD 환경에서 적용하면 테스트 실행 시간을 더욱 단축할 수 있다.

실무 프로젝트에 적용 결과

  • 테스트 개수: 10개
  • 기본 실행 환경: 로컬 개발 환경에서 실행
  • 단일 워커(Worker)로 실행 시 평균 소요 시간: 10분 (1개당 1분 소요)

최적화 적용 전후 비교

적용 전략 AS-IS TO-BE 기대 효과
멀티 워커 사용 (4 workers) 10분 약 3분 병렬 실행으로 테스트 분산
API Mocking 적용 10분 약 6~7분 네트워크 대기 시간 단축
컴포넌트 테스트 활용 10분 5분 이하 전체 UI 테스트 감소
스모크 테스트 실행 (3개만 실행) 10분 약 3분 핵심 기능만 검증
변경 코드 기반 테스트 실행 10분 약 2~5분 관련 테스트만 실행

결론적으로, 최적화 전략을 조합하면 10분 → 2~3분 수준으로 단축할 수 있었다.
특히 멀티 워커 실행 + API Mocking + 스모크 테스트를 함께 적용하면 3배 이상 빠르게 테스트를 완료할 수 있다.

마무리하며

Playwright의 E2E 테스트 실행 속도를 최적화하려면 병렬 실행을 활용하고, 목(mock) 처리 및 컴포넌트 테스트를 적극적으로 활용해야 한다. 또한, 스모크 테스트 전략과 변경된 코드 기반 테스트 실행을 조합하면 더욱 빠르고 효율적인 테스트 환경을 구축할 수 있다.

Top comments (0)