HarvestCircleThemeRenderTest.kt (2379B)
1 package org.harvestcircle.ui.shell 2 3 import androidx.compose.foundation.background 4 import androidx.compose.foundation.layout.Box 5 import androidx.compose.foundation.layout.size 6 import androidx.compose.runtime.getValue 7 import androidx.compose.runtime.mutableStateOf 8 import androidx.compose.runtime.setValue 9 import androidx.compose.ui.Modifier 10 import androidx.compose.ui.graphics.toPixelMap 11 import androidx.compose.ui.platform.testTag 12 import androidx.compose.ui.test.ExperimentalTestApi 13 import androidx.compose.ui.test.captureToImage 14 import androidx.compose.ui.test.onNodeWithTag 15 import androidx.compose.ui.test.v2.runComposeUiTest 16 import androidx.compose.ui.unit.dp 17 import org.harvestcircle.appearance.AppearanceState 18 import org.harvestcircle.appearance.ThemePreference 19 import kotlin.test.Test 20 import kotlin.test.assertEquals 21 import kotlin.test.assertNotEquals 22 import org.harvestcircle.designsystem.theme.HarvestCircleTheme as DesignTheme 23 24 @OptIn(ExperimentalTestApi::class) 25 class HarvestCircleThemeRenderTest { 26 @Test 27 fun lightDarkAndSystemPreferencesChangeRenderedPixels() = 28 runComposeUiTest { 29 var preference by mutableStateOf(ThemePreference.Light) 30 var systemDark by mutableStateOf(false) 31 setHarvestCircleContent { 32 HarvestCircleTheme(AppearanceState(theme = preference), systemDark = systemDark) { 33 Box( 34 Modifier 35 .size(32.dp) 36 .background(DesignTheme.foundation.colors.surface.canvas) 37 .testTag("theme-render-swatch"), 38 ) 39 } 40 } 41 42 fun renderedColor() = onNodeWithTag("theme-render-swatch").captureToImage().toPixelMap()[16, 16] 43 44 val explicitLight = renderedColor() 45 preference = ThemePreference.Dark 46 waitForIdle() 47 val explicitDark = renderedColor() 48 preference = ThemePreference.System 49 systemDark = false 50 waitForIdle() 51 val systemLight = renderedColor() 52 systemDark = true 53 waitForIdle() 54 val systemDarkColor = renderedColor() 55 56 assertEquals(explicitLight, systemLight) 57 assertEquals(explicitDark, systemDarkColor) 58 assertNotEquals(explicitLight, explicitDark) 59 } 60 }