This commit is contained in:
ponzischeme89
2026-08-24 08:16:55 +12:00
parent 72cb3c376e
commit 30155e1c5f
2 changed files with 18 additions and 1 deletions
+1 -1
View File
@@ -62,7 +62,7 @@ val projectNoticeText =
rootProject.file("NOTICE").readText() rootProject.file("NOTICE").readText()
.replace("https://g.sublogue.com/admin/memby", membySourceUrl) .replace("https://g.sublogue.com/admin/memby", membySourceUrl)
val defaultVersionName = "0.3.14" val defaultVersionName = "0.3.15"
val membyVersionName: String = val membyVersionName: String =
(project.findProperty("memby.versionName") as String?) (project.findProperty("memby.versionName") as String?)
?.trim() ?.trim()
@@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.focus.FocusRequester
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.asImageBitmap 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.input.key.Key
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalInputModeManager
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.test.assertIsFocused import androidx.compose.ui.test.assertIsFocused
import androidx.compose.ui.test.junit4.v2.createComposeRule 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.Config
import org.robolectric.annotation.GraphicsMode 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) @RunWith(RobolectricTestRunner::class)
@GraphicsMode(GraphicsMode.Mode.NATIVE) @GraphicsMode(GraphicsMode.Mode.NATIVE)
@Config(sdk = [34], qualifiers = "w960dp-h540dp-television-xhdpi") @Config(sdk = [34], qualifiers = "w960dp-h540dp-television-xhdpi")
@@ -328,6 +343,7 @@ class HomeMovieHeroScreenshotTest {
val railFocus = FocusRequester() val railFocus = FocusRequester()
compose.setContent { compose.setContent {
CompositionLocalProvider(LocalInputModeManager provides KeyboardOnlyInputModeManager) {
PreviewSurface(alignment = Alignment.TopStart, fontFamilyName = "inter") { PreviewSurface(alignment = Alignment.TopStart, fontFamilyName = "inter") {
Row(Modifier.fillMaxSize()) { Row(Modifier.fillMaxSize()) {
TvNavigationRail( TvNavigationRail(
@@ -397,6 +413,7 @@ class HomeMovieHeroScreenshotTest {
} }
} }
} }
}
assertTrue(compose.onAllNodesWithText("Play").fetchSemanticsNodes().isEmpty()) assertTrue(compose.onAllNodesWithText("Play").fetchSemanticsNodes().isEmpty())
} }