From 30155e1c5fcd44f1a020c61d03237bbcb12225d5 Mon Sep 17 00:00:00 2001 From: ponzischeme89 Date: Mon, 24 Aug 2026 08:16:55 +1200 Subject: [PATCH] 0.3.15 --- app/build.gradle.kts | 2 +- .../memby/ui/HomeMovieHeroScreenshotTest.kt | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f668ed5..436ed04 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -62,7 +62,7 @@ val projectNoticeText = rootProject.file("NOTICE").readText() .replace("https://g.sublogue.com/admin/memby", membySourceUrl) -val defaultVersionName = "0.3.14" +val defaultVersionName = "0.3.15" val membyVersionName: String = (project.findProperty("memby.versionName") as String?) ?.trim() diff --git a/app/src/test/java/com/ponzischeme89/memby/ui/HomeMovieHeroScreenshotTest.kt b/app/src/test/java/com/ponzischeme89/memby/ui/HomeMovieHeroScreenshotTest.kt index 61c9a07..d97dc39 100644 --- a/app/src/test/java/com/ponzischeme89/memby/ui/HomeMovieHeroScreenshotTest.kt +++ b/app/src/test/java/com/ponzischeme89/memby/ui/HomeMovieHeroScreenshotTest.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -22,8 +23,11 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.input.InputMode +import androidx.compose.ui.input.InputModeManager import androidx.compose.ui.input.key.Key import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalInputModeManager import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.test.assertIsFocused import androidx.compose.ui.test.junit4.v2.createComposeRule @@ -51,6 +55,17 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config import org.robolectric.annotation.GraphicsMode +/** + * Robolectric's window reports [InputMode.Touch] for the life of the test and never fires the + * real key press that would flip a television's InputModeManager into [InputMode.Keyboard], so a + * clickable card's Focusability.SystemDefined focus target stays unfocusable to a programmatic + * `requestFocus()`. This stands in for that key press. + */ +private object KeyboardOnlyInputModeManager : InputModeManager { + override val inputMode: InputMode = InputMode.Keyboard + override fun requestInputMode(inputMode: InputMode): Boolean = true +} + @RunWith(RobolectricTestRunner::class) @GraphicsMode(GraphicsMode.Mode.NATIVE) @Config(sdk = [34], qualifiers = "w960dp-h540dp-television-xhdpi") @@ -328,6 +343,7 @@ class HomeMovieHeroScreenshotTest { val railFocus = FocusRequester() compose.setContent { + CompositionLocalProvider(LocalInputModeManager provides KeyboardOnlyInputModeManager) { PreviewSurface(alignment = Alignment.TopStart, fontFamilyName = "inter") { Row(Modifier.fillMaxSize()) { TvNavigationRail( @@ -396,6 +412,7 @@ class HomeMovieHeroScreenshotTest { } } } + } } assertTrue(compose.onAllNodesWithText("Play").fetchSemanticsNodes().isEmpty())