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) 처리 및 컴포넌트 테스트를 적극적으로 활용해야 한다. 또한, 스모크 테스트 전략과 변경된 코드 기반 테스트 실행을 조합하면 더욱 빠르고 효율적인 테스트 환경을 구축할 수 있다.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs