경험 중심 — UI 자동화 테스트가 CI에서만 간헐적으로 실패하던 문제
팀 프로젝트에서 Playwright로 E2E 테스트를 처음 도입하였습니다. 로컬에서는 통과하는데 CI에서 30% 확률로 실패하는 테스트가 발생하였습니다. 처음에는 환경 차이 문제인 줄 알았으나, 알고 보니 비동기 렌더링을 기다리지 않고 바로 클릭하는 것이 원인이었습니다.
page.click() 앞에 page.waitForSelector()를 추가하니 flaky 테스트가 사라졌습니다. 이후에는 명시적 대기를 사용하는 것을 팀 규칙으로 정하였습니다.
또한 테스트 케이스가 50개를 넘어가면서 한 테스트가 DB 상태를 바꿔서 다음 테스트가 실패하는 문제도 발생하였습니다. 각 테스트 전에 DB를 초기 상태로 리셋하는 beforeEach 훅을 추가하여 해결하였으나, 실행 시간이 2배 늘어났습니다. 테스트 격리와 속도 사이의 트레이드오프가 있다는 것을 이때 배웠습니다.