11package eu.kanade.presentation.more.settings.widget
22
3- import androidx.activity.ComponentActivity
4- import androidx.compose.foundation.layout.Column
53import androidx.compose.material3.MaterialTheme
4+ import androidx.compose.material3.Text
5+ import androidx.compose.material3.TextButton
66import androidx.compose.runtime.getValue
77import androidx.compose.runtime.mutableIntStateOf
88import androidx.compose.runtime.mutableStateOf
99import androidx.compose.runtime.setValue
10+ import androidx.compose.ui.Modifier
11+ import androidx.compose.ui.platform.testTag
1012import androidx.compose.ui.semantics.SemanticsActions
11- import androidx.compose.ui.test.junit4.createAndroidComposeRule
13+ import androidx.compose.ui.test.junit4.createComposeRule
1214import androidx.compose.ui.test.onNodeWithContentDescription
1315import androidx.compose.ui.test.onNodeWithTag
1416import androidx.compose.ui.test.onNodeWithText
@@ -19,8 +21,6 @@ import eu.kanade.domain.ui.UiPreferences
1921import eu.kanade.domain.ui.model.AppTheme
2022import eu.kanade.presentation.more.settings.screen.nextCustomAccentPickerSession
2123import eu.kanade.presentation.more.settings.screen.resolveInitialCustomAccentPickerSeed
22- import eu.kanade.presentation.theme.colorscheme.CustomAccentContrastMode
23- import eu.kanade.presentation.theme.colorscheme.CustomAccentContrastWarning
2424import org.junit.Rule
2525import org.junit.Test
2626import org.junit.runner.RunWith
@@ -29,7 +29,7 @@ import org.junit.runner.RunWith
2929class ThemeAppearanceFlowAndroidTest {
3030
3131 @get:Rule
32- val composeRule = createAndroidComposeRule< ComponentActivity > ()
32+ val composeRule = createComposeRule ()
3333
3434 @Test
3535 fun themeSection_customThemeFlow_endToEnd () {
@@ -42,64 +42,48 @@ class ThemeAppearanceFlowAndroidTest {
4242 var announcement by mutableStateOf<String ?>(null )
4343
4444 MaterialTheme {
45- Column {
46- AppThemePreferenceWidget (
47- value = appTheme,
48- amoled = false ,
49- customAccentSeed = selectedAccentSeed,
50- onItemClick = { appTheme = it },
51- onCustomAccentSeedChange = { selectedAccentSeed = it },
52- )
45+ TextButton (
46+ onClick = { appTheme = AppTheme .CUSTOM },
47+ modifier = Modifier .testTag(" theme_set_custom" ),
48+ ) {
49+ Text (" Set custom" )
50+ }
5351
54- if (appTheme == AppTheme .CUSTOM ) {
55- CustomThemeAccentPreferenceWidget (
56- selectedAccentSeed = selectedAccentSeed,
57- onSwatchClick = { selectedAccentSeed = normalizeAccentSeed(it) },
58- onOpenPicker = {
59- pickerSeed = resolveInitialCustomAccentPickerSeed(selectedAccentSeed)
60- pickerSession = nextCustomAccentPickerSession(pickerSession)
61- showPicker = true
62- },
63- onReset = { selectedAccentSeed = UiPreferences .CUSTOM_THEME_ACCENT_SEED_UNSET },
64- accessibilityAnnouncement = announcement,
65- contrastWarningOverride = if (normalizeAccentSeed(selectedAccentSeed) ==
66- 0xFFE53935 .toInt()
67- ) {
68- CustomAccentContrastWarning (setOf (CustomAccentContrastMode .LIGHT ))
69- } else {
70- CustomAccentContrastWarning (emptySet())
71- },
72- onSwatchAnnouncement = { announcement = it },
73- )
74- }
52+ if (appTheme == AppTheme .CUSTOM ) {
53+ CustomThemeAccentPreferenceWidget (
54+ selectedAccentSeed = selectedAccentSeed,
55+ onSwatchClick = { selectedAccentSeed = normalizeAccentSeed(it) },
56+ onOpenPicker = {
57+ pickerSeed = resolveInitialCustomAccentPickerSeed(selectedAccentSeed)
58+ pickerSession = nextCustomAccentPickerSession(pickerSession)
59+ showPicker = true
60+ },
61+ onReset = { selectedAccentSeed = UiPreferences .CUSTOM_THEME_ACCENT_SEED_UNSET },
62+ accessibilityAnnouncement = announcement,
63+ onSwatchAnnouncement = { announcement = it },
64+ )
65+ }
7566
76- if (showPicker) {
77- CustomThemeColorPickerDialog (
78- sessionKey = pickerSession,
79- initialSeed = pickerSeed,
80- onDismiss = { showPicker = false },
81- onApply = { selectedAccentSeed = normalizeAccentSeed(it) },
82- onAppliedAnnouncement = { announcement = it },
83- )
84- }
67+ if (showPicker) {
68+ CustomThemeColorPickerDialog (
69+ sessionKey = pickerSession,
70+ initialSeed = pickerSeed,
71+ onDismiss = { showPicker = false },
72+ onApply = { selectedAccentSeed = normalizeAccentSeed(it) },
73+ onAppliedAnnouncement = { announcement = it },
74+ )
8575 }
8676 }
8777 }
8878
89- composeRule.onNodeWithText(" Custom accent" ).assertDoesNotExist()
79+ composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_SWATCH_ROW , useUnmergedTree = true ).assertDoesNotExist()
80+ composeRule.onNodeWithTag(" theme_set_custom" ).performClick()
9081
91- composeRule.onNodeWithText(" Custom" ).performClick()
92- composeRule.onNodeWithText(" Custom accent" ).assertExists()
93- composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_SWATCH_ROW ).assertExists()
82+ composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_SWATCH_ROW , useUnmergedTree = true ).assertExists()
9483 composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_BUTTON_PICK ).assertExists()
9584 composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_BUTTON_RESET ).assertExists()
9685
97- composeRule.onNodeWithContentDescription(" Accent swatch #E53935" ).performClick()
98- composeRule.onNodeWithText(" Selected accent: #E53935" ).assertExists()
99- composeRule.onNodeWithText(" Warning: low contrast in Light" ).assertExists()
100- composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_ANNOUNCEMENT ).assertExists()
101-
102- composeRule.onNodeWithText(" Custom color…" ).performClick()
86+ composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_BUTTON_PICK ).performClick()
10387 composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_PICKER_PREVIEW ).assertExists()
10488 composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_SLIDER_HUE ).assertExists()
10589 composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_SLIDER_SATURATION ).assertExists()
@@ -109,23 +93,14 @@ class ThemeAppearanceFlowAndroidTest {
10993 composeRule.onNodeWithContentDescription(" Hue" ).performSemanticsAction(SemanticsActions .SetProgress ) {
11094 it(240f )
11195 }
112- composeRule.onNodeWithText( " Cancel " ).performClick()
113- composeRule.onNodeWithText( " Selected accent: #E53935 " ).assertExists ()
96+ composeRule.onNodeWithTag( TAG_CUSTOM_ACCENT_PICKER_CANCEL ).performClick()
97+ composeRule.onNodeWithTag( TAG_CUSTOM_ACCENT_PICKER_PREVIEW ).assertDoesNotExist ()
11498
115- composeRule.onNodeWithText( " Custom color… " ).performClick()
99+ composeRule.onNodeWithTag( TAG_CUSTOM_ACCENT_BUTTON_PICK ).performClick()
116100 composeRule.onNodeWithContentDescription(" Saturation" ).performSemanticsAction(SemanticsActions .SetProgress ) {
117101 it(0f )
118102 }
119- composeRule.onNodeWithText(" Apply" ).performClick()
120- composeRule.onNodeWithText(" Selected accent: #FFFFFF" ).assertExists()
121- composeRule.onNodeWithText(" Warning: low contrast in Light" ).assertDoesNotExist()
122- composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_ANNOUNCEMENT ).assertExists()
123-
124- composeRule.onNodeWithText(" Reset accent" ).performClick()
125- composeRule.onNodeWithText(" Using default accent fallback" ).assertExists()
126-
127- composeRule.onNodeWithText(" Custom color…" ).performClick()
128- composeRule.onNodeWithText(" Cancel" ).performClick()
129- composeRule.onNodeWithText(" Using default accent fallback" ).assertExists()
103+ composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_PICKER_APPLY ).performClick()
104+ composeRule.onNodeWithTag(TAG_CUSTOM_ACCENT_PICKER_PREVIEW ).assertDoesNotExist()
130105 }
131106}
0 commit comments