0.0.1-alpha16
This release introduces support for AGP test suites, HTML test report improvements, and bug fixes:
- Test suites integration: Added support for running Compose preview screenshot tests with Android Gradle Plugin (AGP) test suites. To learn how to configure and run screenshot test suites, see Screenshot testing with test suites.
- HTML test report enhancements: Added a header metadata card showing test case details (name, method, preview, variant, suite, and status badge) and an error summary box categorizing failures (such as missing reference images or dimension mismatches) with quick copy-to-clipboard functionality.
- Dynamic visual diffs: Visual diffs now use a continuous gradient from subtle highlights for minor pixel shifts to high-contrast emphasis for major differences, preventing nested component changes from being obscured.
This release also includes the following bug fixes:
| Issue | Description |
|---|---|
| issue #513276596 | Help ensure that Layoutlib rendering errors fail screenshot tests immediately instead of failing silently or creating blank reference images. |
0.0.1-alpha15
This release includes the following bug fixes:
| Issue | Description |
|---|---|
| issue #500417360 | Fixed an initialization crash (NoClassDefFoundError) when running previews with Kotlin 2.1+ due to a missing kotlin-stdlib dependency in the Layoutlib framework's isolated class loader. |
| issue #384188032 | Fixed a rendering crash when inflating a ViewHolder object inside a Composable AndroidView factory. |
| issue #351302272 | Resolved drawable resource loading failures inside previews where resources reside in sibling or dependent project modules. |
| issue #482664893 | Ensured that validation tasks fail appropriately when screenshot tests throw exceptions, rather than incorrectly succeeding with a stale screenshot. |
| issue #497675618 | Supported instrumentation of composable classes by JVM coverage agents (such as JaCoCo). |
| issue #498545960 | Stripped internal filenames (for example, ImageVerifier.kt) from JUnit console error stack traces to clarify debugging output. |
| issue #385613865 | Removed absolute path usage for images in the test results XML file, replacing them with relative paths. |
| issue #513276596 | Ensured rendering failures correctly fail the screenshot test tasks rather than passing silently with a blank screenshot. |
| issue #340639802 | Resolved preview method resolution conflicts where tests were incorrectly matched to matching fully-qualified method names in the main sourceset. |
0.0.1-alpha14
This release includes the following bug fixes and performance improvements:
| Issue | Description |
|---|---|
| issue #469819154 | Fixed memory leaks in the Compose renderer. |
| issue #470058578 | Fixed UI freezes and memory errors when updating reference images. |
| issue #422412664 | Fixed "command line exceeds operating system limits" errors on Windows and GitHub Actions. |
| issue #437223807 | Fixed resource and asset resolution issues in multi-module projects. |
| issue #464899800 | Fixed a Gradle plugin conflict caused by a naming collision in version.properties. |
| issue #482433854 | Fixed initialization errors for composables using kotlin-reflect or serialization. |
0.0.1-alpha13
This release introduces:
- Compatibility with JDK 17 or higher.
- Bug fixes and improved integration with Android Studio.
0.0.1-alpha12
This release introduces:
- Compatibility with Android Gradle Plugin (AGP) 9.0.
- Support for running screenshot tests on JDK 24 and higher.
- Support to configure maximum heap size.
- Fixed rendering failures and improved test stability.
- Enhanced the reporting to include percentage difference and other metadata related to new and reference images.
0.0.1-alpha11
This release introduces:
- Compatibility with Android Gradle Plugin (AGP) 8.13.
- Added support for parsing XML drawables with decimal values regardless of the host machine's locale.
- For a host machine using JDK 24 or higher, compatible JDK (11-23) will be picked up, provided one is installed.
0.0.1-alpha10
This release introduces:
From this version, you must mark all of your preview functions with the
@PreviewTestannotation. Previews without the annotation won't be executed.Reference image directory is changed from
{module}/src/{variant}/screenshotTest/referenceto{module}/src/screenshotTest{Variant}/reference. This is to make sure those generated reference images won't be part of the production code, and to be aligned with the directory structure of other test types.The
{variant}PreviewScreenshotRendertask is removed. Image rendering is migrated into JUnit Test Engine.The
update{Variant}ScreenshotTesttask will compare new rendering images to reference images before updating. It will only update images that have differences greater than a specified threshold. The--updateFiltercommand-line flag was removed.
0.0.1-alpha06
This release introduces:
Image Difference Threshold: This new global threshold setting lets you gain finer control over screenshot comparisons. To configure, update your module's build.gradle.kts:
testOptions {
screenshotTests {
imageDifferenceThreshold = 0.0001f // 0.01%
}
}
This threshold will be applied to all screenshot tests defined in the module.
- Bug Fixes: Some Compose Renderer bugs and added support for empty compose.
- Performance Enhancements: Image diffing algorithm was updated to be faster.