Skip to content

Commit 3090669

Browse files
committed
Update screenshot testing library to add accessibility checks
Updated Roborazzi and added accessibility checks to screenshot tests. This will help ensure that our UI is accessible to all users. Currently only fails on ERROR level.
1 parent 1c2fe16 commit 3090669

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

core/screenshot-testing/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ android {
2626
dependencies {
2727
api(libs.bundles.androidx.compose.ui.test)
2828
api(libs.roborazzi)
29+
api(libs.roborazzi.accessibility.check)
2930
implementation(libs.androidx.compose.ui.test)
3031
implementation(libs.androidx.activity.compose)
3132
implementation(libs.robolectric)

core/screenshot-testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17+
@file:OptIn(ExperimentalRoborazziApi::class)
18+
1719
package com.google.samples.apps.nowinandroid.core.testing.util
1820

1921
import androidx.activity.ComponentActivity
@@ -30,10 +32,16 @@ import androidx.compose.ui.test.DeviceConfigurationOverride
3032
import androidx.compose.ui.test.junit4.AndroidComposeTestRule
3133
import androidx.compose.ui.test.onRoot
3234
import androidx.test.ext.junit.rules.ActivityScenarioRule
35+
import com.github.takahirom.roborazzi.ExperimentalRoborazziApi
36+
import com.github.takahirom.roborazzi.RoborazziATFAccessibilityCheckOptions
37+
import com.github.takahirom.roborazzi.RoborazziATFAccessibilityChecker
38+
import com.github.takahirom.roborazzi.RoborazziATFAccessibilityChecker.CheckLevel.Error
3339
import com.github.takahirom.roborazzi.RoborazziOptions
3440
import com.github.takahirom.roborazzi.RoborazziOptions.CompareOptions
3541
import com.github.takahirom.roborazzi.RoborazziOptions.RecordOptions
3642
import com.github.takahirom.roborazzi.captureRoboImage
43+
import com.github.takahirom.roborazzi.checkRoboAccessibility
44+
import com.google.android.apps.common.testing.accessibility.framework.AccessibilityCheckPreset
3745
import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme
3846
import org.robolectric.RuntimeEnvironment
3947

@@ -50,6 +58,7 @@ enum class DefaultTestDevices(val description: String, val spec: String) {
5058
FOLDABLE("foldable", "spec:shape=Normal,width=673,height=841,unit=dp,dpi=480"),
5159
TABLET("tablet", "spec:shape=Normal,width=1280,height=800,unit=dp,dpi=480"),
5260
}
61+
5362
fun <A : ComponentActivity> AndroidComposeTestRule<ActivityScenarioRule<A>, A>.captureMultiDevice(
5463
screenshotName: String,
5564
body: @Composable () -> Unit,
@@ -88,6 +97,14 @@ fun <A : ComponentActivity> AndroidComposeTestRule<ActivityScenarioRule<A>, A>.c
8897
"src/test/screenshots/${screenshotName}_$deviceName.png",
8998
roborazziOptions = roborazziOptions,
9099
)
100+
this.onRoot().checkRoboAccessibility(
101+
roborazziATFAccessibilityCheckOptions = RoborazziATFAccessibilityCheckOptions(
102+
failureLevel = Error,
103+
checker = RoborazziATFAccessibilityChecker(
104+
preset = AccessibilityCheckPreset.LATEST,
105+
),
106+
),
107+
)
91108
}
92109

93110
/**

gradle/libs.versions.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ protobuf = "4.26.1"
5050
protobufPlugin = "0.9.4"
5151
retrofit = "2.11.0"
5252
retrofitKotlinxSerializationJson = "1.0.0"
53-
robolectric = "4.14"
54-
roborazzi = "1.32.2"
53+
robolectric = "4.14.1"
54+
roborazzi = "1.33.0"
5555
room = "2.6.1"
5656
secrets = "2.0.1"
5757
truth = "1.4.2"
@@ -141,6 +141,7 @@ retrofit-core = { group = "com.squareup.retrofit2", name = "retrofit", version.r
141141
retrofit-kotlin-serialization = { group = "com.squareup.retrofit2", name = "converter-kotlinx-serialization", version.ref = "retrofit" }
142142
robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" }
143143
roborazzi = { group = "io.github.takahirom.roborazzi", name = "roborazzi", version.ref = "roborazzi" }
144+
roborazzi-accessibility-check = { group = "io.github.takahirom.roborazzi", name = "roborazzi-accessibility-check", version.ref = "roborazzi" }
144145
room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
145146
room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" }
146147
room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }

0 commit comments

Comments
 (0)