From 784dcf16f8767a5581a015293aef4dc66debc71e Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Sep 2024 12:38:26 +0530 Subject: [PATCH] feat(android): add a screenshot test for NetworkPosts --- android/build.gradle.kts | 4 ++ ...Preview_Dark theme_6497bd62_da39a3ee_0.png | 3 ++ ...review_Light theme_5e9d521d_da39a3ee_0.png | 3 ++ .../claw/android/ui/lists/NetworkPostsTest.kt | 37 +++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Dark theme_6497bd62_da39a3ee_0.png create mode 100644 android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Light theme_5e9d521d_da39a3ee_0.png create mode 100644 android/src/screenshotTest/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest.kt diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 26453419..af71c3ab 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -26,6 +26,7 @@ plugins { alias(libs.plugins.kotlin.composeCompiler) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.navigation.safeargs) + alias(libs.plugins.screenshot) } android { @@ -40,6 +41,7 @@ android { applicationIdSuffix = ".internal" debuggable(true) } + experimentalProperties["android.experimental.enableScreenshotTest"] = true } baselineProfile { @@ -119,6 +121,8 @@ dependencies { kapt(libs.dagger.compiler) + screenshotTestImplementation(libs.androidx.compose.ui.tooling) + addTestDependencies(project) androidTestImplementation(libs.androidx.test.espresso.core) androidTestImplementation(libs.androidx.test.uiautomator) diff --git a/android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Dark theme_6497bd62_da39a3ee_0.png b/android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Dark theme_6497bd62_da39a3ee_0.png new file mode 100644 index 00000000..5d71e328 --- /dev/null +++ b/android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Dark theme_6497bd62_da39a3ee_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:073465fa7a1cbf3c9ed1956451c59c72147c1ec5f7208d3bb648ede8d1411373 +size 220590 diff --git a/android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Light theme_5e9d521d_da39a3ee_0.png b/android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Light theme_5e9d521d_da39a3ee_0.png new file mode 100644 index 00000000..03f025cc --- /dev/null +++ b/android/src/debug/screenshotTest/reference/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest/DefaultPreview_Light theme_5e9d521d_da39a3ee_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5911948ab89dfd264561c3ddbf90777477bed7b756375c452b2f2611b036644a +size 222316 diff --git a/android/src/screenshotTest/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest.kt b/android/src/screenshotTest/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest.kt new file mode 100644 index 00000000..9520ec17 --- /dev/null +++ b/android/src/screenshotTest/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPostsTest.kt @@ -0,0 +1,37 @@ +/* + * Copyright © 2024 Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.android.ui.lists + +import android.annotation.SuppressLint +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.runtime.Composable +import androidx.paging.PagingData +import androidx.paging.compose.collectAsLazyPagingItems +import dev.msfjarvis.claw.common.posts.TEST_POST +import dev.msfjarvis.claw.common.posts.TEST_POST_ACTIONS +import dev.msfjarvis.claw.common.theme.LobstersTheme +import dev.msfjarvis.claw.common.ui.preview.ThemePreviews +import kotlinx.coroutines.flow.MutableStateFlow + +@SuppressLint("ComposePreviewPublic", "ComposeUnstableReceiver") +class NetworkPostsTest { + @ThemePreviews + @Composable + fun DefaultPreview() { + val items = List(20) { TEST_POST.copy(shortId = "${TEST_POST.shortId}${it}") } + val flow = MutableStateFlow(PagingData.from(items)) + LobstersTheme { + NetworkPosts( + lazyPagingItems = flow.collectAsLazyPagingItems(), + listState = rememberLazyListState(), + postActions = TEST_POST_ACTIONS, + contentPadding = PaddingValues(), + ) + } + } +}