diff --git a/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavIsRenderedCorrectlyOnScreen.png b/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavIsRenderedCorrectlyOnScreen.png index 5017f571..a40d7ce0 100644 Binary files a/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavIsRenderedCorrectlyOnScreen.png and b/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavIsRenderedCorrectlyOnScreen.png differ diff --git a/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavUpdatesCorrectly.png b/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavUpdatesCorrectly.png new file mode 100644 index 00000000..64e78d3a Binary files /dev/null and b/app/screenshots/debug/dev.msfjarvis.lobsters.ui.navigation.LobstersBottomNavTest_bottomNavUpdatesCorrectly.png differ diff --git a/app/screenshots/debug/dev.msfjarvis.lobsters.ui.posts.LobstersItemTest_postsAreRenderedCorrectlyOnScreen.png b/app/screenshots/debug/dev.msfjarvis.lobsters.ui.posts.LobstersItemTest_postsAreRenderedCorrectlyOnScreen.png index b67cc6c5..bc13682e 100644 Binary files a/app/screenshots/debug/dev.msfjarvis.lobsters.ui.posts.LobstersItemTest_postsAreRenderedCorrectlyOnScreen.png and b/app/screenshots/debug/dev.msfjarvis.lobsters.ui.posts.LobstersItemTest_postsAreRenderedCorrectlyOnScreen.png differ diff --git a/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/Theme.kt b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/Theme.kt new file mode 100644 index 00000000..304bb604 --- /dev/null +++ b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/Theme.kt @@ -0,0 +1,22 @@ +package dev.msfjarvis.lobsters.ui + +import androidx.compose.material.MaterialTheme +import androidx.compose.runtime.Composable +import dev.msfjarvis.lobsters.ui.theme.darkColors +import dev.msfjarvis.lobsters.ui.theme.lightColors + +@Composable +fun LightTestTheme(children: @Composable () -> Unit) { + MaterialTheme( + colors = lightColors, + content = children, + ) +} + +@Composable +fun DarkTestTheme(children: @Composable () -> Unit) { + MaterialTheme( + colors = darkColors, + content = children, + ) +} diff --git a/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/navigation/LobstersBottomNavTest.kt b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/navigation/LobstersBottomNavTest.kt index c714390f..6860b3db 100644 --- a/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/navigation/LobstersBottomNavTest.kt +++ b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/navigation/LobstersBottomNavTest.kt @@ -1,10 +1,18 @@ package dev.msfjarvis.lobsters.ui.navigation +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.asAndroidBitmap +import androidx.compose.ui.test.assertHasClickAction import androidx.compose.ui.test.captureToImage import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onRoot +import androidx.compose.ui.test.performClick import com.karumi.shot.ScreenshotTest +import dev.msfjarvis.lobsters.ui.DarkTestTheme import dev.msfjarvis.lobsters.ui.main.LobstersBottomNav import dev.msfjarvis.lobsters.ui.theme.LobstersTheme import org.junit.Rule @@ -18,7 +26,7 @@ class LobstersBottomNavTest : ScreenshotTest { @Test fun bottomNavIsRenderedCorrectlyOnScreen() { composeTestRule.setContent { - LobstersTheme { + DarkTestTheme { LobstersBottomNav( currentDestination = Destination.startDestination, navigateToDestination = { /*TODO*/ }, @@ -29,4 +37,28 @@ class LobstersBottomNavTest : ScreenshotTest { compareScreenshot(composeTestRule.onRoot().captureToImage().asAndroidBitmap()) } + + @Test + fun bottomNavUpdatesCorrectly() { + composeTestRule.setContent { + DarkTestTheme { + var destination by remember { mutableStateOf(Destination.startDestination) } + + LobstersBottomNav( + currentDestination = destination, + navigateToDestination = { newDestination -> destination = newDestination }, + jumpToIndex = { /*TODO*/ } + ) + } + } + + selectNode(Destination.Saved.name) + + compareScreenshot(composeTestRule.onRoot().captureToImage().asAndroidBitmap()) + } + + private fun selectNode(testTag: String) = composeTestRule + .onNodeWithTag(testTag) + .assertHasClickAction() + .performClick() } diff --git a/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/posts/LobstersItemTest.kt b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/posts/LobstersItemTest.kt index 9439b282..f14380eb 100644 --- a/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/posts/LobstersItemTest.kt +++ b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/posts/LobstersItemTest.kt @@ -5,7 +5,7 @@ import androidx.compose.ui.test.captureToImage import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onRoot import com.karumi.shot.ScreenshotTest -import dev.msfjarvis.lobsters.ui.theme.LobstersTheme +import dev.msfjarvis.lobsters.ui.DarkTestTheme import org.junit.Rule import org.junit.Test @@ -17,7 +17,7 @@ class LobstersItemTest : ScreenshotTest { @Test fun postsAreRenderedCorrectlyOnScreen() { composeTestRule.setContent { - LobstersTheme { + DarkTestTheme { LobstersItem( post = TEST_POST, onClick = { /*TODO*/ }, diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt index 5453ee0a..958108ab 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt @@ -100,6 +100,7 @@ fun LobstersBottomNav( }, label = { Text(stringResource(id = screen.labelRes)) }, selected = currentDestination == screen, + modifier = Modifier.testTag(screen.name), alwaysShowLabel = false, onClick = { if (screen != currentDestination) {