Setup basic compose screenshot testing infra for regV5.
This commit is contained in:
parent
b724f2b01a
commit
9430c27e64
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1 +1,2 @@
|
||||
*.ai binary
|
||||
**/src/screenshotTest*/reference/**/*.png filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
1
.github/workflows/android.yml
vendored
1
.github/workflows/android.yml
vendored
@ -20,6 +20,7 @@ jobs:
|
||||
# gh api repos/actions/checkout/commits/v6 --jq '.sha'
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
|
||||
- name: set up JDK 17
|
||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
|
||||
|
||||
@ -112,6 +112,7 @@ gradle.projectsEvaluated {
|
||||
testTask?.let { dependsOn(it) }
|
||||
|
||||
subproject.tasks.findByName("lintDebug")?.let { dependsOn(it) }
|
||||
subproject.tasks.findByName("validateDebugScreenshotTest")?.let { dependsOn(it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -126,5 +126,8 @@ annotation class AllNightPreviews
|
||||
@TabletPreviews
|
||||
annotation class AllDevicePreviews
|
||||
|
||||
@Preview(name = "rtl", locale = "ar")
|
||||
annotation class RtlPreview
|
||||
|
||||
@Preview(name = "large font", fontScale = 2f)
|
||||
annotation class LargeFontPreviews
|
||||
|
||||
@ -4,6 +4,7 @@ plugins {
|
||||
id("com.squareup.wire")
|
||||
alias(libs.plugins.compose.compiler)
|
||||
alias(libs.plugins.kotlinx.serialization)
|
||||
alias(testLibs.plugins.compose.screenshot)
|
||||
}
|
||||
|
||||
android {
|
||||
@ -23,6 +24,8 @@ android {
|
||||
isIncludeAndroidResources = true
|
||||
}
|
||||
}
|
||||
|
||||
experimentalProperties["android.experimental.enableScreenshotTest"] = true
|
||||
}
|
||||
|
||||
wire {
|
||||
@ -87,4 +90,9 @@ dependencies {
|
||||
androidTestImplementation(testLibs.androidx.test.ext.junit)
|
||||
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
|
||||
debugImplementation(libs.androidx.compose.ui.test.manifest)
|
||||
|
||||
// Compose screenshot testing
|
||||
screenshotTestImplementation(testLibs.compose.screenshot.validation.api)
|
||||
screenshotTestImplementation(libs.androidx.compose.ui.tooling.core)
|
||||
screenshotTestImplementation(libs.androidx.compose.ui.tooling.preview)
|
||||
}
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2026 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.signal.registration.screens.welcome
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import com.android.tools.screenshot.PreviewTest
|
||||
import org.signal.core.ui.compose.AllDevicePreviews
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.RtlPreview
|
||||
|
||||
class WelcomeScreenScreenshotTests {
|
||||
@PreviewTest
|
||||
@AllDevicePreviews
|
||||
@RtlPreview
|
||||
@Composable
|
||||
fun WelcomeScreenPhonePreview() {
|
||||
Previews.Preview {
|
||||
WelcomeScreen(onEvent = {})
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -15,6 +15,7 @@ org.gradle.caching=true
|
||||
org.gradle.configuration-cache=true
|
||||
org.gradle.configuration-cache.problems=fail
|
||||
android.generateSyncIssueWhenLibraryConstraintsAreEnabled=false
|
||||
android.experimental.enableScreenshotTest=true
|
||||
|
||||
# We never want to use auto-provisioning, as it breaks reproducible builds.
|
||||
# This should not be a problem, because we never configure a "javaRepositories"
|
||||
|
||||
@ -6,8 +6,13 @@ androidx-test = "1.5.0"
|
||||
androidx-test-ext-junit = "1.1.5"
|
||||
robolectric = "4.15.1"
|
||||
espresso = "3.4.0"
|
||||
compose-screenshot = "0.0.1-alpha15"
|
||||
|
||||
[plugins]
|
||||
compose-screenshot = { id = "com.android.compose.screenshot", version.ref = "compose-screenshot" }
|
||||
|
||||
[libraries]
|
||||
compose-screenshot-validation-api = { module = "com.android.tools.screenshot:screenshot-validation-api", version.ref = "compose-screenshot" }
|
||||
junit-junit = "junit:junit:4.13.2"
|
||||
androidx-test-core = { module = "androidx.test:core", version.ref = "androidx-test" }
|
||||
androidx-test-core-ktx = { module = "androidx.test:core-ktx", version.ref = "androidx-test" }
|
||||
|
||||
@ -9985,6 +9985,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="2a8b1c7ad98429b4245ffaba1db48f1bdc78f6cd097aec256d3d6e0baf1b7cae" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.compose.screenshot" name="screenshot-test-gradle-plugin" version="0.0.1-alpha15">
|
||||
<artifact name="screenshot-test-gradle-plugin-0.0.1-alpha15.jar">
|
||||
<sha256 value="d2c51a9fc18ff0529179c28d1588845eafb406c51e0140c6044588e6d8723a3b" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="screenshot-test-gradle-plugin-0.0.1-alpha15.module">
|
||||
<sha256 value="489dd2df432938410703cd817371af3124c8504dc37c49b9ce5b83ba58be5a9d" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.databinding" name="baseLibrary" version="8.10.1">
|
||||
<artifact name="baseLibrary-8.10.1.jar">
|
||||
<md5 value="d4fb415454f1c7211401c41c9be31e05" origin="Generated by Gradle"/>
|
||||
@ -11360,6 +11368,16 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="36c25576b19993df360170528cc62b7246c37776d6158154a67cdf8fc2d58e13" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.compose" name="compose-preview-detector" version="32.3.0-alpha06">
|
||||
<artifact name="compose-preview-detector-32.3.0-alpha06.jar">
|
||||
<sha256 value="131c4bd7c23707c036ce6d777e2ee8ff27344dfbe16643bbfabc1ec40e17ec10" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.compose" name="compose-preview-renderer" version="0.0.1-alpha15">
|
||||
<artifact name="compose-preview-renderer-0.0.1-alpha15.jar">
|
||||
<sha256 value="0f5ebdac5c0b4fa2bfe1528fcf8cf1aa86921311f30c67e183921551aaed93ba" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.ddms" name="ddmlib" version="31.10.1">
|
||||
<artifact name="ddmlib-31.10.1.jar">
|
||||
<md5 value="44e6aeadccdf11de761d58fcdf85cbc3" origin="Generated by Gradle"/>
|
||||
@ -11562,6 +11580,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="b75a953d4dc82baaec5d79b84b5910fd10c58c0bf0ef664e66441356ff15bf4d" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.layoutlib" name="layoutlib" version="16.1.0-jdk17">
|
||||
<artifact name="layoutlib-16.1.0-jdk17.jar">
|
||||
<sha256 value="cc2f6e01c9d5904b0896a3d66d8b1b169ea8163d762d1ddd3c51548c72ca6182" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.layoutlib" name="layoutlib-api" version="31.10.1">
|
||||
<artifact name="layoutlib-api-31.10.1.jar">
|
||||
<md5 value="05069d2d4ff733dd754aebac09c03ea3" origin="Generated by Gradle"/>
|
||||
@ -11606,6 +11629,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="c3445bef3e5daa94e32608a6156c9ab0925210488d3bf2350aef9f68afd97d3e" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.layoutlib" name="layoutlib-resources" version="16.1.0-jdk17">
|
||||
<artifact name="layoutlib-resources-16.1.0-jdk17.jar">
|
||||
<sha256 value="2f7beb5e9f441b9f32c12df0a34121155163dfd047804b116262eaad33928388" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.layoutlib" name="layoutlib-runtime" version="16.1.0-jdk17">
|
||||
<artifact name="layoutlib-runtime-16.1.0-jdk17.jar">
|
||||
<sha256 value="baef8b5bd54f318d8805863d6193acaf6c21efe292485747aa7362836d372f4c" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="layoutlib-runtime-16.1.0-jdk17.module">
|
||||
<sha256 value="9b70ce71371926ab9e2d69a10741621fbfd0e141a883afe88351cba798e96979" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.lint" name="lint" version="31.10.1">
|
||||
<artifact name="lint-31.10.1.jar">
|
||||
<sha256 value="17f891db6b9d045027093729336bfca342a81ce723eb3a7e3fee2fbb575c08e1" origin="Generated by Gradle"/>
|
||||
@ -11870,6 +11906,16 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="60a873fe70d4787c1342ae753aaf2cce23369e60d66fbf6ef6952cb110f960e6" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.screenshot" name="screenshot-validation-api" version="0.0.1-alpha15">
|
||||
<artifact name="screenshot-validation-api-0.0.1-alpha15.jar">
|
||||
<sha256 value="0d0992a5904eeea16b865edf69338f3aba1e3f8411db58d9c4c9f189afc42bfb" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.screenshot" name="screenshot-validation-junit-engine" version="0.0.1-alpha15">
|
||||
<artifact name="screenshot-validation-junit-engine-0.0.1-alpha15.jar">
|
||||
<sha256 value="934d5e580825f8e175ee40f4ea65539dffb36ee688649383c058a75008822846" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.android.tools.utp" name="android-device-provider-ddmlib" version="31.10.1">
|
||||
<artifact name="android-device-provider-ddmlib-31.10.1.jar">
|
||||
<md5 value="39b0a8fbf96dd58ea933d6a5a0cb8418" origin="Generated by Gradle"/>
|
||||
@ -19493,6 +19539,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="585c202c43882b20278a1290ea219f36ea720a22d13933b1c466303008335315" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.3.10">
|
||||
<artifact name="kotlin-stdlib-2.3.10.jar">
|
||||
<sha256 value="f61662c6d3a2f8ef5bd34362a02d877772c39f393cd394feb259dfaf7f4d8437" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="kotlin-stdlib-2.3.10.module">
|
||||
<sha256 value="ea871f66319cda27ab2522fa8d929131d5e6fcb53344e4f54cdae03111d150aa" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.3.20">
|
||||
<artifact name="kotlin-stdlib-2.3.20-all.jar">
|
||||
<sha256 value="2197ae07788b09d03d5f3f2a2d52073859e352481bb6feb4335e391093116270" origin="Generated by Gradle"/>
|
||||
@ -19653,6 +19707,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="3ffdb451aa2d314fe7263782d37eabddcf8b941bcb940fe3192ac01a62b57f7b" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.3.10">
|
||||
<artifact name="kotlin-stdlib-common-2.3.10.module">
|
||||
<sha256 value="1ab23ec5f6d9de235e28d463a3f20a243f7a558f9a86ddd53a9484c877e6792f" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.3.20">
|
||||
<artifact name="kotlin-stdlib-common-2.3.20.module">
|
||||
<sha256 value="7d5e33de714cddd75078642098cbcbee97c18398d034b77d32b4b074b9503939" origin="Generated by Gradle"/>
|
||||
@ -19741,6 +19800,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="3bd26ecb6d12978c5c4e0b41f76c9ff551fac2a5e6268427a9d2a0cdf8a5ad91" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="2.3.10">
|
||||
<artifact name="kotlin-stdlib-jdk7-2.3.10.jar">
|
||||
<sha256 value="9c208de17b6d0d701629cb972eb568d092f28af863e32ef68f22374dc8b8b8fb" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.6.21">
|
||||
<artifact name="kotlin-stdlib-jdk8-1.6.21.jar">
|
||||
<md5 value="9e7ee18a1a5dd5bf070c7e6f706ccc9c" origin="Generated by Gradle"/>
|
||||
@ -19824,6 +19888,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="c314177935d8dc2eda879507117f25d6de56f6c57ede99416b14cd622bb9e09d" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="2.3.10">
|
||||
<artifact name="kotlin-stdlib-jdk8-2.3.10.jar">
|
||||
<sha256 value="6581d8c24374200577b84149d8be7f744e07e1cd3bc425179a3b9d07bf3f6741" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-tooling-core" version="2.0.20">
|
||||
<artifact name="kotlin-tooling-core-2.0.20.jar">
|
||||
<md5 value="f489b6ac67a5b4efd1e76ae4171cd7ed" origin="Generated by Gradle"/>
|
||||
@ -20794,6 +20863,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="86477abcf490d6ca059aa9973cb108d22a506f49d1a5569bb32cc6cbf43c2cce" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit" name="junit-bom" version="5.12.0">
|
||||
<artifact name="junit-bom-5.12.0.module">
|
||||
<sha256 value="bff102d308d18141ebbfe81d863b0599a30f7bbacadbdd5698a9d43692fda62f" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit" name="junit-bom" version="5.12.2">
|
||||
<artifact name="junit-bom-5.12.2.module">
|
||||
<sha256 value="de70ac5d91a52656d8890a6d23b9e04d99b99b1a0402530decad71bf31b2735e" origin="Generated by Gradle"/>
|
||||
@ -20874,6 +20948,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="5023e4e3ec156ec6bd3cf655f3070cfc5a3e8aad5d51b4bbe025a792e9498d73" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit.platform" name="junit-platform-commons" version="1.12.0">
|
||||
<artifact name="junit-platform-commons-1.12.0.jar">
|
||||
<sha256 value="8914fca20882c8476a9165053a947973559e539298c285f4de5bdec36663b34a" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="junit-platform-commons-1.12.0.module">
|
||||
<sha256 value="0245522b07494a7b292b3007c1dadd1a2769bd1d594d42e3e9530d9434fe95ef" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit.platform" name="junit-platform-commons" version="1.8.2">
|
||||
<artifact name="junit-platform-commons-1.8.2.jar">
|
||||
<md5 value="72693a20944048031e0a55f67413ca1b" origin="Generated by Gradle"/>
|
||||
@ -20886,6 +20968,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="342847d3046fea435595692db4f05d5f039e0e1d1e204f4d5755902557082626" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit.platform" name="junit-platform-engine" version="1.12.0">
|
||||
<artifact name="junit-platform-engine-1.12.0.jar">
|
||||
<sha256 value="bd38897bcbe183659234c6d75955ad1b937302f894f25e42cdc9aee0dd8ae614" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="junit-platform-engine-1.12.0.module">
|
||||
<sha256 value="6e80bacbea42607bb6dfec8916b525fa44c93d381439818474b4c99820bbb84d" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit.platform" name="junit-platform-engine" version="1.8.2">
|
||||
<artifact name="junit-platform-engine-1.8.2.jar">
|
||||
<md5 value="a6d209076d8a9fe4029c638cf05e6030" origin="Generated by Gradle"/>
|
||||
@ -20898,6 +20988,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
|
||||
<sha256 value="eba77b36efdf75a67f46438333825f9e448f550d521e7249d950358580ee636b" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit.platform" name="junit-platform-launcher" version="1.12.0">
|
||||
<artifact name="junit-platform-launcher-1.12.0.jar">
|
||||
<sha256 value="fe6550658aaa21ca1f28b7279a5e60c68c8fa68f7de22a891ef64ac44cf36f15" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="junit-platform-launcher-1.12.0.module">
|
||||
<sha256 value="2153be8dfc6bf18fbae74d7ab02411a75fc36410982ff482c39e95d69b87ce45" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.junit.platform" name="junit-platform-reporting" version="1.12.0">
|
||||
<artifact name="junit-platform-reporting-1.12.0.jar">
|
||||
<sha256 value="cb5c2dd87cb1f46f8cc5954e48e76e5719776cf942d6e4df1588c6ef4fdefcec" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
<artifact name="junit-platform-reporting-1.12.0.module">
|
||||
<sha256 value="9b9abc20ccb02ac04a3980f344b31623a5183fd91bdefb7de713354b0c1199d5" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jvnet.staxex" name="stax-ex" version="1.8.1">
|
||||
<artifact name="stax-ex-1.8.1.jar">
|
||||
<md5 value="8fea4418fa80e957e39c174cec08053c" origin="Generated by Gradle"/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user