diff --git a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/PaparazziViewTest.kt b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/PaparazziViewTest.kt index 7840c63e8f4..08a0083fada 100644 --- a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/PaparazziViewTest.kt +++ b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/PaparazziViewTest.kt @@ -19,6 +19,7 @@ package io.getstream.chat.android.ui import android.content.Context import android.view.View import android.widget.LinearLayout +import app.cash.paparazzi.DeviceConfig import app.cash.paparazzi.InstantAnimationsRule import app.cash.paparazzi.Paparazzi import coil3.ComponentRegistry @@ -29,6 +30,7 @@ import coil3.request.Disposable import coil3.request.ErrorResult import coil3.request.ImageRequest import coil3.request.ImageResult +import com.android.resources.NightMode import io.getstream.chat.android.client.test.MockedChatClientTest import io.getstream.chat.android.ui.common.helper.DateFormatter import io.getstream.chat.android.ui.common.images.internal.StreamCoil @@ -42,23 +44,11 @@ internal abstract class PaparazziViewTest : MockedChatClientTest { @get:Rule abstract val paparazzi: Paparazzi - // Light mode context - private val lightContext get() = paparazzi.context - // TODO Figure out how to properly support dark/light modes in a single paparazzi snapshot instance. - /*.createConfigurationContext(Configuration().apply { - uiMode = Configuration.UI_MODE_NIGHT_NO - })*/ - - // Dark mode context - private val darkContext get() = paparazzi.context - // TODO Figure out how to properly support dark/light modes in a single paparazzi snapshot instance. - /*.createConfigurationContext(Configuration().apply { - uiMode = Configuration.UI_MODE_NIGHT_YES - })*/ - @get:Rule val instantAnimations = InstantAnimationsRule() + abstract val deviceConfig: DeviceConfig + @Before fun prepare() { ChatUI.appContext = paparazzi.context @@ -70,8 +60,8 @@ internal abstract class PaparazziViewTest : MockedChatClientTest { isInDarkMode: Boolean = false, viewFactory: (context: Context) -> View, ) { - val context = if (isInDarkMode) darkContext else lightContext - paparazzi.snapshot(view = viewFactory(context)) + applyNightMode(isInDarkMode) + paparazzi.snapshot(view = viewFactory(paparazzi.context)) } fun snapshotColumn(view: (context: Context) -> View) { @@ -86,9 +76,14 @@ internal abstract class PaparazziViewTest : MockedChatClientTest { orientation: Int, viewFactory: (Context) -> View, ) { - val lightView = viewFactory(lightContext) - // TODO Figure out how to properly support dark/light modes in a single paparazzi snapshot instance. - // val darkView = viewFactory(darkContext) + applyNightMode(false) + val lightView = viewFactory(paparazzi.context) + + applyNightMode(true) + val darkView = viewFactory(paparazzi.context) + + // Reset to light so the container and final snapshot render in light mode + applyNightMode(false) val container = LinearLayout(paparazzi.context).apply { this.orientation = orientation @@ -106,12 +101,19 @@ internal abstract class PaparazziViewTest : MockedChatClientTest { ) } addView(lightView, layoutParams) - // TODO Figure out how to properly support dark/light modes in a single paparazzi snapshot instance. - // addView(darkView, layoutParams) + addView(darkView, layoutParams) } paparazzi.snapshot(container) } + + private fun applyNightMode(isDark: Boolean) { + paparazzi.unsafeUpdateConfig( + deviceConfig = deviceConfig.copy( + nightMode = if (isDark) NightMode.NIGHT else NightMode.NOTNIGHT, + ), + ) + } } private object TestDateFormatter : DateFormatter { diff --git a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/header/ChannelListHeaderViewTest.kt b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/header/ChannelListHeaderViewTest.kt index 916e08cc77c..b290e3efe59 100644 --- a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/header/ChannelListHeaderViewTest.kt +++ b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/header/ChannelListHeaderViewTest.kt @@ -24,7 +24,9 @@ import org.junit.Test internal class ChannelListHeaderViewTest : PaparazziViewTest() { - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_2) + override val deviceConfig = DeviceConfig.PIXEL_2 + + override val paparazzi = Paparazzi(deviceConfig = deviceConfig) @Test fun `connected, no user`() { diff --git a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewTest.kt b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewTest.kt index a3d012f0c31..ed1f0cb2724 100644 --- a/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewTest.kt +++ b/stream-chat-android-ui-components/src/test/kotlin/io/getstream/chat/android/ui/feature/channels/list/ChannelListViewTest.kt @@ -30,7 +30,9 @@ import org.junit.Test internal class ChannelListViewTest : PaparazziViewTest() { - override val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_4A) + override val deviceConfig = DeviceConfig.PIXEL_4A + + override val paparazzi = Paparazzi(deviceConfig = deviceConfig) @Before fun setUp() { diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_no_user.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_no_user.png index 89d1f842ce7..d0f2947c3c4 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_no_user.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_no_user.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_with_user.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_with_user.png index f8175de7912..86b31af9e1c 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_with_user.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connected,_with_user.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_no_user.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_no_user.png index 619e44eeb7a..da0daf9d1b5 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_no_user.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_no_user.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_with_user.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_with_user.png index 3038eb2c2d3..a0566add891 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_with_user.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_connecting,_with_user.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_no_user.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_no_user.png index 2ba91dc7456..dc4493a7ae8 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_no_user.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_no_user.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_with_user.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_with_user.png index 47020a85b65..514a8517277 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_with_user.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.header_ChannelListHeaderViewTest_offline,_with_user.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_empty_channels.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_empty_channels.png index b0704a0c5e7..264757619fc 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_empty_channels.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_empty_channels.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loaded_channels.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loaded_channels.png index 392fffb29a7..9d4df8398be 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loaded_channels.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loaded_channels.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_channels.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_channels.png index bdeea24ffb6..55dff7e8dc6 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_channels.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_channels.png differ diff --git a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_more_channels.png b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_more_channels.png index 41ade24fdc8..51d24feece6 100644 Binary files a/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_more_channels.png and b/stream-chat-android-ui-components/src/test/snapshots/images/io.getstream.chat.android.ui.feature.channels.list_ChannelListViewTest_loading_more_channels.png differ