Эх сурвалжийг харах

fix tests

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 7 сар өмнө
parent
commit
bf5f92bd49

+ 103 - 61
app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt

@@ -1,6 +1,7 @@
 /*
  * Nextcloud - Android Client
  *
+ * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
  * SPDX-FileCopyrightText: 2019 Tobias Kaminsky <tobias@kaminsky.me>
  * SPDX-FileCopyrightText: 2019 Nextcloud GmbH
  * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
@@ -8,28 +9,41 @@
 package com.nextcloud.client
 
 import android.Manifest
-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.contrib.NavigationViewActions
-import androidx.test.espresso.intent.rule.IntentsTestRule
 import androidx.test.espresso.matcher.ViewMatchers
+import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
+import androidx.test.espresso.matcher.ViewMatchers.isRoot
 import androidx.test.rule.GrantPermissionRule
 import com.owncloud.android.AbstractIT
 import com.owncloud.android.R
 import com.owncloud.android.lib.common.utils.Log_OC
 import com.owncloud.android.ui.activity.FileDisplayActivity
+import com.owncloud.android.utils.EspressoIdlingResource
 import com.owncloud.android.utils.ScreenshotTest
+import org.junit.After
 import org.junit.Assert
+import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 
 class FileDisplayActivityScreenshotIT : AbstractIT() {
-    @get:Rule
-    val activityRule = IntentsTestRule(
-        FileDisplayActivity::class.java,
-        true,
-        false
-    )
+    private val testClassName = "com.nextcloud.client.FileDisplayActivityScreenshotIT"
+
+    @Before
+    fun registerIdlingResource() {
+        IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
+    }
+
+    @After
+    fun unregisterIdlingResource() {
+        IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
+    }
 
     @get:Rule
     val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(
@@ -41,82 +55,110 @@ class FileDisplayActivityScreenshotIT : AbstractIT() {
     }
 
     @Test
+    @UiThread
     @ScreenshotTest
     fun open() {
         try {
-            val sut = activityRule.launchActivity(null)
-
-            shortSleep()
-            sut.runOnUiThread {
-                sut.listOfFilesFragment!!.setFabEnabled(false)
-                sut.resetScrolling(true)
-                sut.listOfFilesFragment!!.setEmptyListLoadingMessage()
-                sut.listOfFilesFragment!!.isLoading = false
+            launchActivity<FileDisplayActivity>().use { scenario ->
+                scenario.onActivity { sut ->
+                    onIdleSync {
+                        EspressoIdlingResource.increment()
+
+                        sut.run {
+                            listOfFilesFragment?.let {
+                                it.setFabEnabled(false)
+                                resetScrolling(true)
+                                it.setEmptyListLoadingMessage()
+                                it.isLoading = false
+                            }
+                        }
+
+                        EspressoIdlingResource.decrement()
+
+                        val screenShotName = createName(testClassName + "_" + "open", "")
+                        onView(isRoot()).check(matches(isDisplayed()))
+                        screenshotViaName(sut, screenShotName)
+                    }
+                }
             }
-            shortSleep()
-            waitForIdleSync()
-            screenshot(sut)
         } catch (e: SecurityException) {
             Log_OC.e(TAG, "Error caught at open $e")
         }
     }
 
     @Test
+    @UiThread
     @ScreenshotTest
     fun showMediaThenAllFiles() {
         try {
-            val fileDisplayActivity = activityRule.launchActivity(null)
-            val sut = fileDisplayActivity.listOfFilesFragment
-            Assert.assertNotNull(sut)
-            sut!!.setFabEnabled(false)
-            sut.setEmptyListLoadingMessage()
-            sut.isLoading = false
-
-            // open drawer
-            Espresso.onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
-
-            // click "all files"
-            Espresso.onView(ViewMatchers.withId(R.id.nav_view))
-                .perform(NavigationViewActions.navigateTo(R.id.nav_gallery))
-
-            // wait
-            shortSleep()
-
-            // click "all files"
-            Espresso.onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
-            Espresso.onView(ViewMatchers.withId(R.id.nav_view))
-                .perform(NavigationViewActions.navigateTo(R.id.nav_all_files))
-
-            // then compare screenshot
-            shortSleep()
-            sut.setFabEnabled(false)
-            sut.setEmptyListLoadingMessage()
-            sut.isLoading = false
-            shortSleep()
-            screenshot(fileDisplayActivity)
+            launchActivity<FileDisplayActivity>().use { scenario ->
+                scenario.onActivity { sut ->
+                    onIdleSync {
+                        EspressoIdlingResource.increment()
+                        val fragment = sut.listOfFilesFragment
+                        Assert.assertNotNull(fragment)
+                        fragment!!.setFabEnabled(false)
+                        fragment.setEmptyListLoadingMessage()
+                        fragment.isLoading = false
+                        EspressoIdlingResource.decrement()
+
+                        onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
+
+                        onView(ViewMatchers.withId(R.id.nav_view))
+                            .perform(NavigationViewActions.navigateTo(R.id.nav_gallery))
+
+                        onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
+                        onView(ViewMatchers.withId(R.id.nav_view))
+                            .perform(NavigationViewActions.navigateTo(R.id.nav_all_files))
+
+                        EspressoIdlingResource.increment()
+                        fragment.setFabEnabled(false)
+                        fragment.setEmptyListLoadingMessage()
+                        fragment.isLoading = false
+                        EspressoIdlingResource.decrement()
+
+                        val screenShotName = createName(testClassName + "_" + "showMediaThenAllFiles", "")
+                        onView(isRoot()).check(matches(isDisplayed()))
+                        screenshotViaName(sut, screenShotName)
+                    }
+                }
+            }
         } catch (e: SecurityException) {
             Log_OC.e(TAG, "Error caught at open $e")
         }
     }
 
     @Test
+    @UiThread
     @ScreenshotTest
     fun drawer() {
         try {
-            val sut = activityRule.launchActivity(null)
-            Espresso.onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
-
-            shortSleep()
-            sut.runOnUiThread {
-                sut.hideInfoBox()
-                sut.resetScrolling(true)
-                sut.listOfFilesFragment!!.setFabEnabled(false)
-                sut.listOfFilesFragment!!.setEmptyListLoadingMessage()
-                sut.listOfFilesFragment!!.isLoading = false
+            launchActivity<FileDisplayActivity>().use { scenario ->
+                scenario.onActivity { sut ->
+                    onIdleSync {
+                        onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
+
+                        EspressoIdlingResource.increment()
+
+                        sut.run {
+                            hideInfoBox()
+                            resetScrolling(true)
+
+                            listOfFilesFragment?.let {
+                                it.setFabEnabled(false)
+                                it.setEmptyListLoadingMessage()
+                                it.isLoading = false
+                            }
+                        }
+
+                        EspressoIdlingResource.decrement()
+
+                        val screenShotName = createName(testClassName + "_" + "drawer", "")
+                        onView(isRoot()).check(matches(isDisplayed()))
+                        screenshotViaName(sut, screenShotName)
+                    }
+                }
             }
-            shortSleep()
-            waitForIdleSync()
-            screenshot(sut)
         } catch (e: SecurityException) {
             Log_OC.e(TAG, "Error caught at open $e")
         }