Compose 미리보기 스크린샷 테스트 출시 노트

0.0.1-alpha16

이 출시에서는 AGP 테스트 모음 지원, HTML 테스트 보고서 개선사항, 버그 수정이 도입되었습니다.

  • 테스트 모음 통합: Android Gradle 플러그인 (AGP) 테스트 모음으로 Compose 미리보기 스크린샷 테스트를 실행하는 지원이 추가되었습니다. 스크린샷 테스트 모음을 구성하고 실행하는 방법을 알아보려면 테스트 모음을 사용한 스크린샷 테스트를 참고하세요.
  • HTML 테스트 보고서 개선사항: 테스트 사례 세부정보 (이름, 메서드, 미리보기, 변형, 스위트, 상태 배지)를 보여주는 헤더 메타데이터 카드와 클립보드에 빠르게 복사하는 기능이 있는 실패 분류 오류 요약 상자 (예: 참조 이미지 누락 또는 치수 불일치)가 추가되었습니다.
  • 동적 시각적 차이: 이제 시각적 차이에서 미세한 픽셀 이동을 위한 미묘한 강조 표시부터 주요 차이를 위한 고대비 강조 표시까지 연속 그라데이션을 사용하여 중첩된 구성요소 변경사항이 가려지지 않습니다.

이번 출시에는 다음과 같은 버그 수정도 포함되어 있습니다.

문제 설명
문제 #513276596 Layoutlib 렌더링 오류가 자동으로 실패하거나 빈 참조 이미지를 만드는 대신 스크린샷 테스트가 즉시 실패하도록 지원합니다.

0.0.1-alpha15

이번 출시에는 다음과 같은 버그 수정이 포함되어 있습니다.

문제 설명
문제 #500417360 Layoutlib 프레임워크의 격리된 클래스 로더에 kotlin-stdlib 종속 항목이 누락되어 Kotlin 2.1 이상으로 미리보기를 실행할 때 초기화 비정상 종료 (NoClassDefFoundError)가 수정되었습니다.
문제 #384188032 컴포저블 AndroidView 팩토리 내에서 ViewHolder 객체를 인플레이션할 때 발생하는 렌더링 비정상 종료 문제가 수정되었습니다.
문제 #351302272 리소스가 형제 또는 종속 프로젝트 모듈에 있는 미리보기 내에서 드로어블 리소스 로드 실패가 해결되었습니다.
문제 #482664893 스크린샷 테스트에서 예외가 발생할 때 오래된 스크린샷으로 잘못 성공하는 대신 검증 작업이 적절하게 실패하도록 했습니다.
문제 #497675618 JVM 커버리지 에이전트 (예: JaCoCo)에 의한 컴포저블 클래스의 계측 지원
문제 #498545960 디버깅 출력을 명확히 하기 위해 JUnit 콘솔 오류 스택 트레이스에서 내부 파일 이름 (예: ImageVerifier.kt)을 삭제했습니다.
문제 #385613865 테스트 결과 XML 파일에서 이미지의 절대 경로 사용을 삭제하고 상대 경로로 대체했습니다.
문제 #513276596 렌더링 실패로 인해 빈 스크린샷으로 조용히 통과하는 대신 스크린샷 테스트 작업이 올바르게 실패하도록 했습니다.
문제 #340639802 테스트가 기본 소스 세트의 완전한 메서드 이름과 잘못 일치하는 미리보기 메서드 확인 충돌이 해결되었습니다.

0.0.1-alpha14

이번 출시에는 다음과 같은 버그 수정 및 성능 개선사항이 포함되어 있습니다.

문제 설명
문제 #469819154 Compose 렌더러의 메모리 누수가 수정되었습니다.
문제 #470058578 참조 이미지를 업데이트할 때 UI가 멈추고 메모리 오류가 발생하는 문제 수정
문제 #422412664 Windows 및 GitHub Actions에서 '명령줄이 운영체제 제한을 초과함' 오류가 수정되었습니다.
문제 #437223807 다중 모듈 프로젝트에서 리소스 및 애셋 해결 문제를 수정했습니다.
문제 #464899800 version.properties의 이름 충돌로 인해 발생하는 Gradle 플러그인 충돌이 수정되었습니다.
문제 #482433854 kotlin-reflect 또는 직렬화를 사용하는 컴포저블의 초기화 오류를 수정했습니다.

0.0.1-alpha13

이번 출시에서는 다음이 도입됩니다.

  • JDK 17 이상과의 호환성
  • 버그가 수정되고 Android 스튜디오와의 통합이 개선되었습니다.

0.0.1-alpha12

이번 출시에서는 다음이 도입됩니다.

  • Android Gradle 플러그인 (AGP) 9.0과의 호환성
  • JDK 24 이상에서 스크린샷 테스트 실행 지원
  • 최대 힙 크기를 구성하는 지원
  • 렌더링 실패가 수정되고 테스트 안정성이 개선되었습니다.
  • 새 이미지 및 참조 이미지와 관련된 비율 차이 및 기타 메타데이터를 포함하도록 보고서가 개선되었습니다.

0.0.1-alpha11

이번 출시에서는 다음이 도입됩니다.

  • Android Gradle 플러그인 (AGP) 8.13과의 호환성
  • 호스트 머신의 언어와 관계없이 십진수 값을 사용하여 XML 드로어블을 파싱하는 지원이 추가되었습니다.
  • JDK 24 이상을 사용하는 호스트 머신의 경우 호환되는 JDK (11~23)가 설치되어 있다면 선택됩니다.

0.0.1-alpha10

이번 출시에서는 다음이 도입됩니다.

  • 이 버전부터는 모든 미리보기 함수를 @PreviewTest 주석으로 표시해야 합니다. 주석이 없는 미리보기는 실행되지 않습니다.

  • 참조 이미지 디렉터리가 {module}/src/{variant}/screenshotTest/reference에서 {module}/src/screenshotTest{Variant}/reference로 변경됩니다. 생성된 참조 이미지가 프로덕션 코드에 포함되지 않도록 하고 다른 테스트 유형의 디렉터리 구조와 일치하도록 하기 위해서입니다.

  • {variant}PreviewScreenshotRender 작업이 삭제됩니다. 이미지 렌더링이 JUnit 테스트 엔진으로 이전됩니다.

  • update{Variant}ScreenshotTest 작업은 업데이트하기 전에 새 렌더링 이미지를 참조 이미지와 비교합니다. 지정된 기준점보다 큰 차이가 있는 이미지만 업데이트됩니다. --updateFilter 명령줄 플래그가 삭제되었습니다.

0.0.1-alpha06

이번 출시에서는 다음이 도입됩니다.

이미지 차이 기준: 이 새로운 전역 기준 설정을 사용하면 스크린샷 비교를 더 세밀하게 제어할 수 있습니다. 구성하려면 모듈의 build.gradle.kts를 업데이트하세요.

    testOptions {
        screenshotTests {
            imageDifferenceThreshold = 0.0001f // 0.01%
        }
    }

이 기준점은 모듈에 정의된 모든 스크린샷 테스트에 적용됩니다.

  • 버그 수정: 일부 Compose 렌더러 버그 수정 및 빈 Compose 지원 추가
  • 성능 개선: 이미지 차이 알고리즘이 더 빨라지도록 업데이트되었습니다.