summaryrefslogtreecommitdiffhomepage
path: root/android/test/mockapi
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2025-05-09 15:57:25 +0200
committerDavid Göransson <david.goransson@mullvad.net>2025-05-12 14:09:31 +0200
commit069e7a52de87e665f7fdae8a664182f23150da55 (patch)
tree8195719809c07921056735b991c6fb797ce8adf9 /android/test/mockapi
parent405b0be1f551906890be84f5e8aca3539b6bcfbf (diff)
downloadmullvadvpn-069e7a52de87e665f7fdae8a664182f23150da55.tar.xz
mullvadvpn-069e7a52de87e665f7fdae8a664182f23150da55.zip
Convert all test to use Page pattern
Converts all our last test to use the Page object pattern and clean up a bunch of old MockApi and E2E test logic.
Diffstat (limited to 'android/test/mockapi')
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt44
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt36
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt41
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt34
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt27
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/ManageDevicesMockApiTest.kt15
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt6
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt38
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/constant/Constants.kt14
9 files changed, 91 insertions, 164 deletions
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt
index d89313fc45..7aec8f4725 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt
@@ -2,10 +2,11 @@ package net.mullvad.mullvadvpn.test.mockapi
import androidx.test.uiautomator.By
import java.time.ZonedDateTime
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-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.AccountPage
+import net.mullvad.mullvadvpn.test.common.page.ConnectPage
+import net.mullvad.mullvadvpn.test.common.page.OutOfTimePage
+import net.mullvad.mullvadvpn.test.common.page.on
import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2
@@ -27,25 +28,18 @@ class AccountExpiryMockApiTest : MockApiTest() {
}
// Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
-
- // Assert logged in
- device.dismissChangelogDialogIfShown()
- app.ensureLoggedIn()
+ app.launchAndLogIn(validAccountNumber)
// Add one month to the account expiry
val newAccountExpiry = oldAccountExpiry.plusMonths(1)
apiDispatcher.accountExpiry = newAccountExpiry
- // Go to account page to update the account expiry
- app.clickAccountCog()
+ on<ConnectPage> { clickAccount() }
- app.ensureAccountScreen()
- device.findObjectWithTimeout(By.text(newAccountExpiry.toExpiryDateString()))
+ on<AccountPage> {
+ // Assert that the account expiry date is updated
+ device.findObjectWithTimeout(By.text(newAccountExpiry.toExpiryDateString()))
+ }
}
@Test
@@ -61,28 +55,24 @@ class AccountExpiryMockApiTest : MockApiTest() {
}
// Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
+ app.launchAndLogIn(validAccountNumber)
- // Assert logged in
- device.dismissChangelogDialogIfShown()
- app.ensureLoggedIn()
+ // Wait for us to be on connect page before changing expiry
+ on<ConnectPage>()
// Set account time as expired
val newAccountExpiry = oldAccountExpiry.minusMonths(2)
apiDispatcher.accountExpiry = newAccountExpiry
+ on<ConnectPage> { clickAccount() }
+
// Go to account page to update the account expiry
- app.clickAccountCog()
- app.ensureAccountScreen()
+ on<AccountPage>()
// Go back to the main screen
device.pressBack()
// Assert that we show the out of time screen
- app.ensureOutOfTime()
+ on<OutOfTimePage>()
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt
index 095ad66c64..2f15d83d09 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt
@@ -2,15 +2,14 @@ package net.mullvad.mullvadvpn.test.mockapi
import androidx.test.uiautomator.By
import java.time.ZonedDateTime
-import net.mullvad.mullvadvpn.lib.ui.tag.LOGIN_INPUT_TEST_TAG
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-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.AccountPage
+import net.mullvad.mullvadvpn.test.common.page.ConnectPage
+import net.mullvad.mullvadvpn.test.common.page.LoginPage
+import net.mullvad.mullvadvpn.test.common.page.on
import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2
-import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Test
class AccountHistoryMockApiTest : MockApiTest() {
@@ -26,25 +25,18 @@ class AccountHistoryMockApiTest : MockApiTest() {
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
}
- // Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
- device.dismissChangelogDialogIfShown()
- app.ensureLoggedIn()
- app.clickAccountCog()
- app.clickActionButtonByText("Log out")
- app.waitForLoginPrompt()
- device.findObjectWithTimeout(By.res(LOGIN_INPUT_TEST_TAG)).click()
+ app.launchAndLogIn(validAccountNumber)
+
+ on<ConnectPage> { clickAccount() }
+
+ on<AccountPage> { clickLogOut() }
- // Assert
val expectedResult = "1234 1234 1234 1234"
- assertNotNull(device.findObjectWithTimeout(By.text(expectedResult)))
+ on<LoginPage> {
+ assertHasAccountHistory(expectedResult)
+ device.findObjectWithTimeout(By.text(expectedResult)).click()
+ }
- // Try to login with the same account again
- device.findObjectWithTimeout(By.text(expectedResult)).click()
- app.ensureLoggedIn()
+ on<ConnectPage>()
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt
index 9b5cf85b95..259691f7df 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt
@@ -1,8 +1,11 @@
package net.mullvad.mullvadvpn.test.mockapi
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove
-import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown
+import androidx.test.uiautomator.By
+import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
+import net.mullvad.mullvadvpn.test.common.page.LoginPage
+import net.mullvad.mullvadvpn.test.common.page.WelcomePage
+import net.mullvad.mullvadvpn.test.common.page.dismissStorePasswordPromptIfShown
+import net.mullvad.mullvadvpn.test.common.page.on
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2
import org.junit.jupiter.api.Test
@@ -16,34 +19,26 @@ class CreateAccountMockApiTest : MockApiTest() {
expectedAccountNumber = createdAccountNumber
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
}
- app.launch(endpoint)
+ app.launchAndEnsureOnLoginPage()
- // Act
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptCreateAccount()
+ on<LoginPage> { clickCreateAccount() }
- app.dismissStorePasswordPromptIfShown()
+ device.dismissStorePasswordPromptIfShown()
- // Assert
- val expectedResult = "1234 1234 1234 1234"
- app.ensureAccountCreated(expectedResult)
+ on<WelcomePage> {
+ // Ensure account number is visible
+ device.findObjectWithTimeout(By.text("1234 1234 1234 1234"))
+ }
}
@Test
fun testCreateAccountFailed() {
// Arrange
- app.launch(endpoint)
-
- // Act
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- device.dismissChangelogDialogIfShown()
- app.waitForLoginPrompt()
- app.attemptCreateAccount()
+ app.launchAndEnsureOnLoginPage()
- // Assert
- app.ensureAccountCreationFailed()
+ on<LoginPage> {
+ clickCreateAccount()
+ device.findObjectWithTimeout(By.text("Failed to create account"))
+ }
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt
index b246bf2062..699b19da32 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt
@@ -5,9 +5,9 @@ import androidx.test.uiautomator.Until
import java.time.ZonedDateTime
import net.mullvad.mullvadvpn.lib.ui.tag.LOGIN_TITLE_TEST_TAG
import net.mullvad.mullvadvpn.test.common.constant.DEFAULT_TIMEOUT
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove
-import net.mullvad.mullvadvpn.test.common.extension.dismissChangelogDialogIfShown
+import net.mullvad.mullvadvpn.test.common.page.ConnectPage
+import net.mullvad.mullvadvpn.test.common.page.OutOfTimePage
+import net.mullvad.mullvadvpn.test.common.page.on
import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2
@@ -23,14 +23,9 @@ class LoginMockApiTest : MockApiTest() {
expectedAccountNumber = null
accountExpiry = ZonedDateTime.now().plusDays(1)
}
- app.launch(endpoint)
- // Act
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
- app.attemptLogin(validAccountNumber)
+ // Act login with invalid credentials
+ app.launchAndLogIn(validAccountNumber)
// Assert
val result =
@@ -53,15 +48,10 @@ class LoginMockApiTest : MockApiTest() {
}
// Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
- device.dismissChangelogDialogIfShown()
+ app.launchAndLogIn(validAccountNumber)
// Assert
- app.ensureLoggedIn()
+ on<ConnectPage>()
}
@Test
@@ -75,15 +65,9 @@ class LoginMockApiTest : MockApiTest() {
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
}
- // Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
- device.dismissChangelogDialogIfShown()
+ app.launchAndLogIn(validAccountNumber)
// Assert
- app.ensureOutOfTime()
+ on<OutOfTimePage>()
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt
index da41d41066..08bc8d7862 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt
@@ -1,15 +1,13 @@
package net.mullvad.mullvadvpn.test.mockapi
-import androidx.test.uiautomator.By
import java.time.ZonedDateTime
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-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.AccountPage
+import net.mullvad.mullvadvpn.test.common.page.ConnectPage
+import net.mullvad.mullvadvpn.test.common.page.LoginPage
+import net.mullvad.mullvadvpn.test.common.page.on
import net.mullvad.mullvadvpn.test.mockapi.constant.DEFAULT_DEVICE_LIST
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_2
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_2
-import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Test
class LogoutMockApiTest : MockApiTest() {
@@ -26,17 +24,12 @@ class LogoutMockApiTest : MockApiTest() {
}
// Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
- device.dismissChangelogDialogIfShown()
- app.ensureLoggedIn()
- app.clickAccountCog()
- app.clickActionButtonByText("Log out")
+ app.launchAndLogIn(validAccountNumber)
- // Assert
- assertNotNull(device.findObjectWithTimeout(By.text("Login")))
+ on<ConnectPage> { clickAccount() }
+
+ on<AccountPage> { clickLogOut() }
+
+ on<LoginPage>()
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/ManageDevicesMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/ManageDevicesMockApiTest.kt
index 1b087ec0fe..3a729032ab 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/ManageDevicesMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/ManageDevicesMockApiTest.kt
@@ -2,9 +2,6 @@ package net.mullvad.mullvadvpn.test.mockapi
import androidx.test.uiautomator.By
import java.time.ZonedDateTime
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-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.AccountPage
import net.mullvad.mullvadvpn.test.common.page.ConnectPage
@@ -29,13 +26,7 @@ class ManageDevicesMockApiTest : MockApiTest() {
}
// Act - go to devices screen
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
- device.waitForIdle()
- device.dismissChangelogDialogIfShown()
+ app.launchAndLogIn(validAccountNumber)
on<ConnectPage> { clickAccount() }
@@ -48,8 +39,8 @@ class ManageDevicesMockApiTest : MockApiTest() {
removeDevice("Yellow Hat")
- // Confirm removal of device
- app.clickActionButtonByText("Remove")
+ // Confirm the removal of the device
+ device.findObjectWithTimeout(By.text("Remove")).click()
expectDeviceToBeRemoved("Yellow Hat")
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt
index c7cb8f0377..6327a54757 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiTest.kt
@@ -12,7 +12,6 @@ import net.mullvad.mullvadvpn.lib.endpoint.ApiEndpointOverride
import net.mullvad.mullvadvpn.test.common.interactor.AppInteractor
import net.mullvad.mullvadvpn.test.common.rule.CaptureScreenshotOnFailedTestRule
import net.mullvad.mullvadvpn.test.mockapi.constant.LOG_TAG
-import net.mullvad.mullvadvpn.test.mockapi.constant.PACKAGE_NAME
import okhttp3.mockwebserver.MockWebServer
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
@@ -42,11 +41,12 @@ abstract class MockApiTest {
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
targetContext = InstrumentationRegistry.getInstrumentation().targetContext
- app = AppInteractor(device, targetContext, PACKAGE_NAME)
-
mockWebServer.start()
Logger.d("Mocked web server started using port: ${mockWebServer.port}")
endpoint = createEndpoint(mockWebServer.port)
+
+ Logger.d("targetContext packageName: ${targetContext.packageName}")
+ app = AppInteractor(device, targetContext, endpoint)
}
@AfterEach
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt
index 2a5d91feaa..15638c6add 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt
@@ -1,11 +1,10 @@
package net.mullvad.mullvadvpn.test.mockapi
-import androidx.test.uiautomator.By
import java.time.ZonedDateTime
-import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
-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.TooManyDevicesPage
+import net.mullvad.mullvadvpn.test.common.page.on
+import net.mullvad.mullvadvpn.test.common.page.removeDeviceFlow
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME_6
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID_6
import net.mullvad.mullvadvpn.test.mockapi.constant.FULL_DEVICE_LIST
@@ -24,31 +23,16 @@ class TooManyDevicesMockApiTest : MockApiTest() {
}
// Act
- app.launch(endpoint)
- device.clickAgreeOnPrivacyDisclaimer()
- device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
- app.waitForLoginPrompt()
- app.attemptLogin(validAccountNumber)
+ app.launchAndLogIn(validAccountNumber)
// Assert that we have too many devices
- device.findObjectWithTimeout(By.text("Too many devices"))
- // And that the continue with login button is disabled
- device.findObjectWithTimeout(By.text("Continue with login").hasParent(By.enabled((false))))
+ on<TooManyDevicesPage> {
+ removeDeviceFlow(FULL_DEVICE_LIST.values.first())
- // Act
- // Wait until the application is idle to avoid skipping input events that are filtered out
- // depending on lifecycle state (dropUnlessResumed).
- device.waitForIdle()
- app.attemptToRemoveDevice()
-
- // Assert that a device was removed
- device.findObjectWithTimeout(By.text("Super!"))
-
- // Act
- app.clickActionButtonByText("Continue with login")
+ assertReadyToLogin()
+ clickContinueWithLogin()
+ }
- // Assert that we are logged in
- device.dismissChangelogDialogIfShown()
- app.ensureLoggedIn()
+ on<ConnectPage>()
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/constant/Constants.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/constant/Constants.kt
index 083fcc1160..4e907e106d 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/constant/Constants.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/constant/Constants.kt
@@ -1,7 +1,5 @@
package net.mullvad.mullvadvpn.test.mockapi.constant
-const val PACKAGE_NAME = "net.mullvad.mullvadvpn"
-
const val LOG_TAG = "mullvad-mockapi"
const val AUTH_TOKEN_URL_PATH = "/auth/v1/token"
@@ -10,17 +8,17 @@ const val ACCOUNT_URL_PATH = "/accounts/v1/accounts/me"
const val CREATE_ACCOUNT_URL_PATH = "/accounts/v1/accounts"
const val DUMMY_ID_1 = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
-const val DUMMY_DEVICE_NAME_1 = "mole mole"
+const val DUMMY_DEVICE_NAME_1 = "Mole Mole"
const val DUMMY_ID_2 = "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
-const val DUMMY_DEVICE_NAME_2 = "elom elom"
+const val DUMMY_DEVICE_NAME_2 = "Elom Elom"
const val DUMMY_ID_3 = "cccccccc-cccc-cccc-cccc-cccccccccccc"
-const val DUMMY_DEVICE_NAME_3 = "mole elom"
+const val DUMMY_DEVICE_NAME_3 = "Mole Elom"
const val DUMMY_ID_4 = "dddddddd-dddd-dddd-dddd-dddddddddddd"
-const val DUMMY_DEVICE_NAME_4 = "yellow hat"
+const val DUMMY_DEVICE_NAME_4 = "Yellow Hat"
const val DUMMY_ID_5 = "eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"
-const val DUMMY_DEVICE_NAME_5 = "secure tunnel"
+const val DUMMY_DEVICE_NAME_5 = "Secure Tunnel"
const val DUMMY_ID_6 = "ffffffff-ffff-ffff-ffff-ffffffffffff"
-const val DUMMY_DEVICE_NAME_6 = "red lobster"
+const val DUMMY_DEVICE_NAME_6 = "Red Lobster"
const val DUMMY_ACCESS_TOKEN =
"mva_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"