diff --git a/vector/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt b/vector/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt
index 7744d4b720..f296617d98 100644
--- a/vector/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt
+++ b/vector/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt
@@ -18,7 +18,9 @@ package im.vector.app.espresso.tools
 
 import android.app.Activity
 import android.view.View
-import androidx.test.espresso.Espresso
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.assertion.ViewAssertions
+import androidx.test.espresso.matcher.RootMatchers.isDialog
 import androidx.test.espresso.matcher.ViewMatchers
 import im.vector.app.activityIdlingResource
 import im.vector.app.waitForView
@@ -30,5 +32,9 @@ inline fun <reified T : Activity> waitUntilActivityVisible(noinline block: (() -
 }
 
 fun waitUntilViewVisible(viewMatcher: Matcher<View>) {
-    Espresso.onView(ViewMatchers.isRoot()).perform(waitForView(viewMatcher))
+    onView(ViewMatchers.isRoot()).perform(waitForView(viewMatcher))
+}
+
+fun waitUntilDialogVisible(viewMatcher: Matcher<View>) {
+    onView(viewMatcher).inRoot(isDialog()).check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
 }
diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt b/vector/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt
index a3bc5b26fc..60a6f7c110 100644
--- a/vector/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt
+++ b/vector/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt
@@ -29,6 +29,7 @@ import im.vector.app.EspressoHelper
 import im.vector.app.R
 import im.vector.app.espresso.tools.waitUntilActivityVisible
 import im.vector.app.espresso.tools.waitUntilViewVisible
+import im.vector.app.espresso.tools.waitUntilDialogVisible
 import im.vector.app.features.createdirect.CreateDirectRoomActivity
 import im.vector.app.features.home.HomeActivity
 import im.vector.app.features.login.LoginActivity
@@ -111,10 +112,10 @@ class ElementRobot {
             // 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))
+            waitUntilDialogVisible(withId(android.R.id.button2))
             clickDialogNegativeButton()
         } else {
-            waitUntilViewVisible(withId(android.R.id.button1))
+            waitUntilDialogVisible(withId(android.R.id.button1))
             clickDialogPositiveButton()
         }
 
diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt b/vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt
index fef5d4a1a2..8b87abadab 100644
--- a/vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt
+++ b/vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt
@@ -26,6 +26,7 @@ import com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assert
 import com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn
 import com.adevinta.android.barista.interaction.BaristaEditTextInteractions.writeTo
 import im.vector.app.R
+import im.vector.app.espresso.tools.waitUntilViewVisible
 import im.vector.app.waitForView
 
 class OnboardingRobot {
@@ -42,6 +43,7 @@ class OnboardingRobot {
                             userId: String,
                             password: String,
                             homeServerUrl: String) {
+        waitUntilViewVisible(withId(R.id.loginSplashSubmit))
         assertDisplayed(R.id.loginSplashSubmit, R.string.login_splash_submit)
         clickOn(R.id.loginSplashSubmit)
         assertDisplayed(R.id.loginServerTitle, R.string.login_server_title)
diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt b/vector/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt
index 0bcf9af813..e02732a727 100644
--- a/vector/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt
+++ b/vector/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt
@@ -27,6 +27,7 @@ import com.adevinta.android.barista.interaction.BaristaListInteractions.clickLis
 import im.vector.app.R
 import im.vector.app.espresso.tools.waitUntilActivityVisible
 import im.vector.app.espresso.tools.waitUntilViewVisible
+import im.vector.app.espresso.tools.waitUntilDialogVisible
 import im.vector.app.features.roommemberprofile.RoomMemberProfileActivity
 
 class RoomSettingsRobot {
@@ -80,7 +81,7 @@ class RoomSettingsRobot {
         clickListItem(R.id.matrixProfileRecyclerView, 17)
         waitUntilViewVisible(withText(R.string.room_permissions_change_room_avatar))
         clickOn(R.string.room_permissions_change_room_avatar)
-        waitUntilViewVisible(withId(android.R.id.button2))
+        waitUntilDialogVisible(withId(android.R.id.button2))
         clickDialogNegativeButton()
         waitUntilViewVisible(withText(R.string.room_permissions_title))
         // Toggle
@@ -95,7 +96,7 @@ class RoomSettingsRobot {
 
     private fun leaveRoom(block: DialogRobot.() -> Unit) {
         clickListItem(R.id.matrixProfileRecyclerView, 13)
-        waitUntilViewVisible(withId(android.R.id.button2))
+        waitUntilDialogVisible(withId(android.R.id.button2))
         val dialogRobot = DialogRobot()
         block(dialogRobot)
         if (dialogRobot.returnedToPreviousScreen) {
@@ -135,7 +136,7 @@ class RoomSettingsRobot {
 
         // Role
         clickListItem(R.id.matrixProfileRecyclerView, 3)
-        waitUntilViewVisible(withId(android.R.id.button2))
+        waitUntilDialogVisible(withId(android.R.id.button2))
         clickDialogNegativeButton()
         waitUntilViewVisible(withId(R.id.matrixProfileRecyclerView))
         pressBack()