diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a2743738..41aece73 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,6 +3,7 @@ plugins { kotlin("android") kotlin("kapt") id("dagger.hilt.android.plugin") + id("shot") `versioning-plugin` `lobsters-plugin` `core-library-desugaring` @@ -18,7 +19,7 @@ repositories { android { defaultConfig { applicationId = "dev.msfjarvis.lobsters" - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + testInstrumentationRunner = "com.karumi.shot.ShotTestRunner" } buildFeatures.compose = true diff --git a/app/src/androidTest/AndroidManifest.xml b/app/src/androidTest/AndroidManifest.xml new file mode 100644 index 00000000..a82a05b3 --- /dev/null +++ b/app/src/androidTest/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + 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 new file mode 100644 index 00000000..9439b282 --- /dev/null +++ b/app/src/androidTest/java/dev/msfjarvis/lobsters/ui/posts/LobstersItemTest.kt @@ -0,0 +1,32 @@ +package dev.msfjarvis.lobsters.ui.posts + +import androidx.compose.ui.graphics.asAndroidBitmap +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 org.junit.Rule +import org.junit.Test + +class LobstersItemTest : ScreenshotTest { + + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun postsAreRenderedCorrectlyOnScreen() { + composeTestRule.setContent { + LobstersTheme { + LobstersItem( + post = TEST_POST, + onClick = { /*TODO*/ }, + onLongClick = { /*TODO*/ }, + onSaveButtonClick = { /*TODO*/ }, + isSaved = true, + ) + } + } + compareScreenshot(composeTestRule.onRoot().captureToImage().asAndroidBitmap()) + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 53f2e72d..0e9e7dbf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + package="dev.msfjarvis.lobsters" + android:sharedUserId="${applicationId}.uid"> diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index ac32817f..fcf191cd 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -34,5 +34,6 @@ dependencies { implementation(Plugins.jsemver) implementation(Plugins.lintModel) implementation(Plugins.kotlin) + implementation(Plugins.shot) implementation(Plugins.sqldelight) } diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 4bd295a5..dc36436b 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -11,6 +11,7 @@ object Plugins { const val hilt = "com.google.dagger:hilt-android-gradle-plugin:${DAGGER_HILT_VERSION}" const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30" const val jsemver = "com.github.zafarkhaja:java-semver:0.9.0" + const val shot = "com.karumi:shot:5.8.0" const val sqldelight = "com.squareup.sqldelight:gradle-plugin:1.4.4" }