diff options
| author | Niklas Berglund <niklas.berglund@gmail.com> | 2024-12-13 17:31:37 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-01-13 11:04:24 +0100 |
| commit | dd3ee9577ff3e99b048a8653ad0a393e47169ac2 (patch) | |
| tree | bf71258782b3d5241859eb9206f28b71f0f6ac3d /android/test/common/src/main | |
| parent | faf8f909b83af3401920485dbfc816ffd55d5cb7 (diff) | |
| download | mullvadvpn-dd3ee9577ff3e99b048a8653ad0a393e47169ac2.tar.xz mullvadvpn-dd3ee9577ff3e99b048a8653ad0a393e47169ac2.zip | |
Add leak test for when VPN settings change
Diffstat (limited to 'android/test/common/src/main')
7 files changed, 87 insertions, 27 deletions
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt index 41fe28b68c..2b9b008ad0 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt @@ -16,6 +16,10 @@ import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaime import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout +import net.mullvad.mullvadvpn.test.common.page.ConnectPage +import net.mullvad.mullvadvpn.test.common.page.SettingsPage +import net.mullvad.mullvadvpn.test.common.page.VpnSettingsPage +import net.mullvad.mullvadvpn.test.common.page.on class AppInteractor( private val device: UiDevice, @@ -53,6 +57,17 @@ class AppInteractor( ensureLoggedIn() } + fun enableLocalNetworkSharing() { + on<ConnectPage> { clickSettings() } + + on<SettingsPage> { clickVpnSettings() } + + on<VpnSettingsPage> { clickLocalNetworkSharingSwitch() } + + device.pressBack() + device.pressBack() + } + fun attemptLogin(accountNumber: String) { val loginObject = device.findObjectWithTimeout(By.clazz("android.widget.EditText")).apply { diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/ConnectPage.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/ConnectPage.kt index 552fc17ee4..d8f45b43bf 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/ConnectPage.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/ConnectPage.kt @@ -15,6 +15,14 @@ class ConnectPage internal constructor() : Page() { uiDevice.findObjectWithTimeout(By.res(CONNECT_CARD_HEADER_TEST_TAG)) } + fun clickSettings() { + uiDevice.findObjectWithTimeout(By.res(TOP_BAR_SETTINGS_BUTTON)).click() + } + + fun clickAccount() { + uiDevice.findObjectWithTimeout(By.res(TOP_BAR_ACCOUNT_BUTTON)).click() + } + fun clickSelectLocation() { uiDevice.findObjectWithTimeout(By.res(SELECT_LOCATION_BUTTON_TEST_TAG)).click() } @@ -77,6 +85,8 @@ class ConnectPage internal constructor() : Page() { } companion object { + const val TOP_BAR_ACCOUNT_BUTTON = "top_bar_account_button" + const val TOP_BAR_SETTINGS_BUTTON = "top_bar_settings_button" const val CONNECT_CARD_HEADER_TEST_TAG = "connect_card_header_test_tag" const val SELECT_LOCATION_BUTTON_TEST_TAG = "select_location_button_test_tag" const val CONNECT_BUTTON_TEST_TAG = "connect_button_test_tag" diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/DaitaSettingsPage.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/DaitaSettingsPage.kt new file mode 100644 index 0000000000..a4fa5b9286 --- /dev/null +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/DaitaSettingsPage.kt @@ -0,0 +1,25 @@ +package net.mullvad.mullvadvpn.test.common.page + +import androidx.test.uiautomator.By +import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout +import net.mullvad.mullvadvpn.test.common.page.VpnSettingsPage.Companion.SWITCH_TEST_TAG + +class DaitaSettingsPage internal constructor() : Page() { + private val enableSelector = By.text("Enable") + + override fun assertIsDisplayed() { + uiDevice.findObjectWithTimeout(By.res(DAITA_SCREEN_TEST_TAG)) + } + + fun clickEnableSwitch() { + val localNetworkSharingCell = uiDevice.findObjectWithTimeout(enableSelector).parent + val localNetworkSharingSwitch = + localNetworkSharingCell.findObjectWithTimeout(By.res(SWITCH_TEST_TAG)) + + localNetworkSharingSwitch.click() + } + + companion object { + const val DAITA_SCREEN_TEST_TAG = "daita_screen_test_tag" + } +} diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/LoginPage.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/LoginPage.kt index 1098e4d1cc..e08ff92106 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/LoginPage.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/LoginPage.kt @@ -11,6 +11,10 @@ class LoginPage internal constructor() : Page() { private val invalidAccountNumberSelector = By.text("Invalid account number") private val loginSelector = By.text("Login") + fun clickSettings() { + uiDevice.findObjectWithTimeout(By.res(TOP_BAR_SETTINGS_BUTTON)).click() + } + fun enterAccountNumber(accountNumber: String) { uiDevice.findObjectWithTimeout(By.clazz("android.widget.EditText")).text = accountNumber } @@ -29,4 +33,8 @@ class LoginPage internal constructor() : Page() { override fun assertIsDisplayed() { uiDevice.findObjectWithTimeout(loginSelector) } + + companion object { + const val TOP_BAR_SETTINGS_BUTTON = "top_bar_settings_button" + } } diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SettingsPage.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SettingsPage.kt index ebeb8eea4a..2ce0cc1c29 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SettingsPage.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SettingsPage.kt @@ -19,7 +19,12 @@ class SettingsPage internal constructor() : Page() { uiDevice.findObjectWithTimeout(faqAndGuidesSelector).click() } + fun clickDaita() { + uiDevice.findObjectWithTimeout(By.res(DAITA_CELL_TEST_TAG)).click() + } + companion object { const val VPN_SETTINGS_CELL_TEST_TAG = "vpn_settings_cell_test_tag" + const val DAITA_CELL_TEST_TAG = "data_cell_test_tag" } } diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TopBar.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TopBar.kt deleted file mode 100644 index c602e26def..0000000000 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TopBar.kt +++ /dev/null @@ -1,24 +0,0 @@ -package net.mullvad.mullvadvpn.test.common.page - -import androidx.test.uiautomator.By -import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout - -class TopBar internal constructor() : Page() { - override fun assertIsDisplayed() { - uiDevice.findObjectWithTimeout(By.res(TOP_BAR_TEST_TAG)) - } - - fun clickSettings() { - uiDevice.findObjectWithTimeout(By.res(TOP_BAR_SETTINGS_BUTTON)).click() - } - - fun clickAccount() { - uiDevice.findObjectWithTimeout(By.res(TOP_BAR_ACCOUNT_BUTTON)).click() - } - - companion object { - const val TOP_BAR_TEST_TAG = "top_bar_test_tag" - const val TOP_BAR_ACCOUNT_BUTTON = "top_bar_account_button" - const val TOP_BAR_SETTINGS_BUTTON = "top_bar_settings_button" - } -} diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/VpnSettingsPage.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/VpnSettingsPage.kt index 1a74b80232..9301768100 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/VpnSettingsPage.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/VpnSettingsPage.kt @@ -22,24 +22,42 @@ class VpnSettingsPage internal constructor() : Page() { localNetworkSharingSwitch.click() } - fun scrollUntilWireguardObfuscationUdpOverTcpCell() { + fun scrollUntilWireGuardObfuscationUdpOverTcpCell() { scrollUntilCell(WIREGUARD_OBFUSCATION_UDP_OVER_TCP_CELL_TEST_TAG) } - fun scrollUntilWireguardObfuscationOffCell() { + fun scrollUntilWireGuardObfuscationOffCell() { scrollUntilCell(WIREGUARD_OBFUSCATION_OFF_CELL_TEST_TAG) } + fun scrollUntilPostQuantumOffCell() { + scrollUntilCell(QUANTUM_RESISTANCE_OFF_CELL_TEST_TAG) + } + + fun scrollUntilWireGuardObfuscationShadowsocksCell() { + scrollUntilCell(WIREGUARD_OBFUSCATION_SHADOWSOCKS_CELL_TEST_TAG) + } + fun clickWireguardObfuscationUdpOverTcpCell() { uiDevice .findObjectWithTimeout(By.res(WIREGUARD_OBFUSCATION_UDP_OVER_TCP_CELL_TEST_TAG)) .click() } - fun clickWireguardObfuscationOffCell() { + fun clickWireGuardObfuscationOffCell() { uiDevice.findObjectWithTimeout(By.res(WIREGUARD_OBFUSCATION_OFF_CELL_TEST_TAG)).click() } + fun clickPostQuantumOffCell() { + uiDevice.findObjectWithTimeout(By.res(QUANTUM_RESISTANCE_OFF_CELL_TEST_TAG)).click() + } + + fun clickWireGuardObfuscationShadowsocksCell() { + uiDevice + .findObjectWithTimeout(By.res(WIREGUARD_OBFUSCATION_SHADOWSOCKS_CELL_TEST_TAG)) + .click() + } + private fun scrollUntilCell(testTag: String) { val scrollView2 = uiDevice.findObjectWithTimeout(By.res(SETTINGS_SCROLL_VIEW_TEST_TAG)) scrollView2.scrollUntil(Direction.DOWN, Until.hasObject(By.res(testTag))) @@ -57,6 +75,9 @@ class VpnSettingsPage internal constructor() : Page() { "wireguard_obfuscation_off_cell_test_tag" const val WIREGUARD_CUSTOM_PORT_CELL_TEST_TAG = "lazy_list_wireguard_custom_port_text_test_tag" + const val WIREGUARD_OBFUSCATION_SHADOWSOCKS_CELL_TEST_TAG = + "wireguard_obfuscation_shadowsocks_cell_test_tag" const val SWITCH_TEST_TAG = "switch_test_tag" + const val QUANTUM_RESISTANCE_OFF_CELL_TEST_TAG = "lazy_list_quantum_item_off_test_tag" } } |
