summaryrefslogtreecommitdiffhomepage
path: root/android/test/common/src/main
diff options
context:
space:
mode:
authorNiklas Berglund <niklas.berglund@gmail.com>2024-12-13 17:31:37 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-01-13 11:04:24 +0100
commitdd3ee9577ff3e99b048a8653ad0a393e47169ac2 (patch)
treebf71258782b3d5241859eb9206f28b71f0f6ac3d /android/test/common/src/main
parentfaf8f909b83af3401920485dbfc816ffd55d5cb7 (diff)
downloadmullvadvpn-dd3ee9577ff3e99b048a8653ad0a393e47169ac2.tar.xz
mullvadvpn-dd3ee9577ff3e99b048a8653ad0a393e47169ac2.zip
Add leak test for when VPN settings change
Diffstat (limited to 'android/test/common/src/main')
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt15
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/ConnectPage.kt10
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/DaitaSettingsPage.kt25
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/LoginPage.kt8
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SettingsPage.kt5
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TopBar.kt24
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/VpnSettingsPage.kt27
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"
}
}