From 58d104a1008ee1cc426ea84a1cd582491e400424 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Mon, 19 Aug 2024 11:25:26 +0200 Subject: [PATCH] Fix Signed-off-by: alperozturk --- .../nextcloud/client/ActivitiesActivityIT.kt | 165 ++++++++++-------- 1 file changed, 97 insertions(+), 68 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt b/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt index f11e03739c..8c3157cb49 100644 --- a/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt @@ -8,11 +8,15 @@ package com.nextcloud.client import android.view.View -import androidx.test.espresso.Espresso +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.contrib.DrawerActions -import androidx.test.espresso.intent.rule.IntentsTestRule +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.isRoot import androidx.test.espresso.matcher.ViewMatchers.withId -import com.facebook.testing.screenshot.Screenshot import com.owncloud.android.AbstractIT import com.owncloud.android.R import com.owncloud.android.lib.resources.activities.model.Activity @@ -21,65 +25,88 @@ import com.owncloud.android.lib.resources.activities.model.RichObject import com.owncloud.android.lib.resources.activities.models.PreviewObject import com.owncloud.android.lib.resources.status.OCCapability import com.owncloud.android.ui.activities.ActivitiesActivity +import com.owncloud.android.utils.EspressoIdlingResource import com.owncloud.android.utils.ScreenshotTest -import org.junit.Rule +import org.junit.After +import org.junit.Before import org.junit.Test import java.util.GregorianCalendar class ActivitiesActivityIT : AbstractIT() { - @get:Rule - var activityRule = IntentsTestRule(ActivitiesActivity::class.java, true, false) + private val testClassName = "com.nextcloud.client.ActivitiesActivityIT" + + @Before + fun registerIdlingResource() { + IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource) + } + + @After + fun unregisterIdlingResource() { + IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource) + } @Test + @UiThread @ScreenshotTest fun openDrawer() { - val sut = activityRule.launchActivity(null) - shortSleep() - Espresso.onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()) - sut.runOnUiThread { - sut.dismissSnackbar() - } - shortSleep() - waitForIdleSync() - screenshot(sut) - } - - @Test - @ScreenshotTest - fun loading() { - val sut: ActivitiesActivity = activityRule.launchActivity(null).apply { - runOnUiThread { - dismissSnackbar() - binding.emptyList.root.visibility = View.GONE - binding.swipeContainingList.visibility = View.GONE - binding.loadingContent.visibility = View.VISIBLE + launchActivity().use { scenario -> + scenario.onActivity { sut -> + onIdleSync { + EspressoIdlingResource.increment() + onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()) + sut.dismissSnackbar() + EspressoIdlingResource.decrement() + val screenShotName = createName(testClassName + "_" + "openDrawer", "") + onView(isRoot()).check(matches(isDisplayed())) + screenshotViaName(sut, screenShotName) + } } } - - shortSleep() - waitForIdleSync() - - Screenshot.snap(sut.binding.loadingContent).record() } @Test + @UiThread + @ScreenshotTest + fun loading() { + launchActivity().use { scenario -> + scenario.onActivity { sut -> + onIdleSync { + EspressoIdlingResource.increment() + sut.dismissSnackbar() + sut.binding.emptyList.root.visibility = View.GONE + sut.binding.swipeContainingList.visibility = View.GONE + sut.binding.loadingContent.visibility = View.VISIBLE + EspressoIdlingResource.decrement() + val screenShotName = createName(testClassName + "_" + "loading", "") + onView(isRoot()).check(matches(isDisplayed())) + screenshotViaName(sut, screenShotName) + } + } + } + } + + @Test + @UiThread @ScreenshotTest fun empty() { - val sut: ActivitiesActivity = activityRule.launchActivity(null) - - sut.runOnUiThread { - sut.showActivities(mutableListOf(), nextcloudClient, -1) - sut.setProgressIndicatorState(false) - sut.dismissSnackbar() + launchActivity().use { scenario -> + scenario.onActivity { sut -> + onIdleSync { + EspressoIdlingResource.increment() + sut.showActivities(mutableListOf(), nextcloudClient, -1) + sut.setProgressIndicatorState(false) + sut.dismissSnackbar() + EspressoIdlingResource.decrement() + val screenShotName = createName(testClassName + "_" + "empty", "") + onView(isRoot()).check(matches(isDisplayed())) + screenshotViaName(sut, screenShotName) + } + } } - - shortSleep() - waitForIdleSync() - - screenshot(sut) } @Test + @UiThread @ScreenshotTest @SuppressWarnings("MagicNumber") fun showActivities() { @@ -87,8 +114,6 @@ class ActivitiesActivityIT : AbstractIT() { capability.versionMayor = 20 fileDataStorageManager.saveCapabilities(capability) - val sut: ActivitiesActivity = activityRule.launchActivity(null) - val date = GregorianCalendar() date.set(2005, 4, 17, 10, 35, 30) // random date @@ -136,7 +161,7 @@ class ActivitiesActivityIT : AbstractIT() { "calendar", "35", "", - ArrayList(), + ArrayList(), RichElement() ), Activity( @@ -159,35 +184,39 @@ class ActivitiesActivityIT : AbstractIT() { ) ) - sut.runOnUiThread { - sut.showActivities(activities as List?, nextcloudClient, -1) - sut.setProgressIndicatorState(false) - sut.dismissSnackbar() + launchActivity().use { scenario -> + scenario.onActivity { sut -> + onIdleSync { + EspressoIdlingResource.increment() + sut.showActivities(activities as List?, nextcloudClient, -1) + sut.setProgressIndicatorState(false) + sut.dismissSnackbar() + EspressoIdlingResource.decrement() + val screenShotName = createName(testClassName + "_" + "showActivities", "") + onView(isRoot()).check(matches(isDisplayed())) + screenshotViaName(sut, screenShotName) + } + } } - - longSleep() - waitForIdleSync() - - screenshot(sut) } @Test + @UiThread @ScreenshotTest fun error() { - val sut: ActivitiesActivity = activityRule.launchActivity(null) - - shortSleep() - - sut.runOnUiThread { - sut.showEmptyContent("Error", "Error! Please try again later!") - sut.setProgressIndicatorState(false) - sut.dismissSnackbar() + launchActivity().use { scenario -> + scenario.onActivity { sut -> + onIdleSync { + EspressoIdlingResource.increment() + sut.showEmptyContent("Error", "Error! Please try again later!") + sut.setProgressIndicatorState(false) + sut.dismissSnackbar() + EspressoIdlingResource.decrement() + val screenShotName = createName(testClassName + "_" + "error", "") + onView(isRoot()).check(matches(isDisplayed())) + screenshotViaName(sut, screenShotName) + } + } } - - shortSleep() - shortSleep() - waitForIdleSync() - - screenshot(sut) } }