diff --git a/core/screenshot-testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt b/core/screenshot-testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt index 0715f6337..0e214abb9 100644 --- a/core/screenshot-testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt +++ b/core/screenshot-testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt @@ -26,14 +26,13 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalInspectionMode import androidx.compose.ui.test.junit4.AndroidComposeTestRule +import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onRoot import androidx.test.ext.junit.rules.ActivityScenarioRule -import com.github.takahirom.roborazzi.ExperimentalRoborazziApi import com.github.takahirom.roborazzi.RoborazziOptions import com.github.takahirom.roborazzi.RoborazziOptions.CompareOptions import com.github.takahirom.roborazzi.RoborazziOptions.RecordOptions import com.github.takahirom.roborazzi.captureRoboImage -import com.github.takahirom.roborazzi.captureScreenRoboImage import com.google.accompanist.testharness.TestHarness import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme import org.robolectric.RuntimeEnvironment @@ -90,9 +89,9 @@ fun AndroidComposeTestRule, A>.c ) } -@OptIn(ExperimentalRoborazziApi::class) fun AndroidComposeTestRule, A>.captureDialog( screenshotName: String, + nodeTag: String, body: @Composable () -> Unit, ) { this.activity.setContent { @@ -103,10 +102,8 @@ fun AndroidComposeTestRule, A>.c } } - captureScreenRoboImage( - "src/test/screenshots/$screenshotName.png", - roborazziOptions = DefaultRoborazziOptions, - ) + this.onNodeWithTag(nodeTag) + .captureRoboImage("src/test/screenshots/$screenshotName.png") } /** diff --git a/feature/foryou/build.gradle.kts b/feature/foryou/build.gradle.kts index 9cf405d40..930b601a6 100644 --- a/feature/foryou/build.gradle.kts +++ b/feature/foryou/build.gradle.kts @@ -31,7 +31,6 @@ dependencies { implementation(projects.core.domain) testImplementation(libs.hilt.android.testing) - testImplementation(libs.robolectric) testDemoImplementation(libs.roborazzi) testImplementation(projects.core.screenshotTesting) diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts index fd5a5afd2..a0aaa013e 100644 --- a/feature/settings/build.gradle.kts +++ b/feature/settings/build.gradle.kts @@ -31,7 +31,6 @@ dependencies { implementation(projects.core.data) testImplementation(libs.hilt.android.testing) - testImplementation(libs.robolectric) testDemoImplementation(libs.roborazzi) testImplementation(projects.core.screenshotTesting) diff --git a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt index db60a6447..69363abd8 100644 --- a/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt +++ b/feature/settings/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt @@ -88,6 +88,7 @@ fun SettingsDialog( @Composable fun SettingsDialog( + modifier: Modifier = Modifier, settingsUiState: SettingsUiState, supportDynamicColor: Boolean = supportsDynamicTheming(), onDismiss: () -> Unit, @@ -106,7 +107,7 @@ fun SettingsDialog( */ AlertDialog( properties = DialogProperties(usePlatformDefaultWidth = false), - modifier = Modifier.widthIn(max = configuration.screenWidthDp.dp - 80.dp), + modifier = modifier.widthIn(max = configuration.screenWidthDp.dp - 80.dp), onDismissRequest = { onDismiss() }, title = { Text( diff --git a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogScreenshotTests.kt b/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogScreenshotTests.kt index 7cedeebef..39d13a7be 100644 --- a/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogScreenshotTests.kt +++ b/feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialogScreenshotTests.kt @@ -18,6 +18,8 @@ package com.google.samples.apps.nowinandroid.feature.settings import androidx.activity.ComponentActivity import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag import androidx.compose.ui.test.junit4.createAndroidComposeRule import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig.DARK @@ -37,7 +39,7 @@ import org.robolectric.annotation.LooperMode @RunWith(RobolectricTestRunner::class) @GraphicsMode(GraphicsMode.Mode.NATIVE) @LooperMode(LooperMode.Mode.PAUSED) -@Config(application = HiltTestApplication::class, qualifiers = "w360dp-h640dp-xhdpi") +@Config(application = HiltTestApplication::class, qualifiers = "w480dp-h960dp-480dpi") class SettingsDialogScreenshotTests { @get:Rule @@ -53,7 +55,10 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogLoading() { - composeTestRule.captureDialog("SettingsDialogLoading") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogLoading", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( settingsUiState = SettingsUiState.Loading, ) @@ -62,7 +67,10 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogLoadingDark() { - composeTestRule.captureDialog("SettingsDialogLoadingDark") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogLoadingDark", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( darkMode = true, settingsUiState = SettingsUiState.Loading, @@ -72,14 +80,20 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogDefaultTheme() { - composeTestRule.captureDialog("SettingsDialogDefaultTheme") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogDefaultTheme", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme() } } @Test fun settingsDialogDefaultThemeDark() { - composeTestRule.captureDialog("SettingsDialogDefaultThemeDark") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogDefaultThemeDark", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( darkMode = true, settingsUiState = Success( @@ -93,7 +107,10 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogDynamicColor() { - composeTestRule.captureDialog("SettingsDialogDynamicColor") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogDynamicColor", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( disableDynamicTheming = false, settingsUiState = Success( @@ -107,7 +124,10 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogDynamicColorDark() { - composeTestRule.captureDialog("SettingsDialogDynamicColorDark") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogDynamicColorDark", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( darkMode = true, disableDynamicTheming = false, @@ -123,7 +143,10 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogAndroidTheme() { - composeTestRule.captureDialog("SettingsDialogAndroidTheme") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogAndroidTheme", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( androidTheme = true, settingsUiState = Success( @@ -137,7 +160,10 @@ class SettingsDialogScreenshotTests { @Test fun settingsDialogAndroidThemeDark() { - composeTestRule.captureDialog("SettingsDialogAndroidThemeDark") { + composeTestRule.captureDialog( + screenshotName = "SettingsDialogAndroidThemeDark", + nodeTag = "SettingsDialog", + ) { SettingsDialogDefaultTheme( darkMode = true, androidTheme = true, @@ -164,6 +190,7 @@ class SettingsDialogScreenshotTests { disableDynamicTheming = disableDynamicTheming, ) { SettingsDialog( + modifier = Modifier.testTag("SettingsDialog"), onDismiss = {}, settingsUiState = settingsUiState, onChangeThemeBrand = {}, diff --git a/feature/settings/src/test/screenshots/SettingsDialogAndroidTheme.png b/feature/settings/src/test/screenshots/SettingsDialogAndroidTheme.png index 9f55005a4..f24c90eb5 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogAndroidTheme.png and b/feature/settings/src/test/screenshots/SettingsDialogAndroidTheme.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogAndroidThemeDark.png b/feature/settings/src/test/screenshots/SettingsDialogAndroidThemeDark.png index ca1669974..3ee4165ef 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogAndroidThemeDark.png and b/feature/settings/src/test/screenshots/SettingsDialogAndroidThemeDark.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogDefaultTheme.png b/feature/settings/src/test/screenshots/SettingsDialogDefaultTheme.png index 6b5ba36fc..6f5ce0ab2 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogDefaultTheme.png and b/feature/settings/src/test/screenshots/SettingsDialogDefaultTheme.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogDefaultThemeDark.png b/feature/settings/src/test/screenshots/SettingsDialogDefaultThemeDark.png index 3f11be3da..cfab2c62c 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogDefaultThemeDark.png and b/feature/settings/src/test/screenshots/SettingsDialogDefaultThemeDark.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogDynamicColor.png b/feature/settings/src/test/screenshots/SettingsDialogDynamicColor.png index a6d4f5c9f..00af18c3d 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogDynamicColor.png and b/feature/settings/src/test/screenshots/SettingsDialogDynamicColor.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogDynamicColorDark.png b/feature/settings/src/test/screenshots/SettingsDialogDynamicColorDark.png index 9fbc8f6b7..ff0462b8f 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogDynamicColorDark.png and b/feature/settings/src/test/screenshots/SettingsDialogDynamicColorDark.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogLoading.png b/feature/settings/src/test/screenshots/SettingsDialogLoading.png index 8be44356c..983d75efc 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogLoading.png and b/feature/settings/src/test/screenshots/SettingsDialogLoading.png differ diff --git a/feature/settings/src/test/screenshots/SettingsDialogLoadingDark.png b/feature/settings/src/test/screenshots/SettingsDialogLoadingDark.png index ada3c6030..802ad6755 100644 Binary files a/feature/settings/src/test/screenshots/SettingsDialogLoadingDark.png and b/feature/settings/src/test/screenshots/SettingsDialogLoadingDark.png differ