adding sign out + re-sign in flows to the robots
- the verification popup if flaky so we're attempting both exit flows if needed
This commit is contained in:
parent
9b4cd3c3c4
commit
f61d20a7f8
@ -17,8 +17,8 @@
|
|||||||
package im.vector.app.ui
|
package im.vector.app.ui
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.isRoot
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import androidx.test.filters.LargeTest
|
import androidx.test.filters.LargeTest
|
||||||
@ -26,12 +26,13 @@ import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assert
|
|||||||
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
|
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
|
||||||
import im.vector.app.EspressoHelper
|
import im.vector.app.EspressoHelper
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.SleepViewAction
|
import im.vector.app.espresso.tools.waitUntilViewVisible
|
||||||
import im.vector.app.features.MainActivity
|
import im.vector.app.features.MainActivity
|
||||||
import im.vector.app.ui.robot.ElementRobot
|
import im.vector.app.ui.robot.ElementRobot
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
import timber.log.Timber
|
||||||
import java.lang.Thread.sleep
|
import java.lang.Thread.sleep
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@ -55,7 +56,7 @@ class UiAllScreensSanityTest {
|
|||||||
fun allScreensTest() {
|
fun allScreensTest() {
|
||||||
// Create an account
|
// Create an account
|
||||||
val userId = "UiTest_" + UUID.randomUUID().toString()
|
val userId = "UiTest_" + UUID.randomUUID().toString()
|
||||||
elementRobot.login(userId)
|
elementRobot.signUp(userId)
|
||||||
|
|
||||||
elementRobot.settings {
|
elementRobot.settings {
|
||||||
general { crawl() }
|
general { crawl() }
|
||||||
@ -89,34 +90,29 @@ class UiAllScreensSanityTest {
|
|||||||
verifyCreatedRoom()
|
verifyCreatedRoom()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable until the "you don't have a session for id %d" sign out bug is fixed
|
elementRobot.signout()
|
||||||
// elementRobot.signout()
|
|
||||||
// // Login again on the same account
|
|
||||||
// elementRobot.login(userId)
|
|
||||||
//
|
|
||||||
// ignoreVerification()
|
|
||||||
//
|
|
||||||
// elementRobot.signout()
|
|
||||||
// clickDialogPositiveButton()
|
|
||||||
|
|
||||||
|
// Login again on the same account
|
||||||
|
elementRobot.login(userId)
|
||||||
|
|
||||||
|
ignoreVerification()
|
||||||
// TODO Deactivate account instead of logout?
|
// TODO Deactivate account instead of logout?
|
||||||
|
elementRobot.signout()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ignoreVerification() {
|
private fun ignoreVerification() {
|
||||||
sleep(6000)
|
kotlin.runCatching {
|
||||||
val activity = EspressoHelper.getCurrentActivity()!!
|
sleep(6000)
|
||||||
|
val activity = EspressoHelper.getCurrentActivity()!!
|
||||||
|
val popup = activity.findViewById<View>(com.tapadoo.alerter.R.id.llAlertBackground)!!
|
||||||
|
activity.runOnUiThread { popup.performClick() }
|
||||||
|
|
||||||
val popup = activity.findViewById<View>(com.tapadoo.alerter.R.id.llAlertBackground)
|
waitUntilViewVisible(withId(R.id.bottomSheetFragmentContainer))
|
||||||
activity.runOnUiThread {
|
waitUntilViewVisible(withText(R.string.skip))
|
||||||
popup.performClick()
|
clickOn(R.string.skip)
|
||||||
}
|
assertDisplayed(R.string.are_you_sure)
|
||||||
|
clickOn(R.string.skip)
|
||||||
assertDisplayed(R.id.bottomSheetFragmentContainer)
|
waitUntilViewVisible(withId(R.id.bottomSheetFragmentContainer))
|
||||||
|
}.onFailure { Timber.w("Verification popup missing", it) }
|
||||||
onView(isRoot()).perform(SleepViewAction.sleep(2000))
|
|
||||||
|
|
||||||
clickOn(R.string.skip)
|
|
||||||
assertDisplayed(R.string.are_you_sure)
|
|
||||||
clickOn(R.string.skip)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,14 +17,14 @@
|
|||||||
package im.vector.app.ui.robot
|
package im.vector.app.ui.robot
|
||||||
|
|
||||||
import androidx.test.espresso.Espresso.pressBack
|
import androidx.test.espresso.Espresso.pressBack
|
||||||
import androidx.test.espresso.action.ViewActions
|
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions
|
import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed
|
||||||
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
|
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
|
||||||
|
import com.adevinta.android.barista.interaction.BaristaDialogInteractions.clickDialogNegativeButton
|
||||||
|
import com.adevinta.android.barista.interaction.BaristaDialogInteractions.clickDialogPositiveButton
|
||||||
import com.adevinta.android.barista.interaction.BaristaDrawerInteractions.openDrawer
|
import com.adevinta.android.barista.interaction.BaristaDrawerInteractions.openDrawer
|
||||||
import im.vector.app.EspressoHelper
|
import im.vector.app.EspressoHelper
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.activityIdlingResource
|
|
||||||
import im.vector.app.espresso.tools.waitUntilActivityVisible
|
import im.vector.app.espresso.tools.waitUntilActivityVisible
|
||||||
import im.vector.app.espresso.tools.waitUntilViewVisible
|
import im.vector.app.espresso.tools.waitUntilViewVisible
|
||||||
import im.vector.app.features.createdirect.CreateDirectRoomActivity
|
import im.vector.app.features.createdirect.CreateDirectRoomActivity
|
||||||
@ -36,22 +36,27 @@ import im.vector.app.withIdlingResource
|
|||||||
|
|
||||||
class ElementRobot {
|
class ElementRobot {
|
||||||
|
|
||||||
fun login(userId: String) {
|
fun signUp(userId: String) {
|
||||||
val onboardingRobot = OnboardingRobot()
|
val onboardingRobot = OnboardingRobot()
|
||||||
onboardingRobot.createAccount(userId = userId)
|
onboardingRobot.createAccount(userId = userId)
|
||||||
|
waitForHome()
|
||||||
|
}
|
||||||
|
|
||||||
withIdlingResource(activityIdlingResource(HomeActivity::class.java)) {
|
fun login(userId: String) {
|
||||||
BaristaVisibilityAssertions.assertDisplayed(R.id.roomListContainer)
|
val onboardingRobot = OnboardingRobot()
|
||||||
ViewActions.closeSoftKeyboard()
|
onboardingRobot.login(userId = userId)
|
||||||
|
waitForHome()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun waitForHome() {
|
||||||
|
waitUntilActivityVisible<HomeActivity> {
|
||||||
|
waitUntilViewVisible(withId(R.id.roomListContainer))
|
||||||
}
|
}
|
||||||
|
|
||||||
val activity = EspressoHelper.getCurrentActivity()!!
|
val activity = EspressoHelper.getCurrentActivity()!!
|
||||||
val uiSession = (activity as HomeActivity).activeSessionHolder.getActiveSession()
|
val uiSession = (activity as HomeActivity).activeSessionHolder.getActiveSession()
|
||||||
|
|
||||||
withIdlingResource(initialSyncIdlingResource(uiSession)) {
|
withIdlingResource(initialSyncIdlingResource(uiSession)) {
|
||||||
BaristaVisibilityAssertions.assertDisplayed(R.id.roomListContainer)
|
waitUntilViewVisible(withId(R.id.bottomNavigationView))
|
||||||
}
|
}
|
||||||
waitUntilViewVisible(withId(R.id.bottomNavigationView))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun settings(block: SettingsRobot.() -> Unit) {
|
fun settings(block: SettingsRobot.() -> Unit) {
|
||||||
@ -88,9 +93,26 @@ class ElementRobot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun signout() {
|
fun signout() {
|
||||||
OnboardingRobot().signout()
|
clickOn(R.id.groupToolbarAvatarImageView)
|
||||||
|
clickOn(R.id.homeDrawerHeaderSignoutView)
|
||||||
|
|
||||||
|
val hasSentMessages = kotlin.runCatching {
|
||||||
|
waitUntilViewVisible(withId(R.id.exitAnywayButton))
|
||||||
|
}.isSuccess
|
||||||
|
|
||||||
|
if (hasSentMessages) {
|
||||||
|
// We have sent a message in a e2e room, accept to loose it
|
||||||
|
clickOn(R.id.exitAnywayButton)
|
||||||
|
// Dark pattern
|
||||||
|
waitUntilViewVisible(withId(android.R.id.button2))
|
||||||
|
clickDialogNegativeButton()
|
||||||
|
} else {
|
||||||
|
waitUntilViewVisible(withId(android.R.id.button1))
|
||||||
|
clickDialogPositiveButton()
|
||||||
|
}
|
||||||
|
|
||||||
waitUntilActivityVisible<LoginActivity> {
|
waitUntilActivityVisible<LoginActivity> {
|
||||||
BaristaVisibilityAssertions.assertDisplayed(R.id.loginSplashLogo)
|
assertDisplayed(R.id.loginSplashLogo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,6 @@ import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertDis
|
|||||||
import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertEnabled
|
import com.adevinta.android.barista.assertion.BaristaEnabledAssertions.assertEnabled
|
||||||
import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed
|
import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed
|
||||||
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
|
import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
|
||||||
import com.adevinta.android.barista.interaction.BaristaDialogInteractions
|
|
||||||
import com.adevinta.android.barista.interaction.BaristaEditTextInteractions.writeTo
|
import com.adevinta.android.barista.interaction.BaristaEditTextInteractions.writeTo
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.espresso.tools.waitUntilActivityVisible
|
import im.vector.app.espresso.tools.waitUntilActivityVisible
|
||||||
@ -78,20 +77,5 @@ class OnboardingRobot {
|
|||||||
|
|
||||||
closeSoftKeyboard()
|
closeSoftKeyboard()
|
||||||
clickOn(R.id.loginSubmit)
|
clickOn(R.id.loginSubmit)
|
||||||
|
|
||||||
// Wait
|
|
||||||
waitUntilActivityVisible<HomeActivity> {
|
|
||||||
assertDisplayed(R.id.homeDetailFragmentContainer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun signout() {
|
|
||||||
clickOn(R.id.groupToolbarAvatarImageView)
|
|
||||||
clickOn(R.id.homeDrawerHeaderSignoutView)
|
|
||||||
|
|
||||||
// We have sent a message in a e2e room, accept to loose it
|
|
||||||
clickOn(R.id.exitAnywayButton)
|
|
||||||
// Dark pattern
|
|
||||||
BaristaDialogInteractions.clickDialogNegativeButton()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user