diff --git a/app/src/androidTest/java/com/nmc/android/ui/LauncherActivityIT.kt b/app/src/androidTest/java/com/nmc/android/ui/LauncherActivityIT.kt index 6dad10f279..7a24cb27c8 100644 --- a/app/src/androidTest/java/com/nmc/android/ui/LauncherActivityIT.kt +++ b/app/src/androidTest/java/com/nmc/android/ui/LauncherActivityIT.kt @@ -6,47 +6,68 @@ */ 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) + } - @Test - 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))) + @After + fun unregisterIdlingResource() { + IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource) } @Test - fun testSplashScreenWithTitlesShouldShowTitles() { - waitForIdleSync() - onView(withId(R.id.ivSplash)).check(matches(isCompletelyDisplayed())) - - activityRule.scenario.onActivity { - it.setSplashTitles("Example", "Cloud") + @UiThread + fun testSplashScreenWithEmptyTitlesShouldHideTitles() { + launchActivity().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))) + } + } } + } - val onePercentArea = ViewMatchers.isDisplayingAtLeast(1) - onView(withId(R.id.splashScreenBold)).check(matches(onePercentArea)) - onView(withId(R.id.splashScreenNormal)).check(matches(onePercentArea)) + @Test + @UiThread + fun testSplashScreenWithTitlesShouldShowTitles() { + launchActivity().use { scenario -> + scenario.onActivity { + onIdleSync { + onView(withId(R.id.ivSplash)).check(matches(isCompletelyDisplayed())) + + 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)) + } + } + } } }