diff options
| author | Niklas Berglund <niklas.berglund@gmail.com> | 2024-11-20 16:31:37 +0100 |
|---|---|---|
| committer | Niklas Berglund <niklas.berglund@gmail.com> | 2024-12-03 15:15:37 +0100 |
| commit | a83948cbb4be5c02c90ebddf8068a06e0e892fb8 (patch) | |
| tree | a5ade65e3c9e2999dd3e9bfc04deda07e65ab8ff /android/app | |
| parent | 7b0f970d286089d6d00ede630e275624a8b84022 (diff) | |
| download | mullvadvpn-a83948cbb4be5c02c90ebddf8068a06e0e892fb8.tar.xz mullvadvpn-a83948cbb4be5c02c90ebddf8068a06e0e892fb8.zip | |
Implement UDP-over-TCP e2e test and firewall API client
Diffstat (limited to 'android/app')
5 files changed, 31 insertions, 19 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt index 45edfcd204..19802571f6 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt @@ -16,7 +16,7 @@ import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG -import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG +import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_VPN_SETTINGS_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_OBFUSCATION_TITLE_TEST_TAG @@ -47,7 +47,7 @@ class VpnSettingsScreenTest { // Arrange setContentWithTheme { VpnSettingsScreen(state = VpnSettingsUiState.createDefault()) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG)) // Assert @@ -70,7 +70,7 @@ class VpnSettingsScreenTest { ) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG)) // Assert @@ -117,7 +117,7 @@ class VpnSettingsScreenTest { ) ) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG)) // Assert onNodeWithText(DUMMY_DNS_ADDRESS).assertDoesNotExist() @@ -213,7 +213,7 @@ class VpnSettingsScreenTest { ) ) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG)) // Assert @@ -236,7 +236,7 @@ class VpnSettingsScreenTest { onSelectQuantumResistanceSetting = mockSelectQuantumResistantSettingListener, ) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG)) // Assert @@ -261,7 +261,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode( hasTestTag(String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, 53)) ) @@ -291,7 +291,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode( hasTestTag(String.format(LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG, 53)) ) @@ -318,7 +318,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG)) // Assert @@ -342,7 +342,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG)) onNodeWithTag(testTag = LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG).performClick() @@ -364,7 +364,7 @@ class VpnSettingsScreenTest { ) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_LAST_ITEM_TEST_TAG)) // Act @@ -407,7 +407,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_OBFUSCATION_TITLE_TEST_TAG)) onNodeWithText("WireGuard obfuscation").performClick() @@ -430,7 +430,7 @@ class VpnSettingsScreenTest { // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG)) onNodeWithText("Quantum-resistant tunnel").performClick() @@ -469,7 +469,7 @@ class VpnSettingsScreenTest { ) } - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG)) onNodeWithText("Custom").performClick() @@ -490,7 +490,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG)) onNodeWithTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG).performClick() @@ -514,7 +514,7 @@ class VpnSettingsScreenTest { } // Act - onNodeWithTag(LAZY_LIST_TEST_TAG) + onNodeWithTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG) .performScrollToNode(hasTestTag(LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG)) onNodeWithTag(testTag = LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG).performClick() diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt index 6688f5d0ab..5191eba331 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt @@ -19,6 +19,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -57,12 +58,14 @@ fun ObfuscationModeCell( isSelected: Boolean, onSelected: (ObfuscationMode) -> Unit, onNavigate: () -> Unit = {}, + testTag: String? = null, ) { Row( modifier = Modifier.height(IntrinsicSize.Min) .fillMaxWidth() .background(MaterialTheme.colorScheme.surfaceContainerLow) + .let { if (testTag != null) it.testTag(testTag) else it } ) { TwoRowCell( modifier = Modifier.weight(1f), diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/connectioninfo/ConnectionDetailPanel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/connectioninfo/ConnectionDetailPanel.kt index 3ec353bc96..7d4e2a5838 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/connectioninfo/ConnectionDetailPanel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/connectioninfo/ConnectionDetailPanel.kt @@ -16,6 +16,7 @@ import androidx.constraintlayout.compose.ConstraintLayout import androidx.constraintlayout.compose.Dimension import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.screen.ConnectionDetails +import net.mullvad.mullvadvpn.compose.test.LOCATION_INFO_CONNECTION_IN_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LOCATION_INFO_CONNECTION_OUT_TEST_TAG import net.mullvad.mullvadvpn.constant.SPACE_CHAR import net.mullvad.mullvadvpn.lib.model.TransportProtocol @@ -88,7 +89,7 @@ fun ConnectionDetails( maxLines = 1, overflow = TextOverflow.Ellipsis, modifier = - Modifier.constrainAs(inAddr) { + Modifier.testTag(LOCATION_INFO_CONNECTION_IN_TEST_TAG).constrainAs(inAddr) { start.linkTo(headerBarrier) end.linkTo(parent.end) top.linkTo(parent.top) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt index f763272438..6489b53e79 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt @@ -82,11 +82,13 @@ import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_QUANTUM_ITEM_ON_TEST_TAG -import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG +import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_VPN_SETTINGS_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_OBFUSCATION_TITLE_TEST_TAG import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_WIREGUARD_PORT_ITEM_X_TEST_TAG +import net.mullvad.mullvadvpn.compose.test.WIREGUARD_OBFUSCATION_OFF_CELL +import net.mullvad.mullvadvpn.compose.test.WIREGUARD_OBFUSCATION_UDP_OVER_TCP_CELL import net.mullvad.mullvadvpn.compose.transitions.SlideInFromRightTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle import net.mullvad.mullvadvpn.compose.util.OnNavResultValue @@ -297,7 +299,7 @@ fun VpnSettingsScreen( snackbarHostState = snackbarHostState, ) { modifier, lazyListState -> LazyColumn( - modifier = modifier.testTag(LAZY_LIST_TEST_TAG).animateContentSize(), + modifier = modifier.testTag(LAZY_LIST_VPN_SETTINGS_TEST_TAG).animateContentSize(), state = lazyListState, ) { if (state.systemVpnSettingsAvailable) { @@ -568,6 +570,7 @@ fun VpnSettingsScreen( port = state.selectedUdp2TcpObfuscationPort, onSelected = onSelectObfuscationMode, onNavigate = navigateToUdp2TcpSettings, + testTag = WIREGUARD_OBFUSCATION_UDP_OVER_TCP_CELL, ) } itemWithDivider { @@ -575,6 +578,7 @@ fun VpnSettingsScreen( title = stringResource(id = R.string.off), isSelected = state.obfuscationMode == ObfuscationMode.Off, onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Off) }, + testTag = WIREGUARD_OBFUSCATION_OFF_CELL, ) } 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 index d90f14a763..b124ffcc61 100644 --- 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 @@ -5,6 +5,7 @@ const val TOP_BAR_ACCOUNT_BUTTON = "top_bar_account_button" const val TOP_BAR_SETTINGS_BUTTON = "top_bar_settings_button" // VpnSettingsScreen +const val LAZY_LIST_VPN_SETTINGS_TEST_TAG = "lazy_list_vpn_settings_test_tag" const val LAZY_LIST_TEST_TAG = "lazy_list_test_tag" const val LAZY_LIST_LAST_ITEM_TEST_TAG = "lazy_list_last_item_test_tag" const val LAZY_LIST_QUANTUM_ITEM_OFF_TEST_TAG = "lazy_list_quantum_item_off_test_tag" @@ -18,6 +19,9 @@ const val CUSTOM_PORT_DIALOG_INPUT_TEST_TAG = "custom_port_dialog_input_test_tag const val LAZY_LIST_WIREGUARD_OBFUSCATION_TITLE_TEST_TAG = "lazy_list_wireguard_obfuscation_title_test_tag" const val SWITCH_TEST_TAG = "switch_test_tag" +const val WIREGUARD_OBFUSCATION_OFF_CELL = "wireguard_obfuscation_off_cell_test_tag" +const val WIREGUARD_OBFUSCATION_UDP_OVER_TCP_CELL = + "wireguard_obfuscation_udp_over_tcp_cell_test_tag" // SelectLocationScreen, ConnectScreen, CustomListLocationsScreen const val CIRCULAR_PROGRESS_INDICATOR = "circular_progress_indicator" |
