Playwright
Playwright는 현대 웹 앱을 위한 안정적인 end-to-end 테스트를 가능하게 합니다.
monorepo에서 실행하려는 각 테스트 스위트에 대해 Playwright 패키지를 만드는 것을 권장합니다. 이는 필요에 따라 애플리케이션별, 도메인별 또는 기타 체계로 분할된 스위트를 의미할 수 있습니다. 확실하지 않은 경우 애플리케이션당 Playwright 패키지를 만드는 것으로 시작하세요.
Playwright의 환경 변수 처리
Playwright가 올바르게 실행되려면 여러 환경 변수가 필요합니다. Strict Mode의 작업 내에서 이러한 변수를 사용할 수 있도록 하려면 범위 지정 기본 설정에 따라 end-to-end 작업에서 passThroughEnv를 사용하거나 전역적으로 globalPassThroughEnv를 사용하여 pass through 변수에 추가해야 합니다.
아래 passThroughEnv를 사용하는 구성은 PLAYWRIGHT_로 시작하는 환경 변수를 e2e 작업에 허용하며 해싱에 영향을 주지 않습니다.


이러한 Playwright 내부 변수가 변경될 때 캐시를 놓치지 않도록 pass through 변수가 사용됩니다. 예를 들어, PLAYWRIGHT_BROWSERS_PATH는 Playwright에서 사용하는 브라우저 바이너리를 찾는 데 사용되며, 이 위치가 변경되면 캐시를 놓치지 않으려고 합니다.
작업 그래프 설계
end-to-end 스위트에 대한 적절한 캐싱 동작을 보장하려고 합니다. 특히, 몇 가지 주요 상황에서 캐시 미스를 확인하려고 합니다:
- 테스트 스위트가 변경되면 캐시가 미스됩니다.
- 스위트에서 테스트한 코드가 변경되면 캐시가 미스됩니다.
첫 번째 요구 사항은 테스트 코드가 변경되면 작업의 해시가 변경되므로 자연스럽게 충족됩니다. 그러나 두 번째 요구 사항은 end-to-end 테스트가 애플리케이션 소스 코드의 변경 사항에 의존하도록 해야 함을 의미합니다.
이 관계는 turbo.json과 end-to-end 스위트의 package.json에서 표현할 수 있습니다.


나중에 end-to-end 테스트를 실행하려면 the --only 플래그를 사용하여 애플리케이션의 빌드를 먼저 실행하지 않고 end-to-end 테스트를 실행합니다. 예를 들어, 명령은 turbo run e2e --filter=@repo/playwright-myapp --only와 같을 수 있습니다.
Playwright 유틸리티 공유
end-to-end 테스트 스위트에서 필요한 공유 유틸리티에 대한 공통 패키지를 만들 수도 있습니다. 이 공유 패키지에서 peerDependencies를 사용하여 공유 패키지 자체에 Playwright를 설치하지 않고도 소비자에서 사용되는 Playwright에 액세스할 수 있도록 하는 것을 권장합니다.