From 1d1494e0472a9309e8d4b2f1b66c310b7c26be02 Mon Sep 17 00:00:00 2001 From: Kimberly Crevecoeur Date: Mon, 6 Apr 2026 23:34:28 +0000 Subject: [PATCH 1/4] scrollable setting dialog --- .../settings/ui/SettingsComponents.kt | 18 +++++++++++++----- .../jetpackcamera/settings/ui/TestTags.kt | 3 ++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt index ad78ea908..a76cc0950 100644 --- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt +++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt @@ -914,16 +914,24 @@ fun BasicPopupSetting( Text( text = "Close", modifier = Modifier - .testTag(CLOSE_BUTTON) + .testTag(BTN_CLOSE_POPUP) .clickable { popupStatus.value = false } ) }, title = { Text(text = title) }, text = { - MaterialTheme( - colorScheme = MaterialTheme.colorScheme.copy(surface = Color.Transparent), - content = popupContents - ) + // Apply a scroll state to ensure content is reachable + val scrollState = rememberScrollState() + Column( + modifier = Modifier + .testTag(CONTAINER_DIALOG_CONTENTS) + .verticalScroll(scrollState) + ) { + MaterialTheme( + colorScheme = MaterialTheme.colorScheme.copy(surface = Color.Transparent), + content = popupContents + ) + } } ) } diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt index 6d0d4b029..74dc5d0a4 100644 --- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt +++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt @@ -27,7 +27,8 @@ package com.google.jetpackcamera.settings.ui const val SETTINGS_TITLE = "SettingsTitle" const val BACK_BUTTON = "BackButton" -const val CLOSE_BUTTON = "CloseButton" +const val BTN_CLOSE_POPUP = "btn_close_popup" +const val CONTAINER_DIALOG_CONTENTS = "container_dialog_contents" // unsupported rationale tags const val DEVICE_UNSUPPORTED_TAG = "DeviceUnsupportedTag" From e07389e3b31b21cbf9079b33f9383a8abedaec43 Mon Sep 17 00:00:00 2001 From: Kimberly Crevecoeur Date: Tue, 7 Apr 2026 16:22:25 +0000 Subject: [PATCH 2/4] remove redundant scroll behavior for VideoQualitySetting --- .../google/jetpackcamera/settings/ui/SettingsComponents.kt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt index a76cc0950..ee7c73ba2 100644 --- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt +++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt @@ -791,11 +791,7 @@ fun VideoQualitySetting( } }, popupContents = { - Column( - Modifier - .selectableGroup() - .verticalScroll(rememberScrollState()) - ) { + Column(Modifier.selectableGroup()) { SingleChoiceSelector( modifier = Modifier.testTag( getVideoQualityOptionTestTag(VideoQuality.UNSPECIFIED) From 142aaacb3f105bf5f60717c35ef77f3e023f76b7 Mon Sep 17 00:00:00 2001 From: Kimberly Crevecoeur Date: Tue, 7 Apr 2026 17:38:48 +0000 Subject: [PATCH 3/4] update import statement for new val name --- .../java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt b/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt index 4a9e56f72..0f0b79f13 100644 --- a/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt +++ b/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt @@ -50,8 +50,8 @@ import com.google.jetpackcamera.model.FlashMode import com.google.jetpackcamera.model.LensFacing import com.google.jetpackcamera.settings.R as SettingsR import com.google.jetpackcamera.settings.ui.BACK_BUTTON +import com.google.jetpackcamera.settings.ui.BTN_CLOSE_POPUP import com.google.jetpackcamera.settings.ui.BTN_SWITCH_SETTING_LENS_FACING_TAG -import com.google.jetpackcamera.settings.ui.CLOSE_BUTTON import com.google.jetpackcamera.settings.ui.SETTINGS_TITLE import com.google.jetpackcamera.ui.components.capture.BTN_QUICK_SETTINGS_FOCUSED_CAPTURE_MODE_IMAGE_ONLY import com.google.jetpackcamera.ui.components.capture.BTN_QUICK_SETTINGS_FOCUSED_CAPTURE_MODE_OPTION_STANDARD @@ -623,7 +623,7 @@ inline fun SettingsScreenScope.visitSettingDialog( try { return block() } finally { - onNodeWithTag(CLOSE_BUTTON) + onNodeWithTag(BTN_CLOSE_POPUP) .assertExists() .performClick() From 95214ba25ab487af13706f87a9e98f53b696e146 Mon Sep 17 00:00:00 2001 From: Kimberly Crevecoeur Date: Tue, 7 Apr 2026 22:17:24 +0000 Subject: [PATCH 4/4] revert change to close button tag, update scrollable containter tag to closer align with styleguide --- .../java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt | 4 ++-- .../google/jetpackcamera/settings/ui/SettingsComponents.kt | 2 +- .../java/com/google/jetpackcamera/settings/ui/TestTags.kt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt b/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt index 0f0b79f13..4a9e56f72 100644 --- a/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt +++ b/app/src/androidTest/java/com/google/jetpackcamera/utils/ComposeTestRuleExt.kt @@ -50,8 +50,8 @@ import com.google.jetpackcamera.model.FlashMode import com.google.jetpackcamera.model.LensFacing import com.google.jetpackcamera.settings.R as SettingsR import com.google.jetpackcamera.settings.ui.BACK_BUTTON -import com.google.jetpackcamera.settings.ui.BTN_CLOSE_POPUP import com.google.jetpackcamera.settings.ui.BTN_SWITCH_SETTING_LENS_FACING_TAG +import com.google.jetpackcamera.settings.ui.CLOSE_BUTTON import com.google.jetpackcamera.settings.ui.SETTINGS_TITLE import com.google.jetpackcamera.ui.components.capture.BTN_QUICK_SETTINGS_FOCUSED_CAPTURE_MODE_IMAGE_ONLY import com.google.jetpackcamera.ui.components.capture.BTN_QUICK_SETTINGS_FOCUSED_CAPTURE_MODE_OPTION_STANDARD @@ -623,7 +623,7 @@ inline fun SettingsScreenScope.visitSettingDialog( try { return block() } finally { - onNodeWithTag(BTN_CLOSE_POPUP) + onNodeWithTag(CLOSE_BUTTON) .assertExists() .performClick() diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt index ee7c73ba2..2b1fc6b36 100644 --- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt +++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/SettingsComponents.kt @@ -910,7 +910,7 @@ fun BasicPopupSetting( Text( text = "Close", modifier = Modifier - .testTag(BTN_CLOSE_POPUP) + .testTag(CLOSE_BUTTON) .clickable { popupStatus.value = false } ) }, diff --git a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt index 74dc5d0a4..6f9fe1c6a 100644 --- a/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt +++ b/feature/settings/src/main/java/com/google/jetpackcamera/settings/ui/TestTags.kt @@ -27,8 +27,8 @@ package com.google.jetpackcamera.settings.ui const val SETTINGS_TITLE = "SettingsTitle" const val BACK_BUTTON = "BackButton" -const val BTN_CLOSE_POPUP = "btn_close_popup" -const val CONTAINER_DIALOG_CONTENTS = "container_dialog_contents" +const val CLOSE_BUTTON = "CloseButton" +const val CONTAINER_DIALOG_CONTENTS = "dialog_contents_container" // unsupported rationale tags const val DEVICE_UNSUPPORTED_TAG = "DeviceUnsupportedTag"