summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt60
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt4
3 files changed, 45 insertions, 24 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt
index 340b903886..970e877b80 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt
@@ -3,10 +3,13 @@ package net.mullvad.mullvadvpn.compose.screen
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.ui.test.assertIsEnabled
import androidx.compose.ui.test.assertIsNotEnabled
+import androidx.compose.ui.test.hasTestTag
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithContentDescription
+import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
+import androidx.compose.ui.test.performScrollToNode
import androidx.compose.ui.test.performTextInput
import io.mockk.MockKAnnotations
import io.mockk.mockk
@@ -15,6 +18,8 @@ import io.mockk.verifyAll
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
import net.mullvad.mullvadvpn.viewmodel.StagedDns
import org.junit.Before
@@ -249,13 +254,15 @@ class AdvancedSettingsScreenTest {
listOf(
CustomDnsItem(address = DUMMY_DNS_ADDRESS, false),
CustomDnsItem(address = DUMMY_DNS_ADDRESS_2, false),
- CustomDnsItem(address = DUMMY_DNS_ADDRESS_3, false),
- ),
+ CustomDnsItem(address = DUMMY_DNS_ADDRESS_3, false)
+ )
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
-
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG))
// Assert
composeTestRule.apply {
onNodeWithText(DUMMY_DNS_ADDRESS).assertExists()
@@ -274,12 +281,14 @@ class AdvancedSettingsScreenTest {
uiState =
AdvancedSettingsUiState.DefaultUiState(
isCustomDnsEnabled = false,
- customDnsItems = listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, false)),
+ customDnsItems = listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, false))
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
-
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG))
// Assert
composeTestRule.onNodeWithText(DUMMY_DNS_ADDRESS).assertDoesNotExist()
composeTestRule.onNodeWithText("Add a server").assertDoesNotExist()
@@ -296,7 +305,7 @@ class AdvancedSettingsScreenTest {
isCustomDnsEnabled = true,
isAllowLanEnabled = true,
customDnsItems =
- listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = true)),
+ listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = true))
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -317,7 +326,7 @@ class AdvancedSettingsScreenTest {
isCustomDnsEnabled = true,
isAllowLanEnabled = false,
customDnsItems =
- listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = false)),
+ listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = false))
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -338,7 +347,7 @@ class AdvancedSettingsScreenTest {
isCustomDnsEnabled = true,
isAllowLanEnabled = true,
customDnsItems =
- listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = false)),
+ listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = false))
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -359,7 +368,7 @@ class AdvancedSettingsScreenTest {
isCustomDnsEnabled = true,
isAllowLanEnabled = false,
customDnsItems =
- listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = true)),
+ listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, isLocal = true))
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -383,6 +392,9 @@ class AdvancedSettingsScreenTest {
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
+ composeTestRule
+ .onNodeWithTag(LAZY_LIST_TEST_TAG)
+ .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG))
// Act
composeTestRule.onNodeWithText("Add a server").performClick()
@@ -401,7 +413,7 @@ class AdvancedSettingsScreenTest {
AdvancedSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
- item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
+ item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false)
),
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
@@ -423,8 +435,8 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.EditDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
- index = 0,
- ),
+ index = 0
+ )
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -445,9 +457,9 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = true),
- validationResult = StagedDns.ValidationResult.Success,
+ validationResult = StagedDns.ValidationResult.Success
),
- isAllowLanEnabled = false,
+ isAllowLanEnabled = false
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -468,9 +480,9 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = true),
- validationResult = StagedDns.ValidationResult.Success,
+ validationResult = StagedDns.ValidationResult.Success
),
- isAllowLanEnabled = true,
+ isAllowLanEnabled = true
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -491,9 +503,9 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
- validationResult = StagedDns.ValidationResult.Success,
+ validationResult = StagedDns.ValidationResult.Success
),
- isAllowLanEnabled = true,
+ isAllowLanEnabled = true
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -514,9 +526,9 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
- validationResult = StagedDns.ValidationResult.Success,
+ validationResult = StagedDns.ValidationResult.Success
),
- isAllowLanEnabled = false,
+ isAllowLanEnabled = false
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -537,8 +549,8 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
- validationResult = StagedDns.ValidationResult.InvalidAddress,
- ),
+ validationResult = StagedDns.ValidationResult.InvalidAddress
+ )
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -559,8 +571,8 @@ class AdvancedSettingsScreenTest {
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
- validationResult = StagedDns.ValidationResult.DuplicateAddress,
- ),
+ validationResult = StagedDns.ValidationResult.DuplicateAddress
+ )
),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt
index fc9bd30be0..56aedb69ca 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt
@@ -28,6 +28,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
@@ -64,6 +65,8 @@ import net.mullvad.mullvadvpn.compose.dialog.MtuDialog
import net.mullvad.mullvadvpn.compose.dialog.ObfuscationInfoDialog
import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider
import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG
+import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
import net.mullvad.mullvadvpn.compose.theme.MullvadBlue20
import net.mullvad.mullvadvpn.compose.theme.MullvadDarkBlue
import net.mullvad.mullvadvpn.compose.theme.MullvadGreen
@@ -240,6 +243,7 @@ fun AdvancedSettingScreen(
LazyColumn(
modifier =
Modifier.drawVerticalScrollbar(lazyListState)
+ .testTag(LAZY_LIST_TEST_TAG)
.fillMaxWidth()
.wrapContentHeight()
.animateContentSize(),
@@ -451,6 +455,7 @@ fun AdvancedSettingScreen(
isCellClickable = uiState.contentBlockersOptions.isAnyBlockerEnabled().not(),
modifier =
Modifier.background(MullvadDarkBlue)
+ .testTag(LAZY_LIST_LAST_ITEM_TEST_TAG)
.padding(
start = cellHorizontalSpacing,
top = topPadding,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt
new file mode 100644
index 0000000000..55251eb3ea
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/test/ComposeTestTagConstants.kt
@@ -0,0 +1,4 @@
+package net.mullvad.mullvadvpn.compose.test
+
+const val LAZY_LIST_TEST_TAG = "lazy_list_test_tag"
+const val LAZY_LIST_LAST_ITEM_TEST_TAG = "lazy_list_last_item_test_tag"