From bedbe0ef52190bfb2b20911d42cabfd19c96645d Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sat, 3 Oct 2026 14:24:32 +0200 Subject: [PATCH] fix(android): pin the version in the settings screenshot The Settings index shows the installed version, read from the package, so the committed image held 0.5.1 and the 1.0.0 bump failed the screenshot check. SettingsScreen takes the version as a parameter that defaults to the package's, and the test passes a fixed one. --- .../io/narl/protonstream/ui/SettingsScreen.kt | 7 +++++-- .../io/narl/protonstream/ui/ScreenshotTest.kt | 2 +- .../src/test/screenshots/settings-phone.png | Bin 63263 -> 61493 bytes 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/io/narl/protonstream/ui/SettingsScreen.kt b/android/app/src/main/java/io/narl/protonstream/ui/SettingsScreen.kt index b779d0a..d16d7a5 100644 --- a/android/app/src/main/java/io/narl/protonstream/ui/SettingsScreen.kt +++ b/android/app/src/main/java/io/narl/protonstream/ui/SettingsScreen.kt @@ -91,6 +91,9 @@ internal fun SettingsScreen( onRemoveAllOffline: () -> Unit, padding: PaddingValues, initialPage: SettingsPage? = null, + // A parameter so the screenshot tests can pin it: read from the package, + // every version bump changed the committed image of this page. + version: String = appVersion(), ) { val context = LocalContext.current val settings = remember { SettingsStore(context) } @@ -145,7 +148,7 @@ internal fun SettingsScreen( } else { "Off" } - SettingsPage.About -> "Version ${appVersion()} · licences" + SettingsPage.About -> "Version $version · licences" }, ) }, @@ -286,7 +289,7 @@ internal fun SettingsScreen( SettingsPage.About -> SettingsSubPage(SettingsPage.About, padding, back) { ListItem( headlineContent = { Text("Proton Stream") }, - supportingContent = { Text("Version ${appVersion()}") }, + supportingContent = { Text("Version $version") }, colors = ListItemDefaults.colors(containerColor = Color.Transparent), ) SettingAction("Licence", "GPL-3.0-or-later. Comes with absolutely no warranty.") { diff --git a/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt b/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt index 2e53501..16a6cb2 100644 --- a/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt +++ b/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt @@ -139,7 +139,7 @@ class ScreenshotTest { @Test fun `the settings page`() = capture("settings-phone") { - SettingsScreen(LIBRARY, { _, _, _, _ -> }, {}, {}, {}, PaddingValues()) + SettingsScreen(LIBRARY, { _, _, _, _ -> }, {}, {}, {}, PaddingValues(), version = "1.0.0") } @Test diff --git a/android/app/src/test/screenshots/settings-phone.png b/android/app/src/test/screenshots/settings-phone.png index 024e501b4120326bfbfae393b80176abdb866d49..b7c995f1fff342651f0faf166a1d336dffeb257e 100644 GIT binary patch delta 9459 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