Przeglądaj źródła

Merge pull request #13472 from nextcloud/bugfix/launcher-activity-it-tests

BugFix - LauncherActivityIT Tests
Andy Scherzinger 11 miesięcy temu
rodzic
commit
9c21d8ef74

+ 43 - 18
app/src/androidTest/java/com/nmc/android/ui/LauncherActivityIT.kt

@@ -6,47 +6,72 @@
  */
 package com.nmc.android.ui
 
+import androidx.annotation.UiThread
+import androidx.test.core.app.launchActivity
 import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.IdlingRegistry
 import androidx.test.espresso.assertion.ViewAssertions.matches
 import androidx.test.espresso.matcher.ViewMatchers
 import androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed
 import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
 import androidx.test.espresso.matcher.ViewMatchers.withId
-import androidx.test.ext.junit.rules.ActivityScenarioRule
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.owncloud.android.AbstractIT
 import com.owncloud.android.R
-import org.junit.Rule
+import com.owncloud.android.utils.EspressoIdlingResource
+import org.junit.After
+import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 class LauncherActivityIT : AbstractIT() {
 
-    @get:Rule
-    val activityRule = ActivityScenarioRule(LauncherActivity::class.java)
+    @Before
+    fun registerIdlingResource() {
+        IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
+    }
+
+    @After
+    fun unregisterIdlingResource() {
+        IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
+    }
 
     @Test
+    @UiThread
     fun testSplashScreenWithEmptyTitlesShouldHideTitles() {
-        waitForIdleSync()
-
-        onView(withId(R.id.ivSplash)).check(matches(isCompletelyDisplayed()))
-
-        onView(withId(R.id.splashScreenBold)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
-        onView(withId(R.id.splashScreenNormal)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
+        launchActivity<LauncherActivity>().use { scenario ->
+            scenario.onActivity { _ ->
+                onIdleSync {
+                    onView(withId(R.id.ivSplash)).check(matches(isCompletelyDisplayed()))
+                    onView(
+                        withId(R.id.splashScreenBold)
+                    ).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
+                    onView(
+                        withId(R.id.splashScreenNormal)
+                    ).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
+                }
+            }
+        }
     }
 
     @Test
+    @UiThread
     fun testSplashScreenWithTitlesShouldShowTitles() {
-        waitForIdleSync()
-        onView(withId(R.id.ivSplash)).check(matches(isCompletelyDisplayed()))
+        launchActivity<LauncherActivity>().use { scenario ->
+            scenario.onActivity {
+                onIdleSync {
+                    onView(withId(R.id.ivSplash)).check(matches(isCompletelyDisplayed()))
 
-        activityRule.scenario.onActivity {
-            it.setSplashTitles("Example", "Cloud")
-        }
+                    EspressoIdlingResource.increment()
+                    it.setSplashTitles("Example", "Cloud")
+                    EspressoIdlingResource.decrement()
 
-        val onePercentArea = ViewMatchers.isDisplayingAtLeast(1)
-        onView(withId(R.id.splashScreenBold)).check(matches(onePercentArea))
-        onView(withId(R.id.splashScreenNormal)).check(matches(onePercentArea))
+                    val onePercentArea = ViewMatchers.isDisplayingAtLeast(1)
+                    onView(withId(R.id.splashScreenBold)).check(matches(onePercentArea))
+                    onView(withId(R.id.splashScreenNormal)).check(matches(onePercentArea))
+                }
+            }
+        }
     }
 }