From e1e7b6583f53c379f6643df893ca115b02c23e33 Mon Sep 17 00:00:00 2001 From: Kimberly Crevecoeur Date: Fri, 17 Apr 2026 22:04:58 +0000 Subject: [PATCH 1/2] expose test tags as resId for settings alert dialog containers --- .../com/google/jetpackcamera/settings/ui/SettingsComponents.kt | 2 ++ 1 file changed, 2 insertions(+) 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 2b1fc6b36..a69231ec3 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 @@ -53,6 +53,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.stateDescription +import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.toUpperCase @@ -920,6 +921,7 @@ fun BasicPopupSetting( val scrollState = rememberScrollState() Column( modifier = Modifier + .semantics { testTagsAsResourceId = true } .testTag(CONTAINER_DIALOG_CONTENTS) .verticalScroll(scrollState) ) { From ff6a607889b2a6ad1d06474370538c223632688e Mon Sep 17 00:00:00 2001 From: Kimberly Crevecoeur Date: Fri, 17 Apr 2026 22:29:20 +0000 Subject: [PATCH 2/2] apply testtags as resource ID to entire AlertDialog semantic tree --- .../settings/ui/SettingsComponents.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 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 a69231ec3..139900fab 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 @@ -198,7 +198,8 @@ fun DefaultCameraFacing( } ) SwitchSettingUI( - modifier = modifier.testTag(BTN_SWITCH_SETTING_LENS_FACING_TAG) + modifier = modifier + .testTag(BTN_SWITCH_SETTING_LENS_FACING_TAG) .semantics { stateDescription = description }, @@ -242,6 +243,7 @@ fun FlashModeSetting( id = R.string.flash_mode_description_llb ) } + is FlashUiState.Disabled -> stringResource( flashUiState.disabledRationale.reasonTextResId, stringResource(flashUiState.disabledRationale.affectedSettingNameResId) @@ -307,8 +309,12 @@ fun AspectRatioSetting( id = R.string.aspect_ratio_description_9_16 ) - AspectRatio.THREE_FOUR -> stringResource(id = R.string.aspect_ratio_description_3_4) - AspectRatio.ONE_ONE -> stringResource(id = R.string.aspect_ratio_description_1_1) + AspectRatio.THREE_FOUR -> stringResource( + id = R.string.aspect_ratio_description_3_4 + ) + AspectRatio.ONE_ONE -> stringResource( + id = R.string.aspect_ratio_description_1_1 + ) } } else { TODO("aspect ratio currently has no disabled criteria") @@ -843,9 +849,11 @@ fun RecordingAudioSetting( is AudioUiState.Enabled.On -> { stringResource(R.string.audio_selector_on) } + is AudioUiState.Enabled.Mute -> { stringResource(R.string.audio_selector_off) } + is AudioUiState.Disabled -> { disabledRationaleString(disabledRationale = audioUiState.disabledRationale) } @@ -906,6 +914,7 @@ fun BasicPopupSetting( ) if (popupStatus.value) { AlertDialog( + modifier = Modifier.semantics { testTagsAsResourceId = true }, onDismissRequest = { popupStatus.value = false }, confirmButton = { Text( @@ -921,7 +930,6 @@ fun BasicPopupSetting( val scrollState = rememberScrollState() Column( modifier = Modifier - .semantics { testTagsAsResourceId = true } .testTag(CONTAINER_DIALOG_CONTENTS) .verticalScroll(scrollState) ) {