Compose 預覽版螢幕截圖測試版本發行說明

0.0.1-alpha16

這個版本支援 AGP 測試套件、改善 HTML 測試報告,並修正錯誤:

  • 整合測試套件:新增支援功能,可使用 Android Gradle 外掛程式 (AGP) 測試套件執行 Compose 預覽畫面螢幕截圖測試。如要瞭解如何設定及執行螢幕截圖測試套件,請參閱「使用測試套件進行螢幕截圖測試」。
  • HTML 測試報告強化功能:新增標題中繼資料資訊卡,顯示測試案例詳細資料 (名稱、方法、預覽、變體、套件和狀態徽章),以及錯誤摘要方塊,將失敗情形分類 (例如缺少參照圖片或維度不符),並提供快速複製到剪貼簿的功能。
  • 動態視覺差異:視覺差異現在會使用連續漸層,從細微的像素位移的細微醒目顯示,到重大差異的高對比強調,防止巢狀元件變更遭到遮蔽。

這個版本也修正了下列錯誤:

問題 說明
問題 #513276596 確保 Layoutlib 算繪錯誤會立即導致螢幕截圖測試失敗,而不是無聲無息地失敗或建立空白的參照圖片。

0.0.1-alpha15

這個版本修正了下列錯誤:

問題 說明
問題 #500417360 修正問題:使用 Kotlin 2.1 以上版本執行預覽時,由於 Layoutlib 架構的獨立類別載入器缺少 kotlin-stdlib 依附元件,因此會發生初始化當機 (NoClassDefFoundError)。
問題 #384188032 修正在可組合函式 AndroidView 工廠內膨脹 ViewHolder 物件時,轉譯程序異常終止的問題。
問題 #351302272 解決預覽畫面中可繪製資源載入失敗的問題,這些資源位於同層級或依附的專案模組中。
問題 #482664893 確保螢幕截圖測試擲回例外狀況時,驗證工作會適當失敗,而不是使用過時的螢幕截圖錯誤地成功。
問題 #497675618 JVM 涵蓋範圍代理程式 (例如 JaCoCo) 支援可組合類別的檢測。
問題 #498545960 從 JUnit 控制台錯誤堆疊追蹤中,移除內部檔案名稱 (例如 ImageVerifier.kt),以釐清偵錯輸出內容。
問題 #385613865 已移除測試結果 XML 檔案中圖片的絕對路徑用法,並改用相對路徑。
問題 #513276596 確保轉譯失敗時,螢幕截圖測試工作會正確失敗,而不是以空白螢幕截圖無聲通過。
問題 #340639802 解決預覽方法解析衝突,避免測試錯誤比對主要來源集中的相符完整方法名稱。

0.0.1-alpha14

這個版本修正了下列錯誤並提升效能:

問題 說明
問題 #469819154 修正 Compose 轉譯器中的記憶體流失問題。
問題 #470058578 修正更新參考圖片時,使用者介面凍結和記憶體錯誤的問題。
問題 #422412664 修正 Windows 和 GitHub Actions 上「指令列超出作業系統限制」的錯誤。
問題 #437223807 修正多模組專案中的資源和資產解析問題。
問題 #464899800 修正 version.properties 中命名衝突導致的 Gradle 外掛程式衝突。
問題 #482433854 修正使用 kotlin-reflect 或序列化時,可組合項目的初始化錯誤。

0.0.1-alpha13

這個版本推出以下功能:

  • 與 JDK 17 以上版本相容。
  • 修正錯誤,並改善與 Android Studio 的整合。

0.0.1-alpha12

這個版本推出以下功能:

  • 與 Android Gradle 外掛程式 (AGP) 9.0 相容。
  • 支援在 JDK 24 以上版本執行螢幕截圖測試。
  • 支援設定堆積大小上限。
  • 修正算繪失敗問題,並提升測試穩定性。
  • 加強報表功能,納入與新圖片和參考圖片相關的百分比差異和其他中繼資料。

0.0.1-alpha11

這個版本推出以下功能:

  • 與 Android Gradle 外掛程式 (AGP) 8.1 相容。
  • 開始支援剖析含有十進位值的 XML 可繪項目,不受主機語言代碼影響。
  • 如果主體機器使用 JDK 24 以上版本,系統會挑選相容的 JDK (11-23),前提是已安裝 JDK。

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 的支援。
  • 效能提升:更新了圖片差異演算法,速度更快。