미세한 차이(0.01%)로 가짜 실패 발생 데이터 로딩 완료 후 스크린샷을 찍어야 하는 문제 애니메이션 요소로 인해 스크린샷 차이 발생 써드파티 플러그인(iframe 등)으로 인한 불필요한 변경 감지 스크롤이 있는 페이지에서 하단 요소 검증 실패배경 및 문제 인식
Playwright Visual Comparisons 도입
도입 과정에서 겪은 주요 문제와 해결책
문제: 테스트 실행 환경(OS, 브라우저, 디스플레이 설정 등)에 따라 폰트 렌더링 차이 발생.
해결: Docker 컨테이너를 활용해 모든 테스트를 동일한 환경에서 실행.
문제: 페이지가 완전히 로딩되기 전에 스크린샷을 찍으면, 로딩 UI가 포함되는 경우 발생.
해결: getByText + toBeVisible을 활용하는 유틸리티 함수로 특정 문자열이 나타날 때까지 대기.
문제: CSS 애니메이션, Canvas, SVG, WebGL 요소가 매번 다른 타이밍에 캡처됨 & flaky test가 됨.
해결: 애니메이션 비활성화를 위한 각종 처리 및 부가적인 테스트 실행 효율화
문제: 고객 피드백, 설문조사, 챗봇 등의 써드파티 플러그인이 iframe을 통해 로딩되며 시각적 변화 생성.
해결: 스크린샷 생성 시 공통 css 처리를 통해 iframe과 특정 플러그인 요소를 보이지 않게 처리
문제: toHaveScreenshot은 기본적으로 현재 보이는 화면만 캡처하여, 스크롤 관련 처리 필요
해결: fullPage: true 옵션을 적용해 전체 페이지 스크린샷을 캡처하도록 설정.결론