From d8f35c142122ec11350672d3c0e01edca2becf20 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 24 Feb 2026 10:46:56 +0100 Subject: [PATCH 01/14] Screenshot tests were failing, JUnit downgrade needed Signed-off-by: tobiasKaminsky --- app/build.gradle.kts | 1 + gradle/libs.versions.toml | 4 ++-- gradle/verification-metadata.xml | 23 +++++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8fd56c295fd5..75660a764a5b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -349,6 +349,7 @@ dependencies { implementation(libs.compose.activity) implementation(libs.compose.ui.tooling.preview) implementation(libs.foundation) + implementation(libs.espresso.accessibility) debugImplementation(libs.compose.ui.tooling) // endregion diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0feaf6716cbd..472b5a48e537 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ androidLibraryVersion ="5101b54559567bb38bf8a6e98e984b8e1285df4d" androidPluginVersion = "9.0.1" androidsvgVersion = "1.4" androidxMediaVersion = "1.5.1" -androidxTestVersion = "1.7.0" +androidxTestVersion = "1.6.0" annotationVersion = "1.9.1" annotationsVersion = "3.0.1u2" appCompatVersion = "1.7.1" @@ -46,7 +46,7 @@ jackrabbitWebdavVersion = "2.13.5" jacoco = "0.8.14" jsonVersion = "20250517" junit = "4.13.2" -junitVersion = "1.3.0" +junitVersion = "1.1.0" juniversalchardetVersion = "2.5.0" kotlin = "2.3.10" kotlinxSerializationJson = "1.10.0" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index e4858fa5155c..f7f46d06efd4 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -3373,6 +3373,11 @@ + + + + + @@ -10972,6 +10977,11 @@ + + + + + @@ -11044,6 +11054,11 @@ + + + + + @@ -11363,6 +11378,14 @@ + + + + + + + + From 1a16031631c3c84a9f56eddb318e512919aa88fb Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 24 Feb 2026 15:52:42 +0100 Subject: [PATCH 02/14] wip Signed-off-by: tobiasKaminsky --- .../java/com/owncloud/android/AbstractIT.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java index ac58ccc05fc9..da69bddc49cf 100644 --- a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -6,7 +6,6 @@ */ package com.owncloud.android; -import android.Manifest; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; @@ -35,7 +34,6 @@ import com.nextcloud.client.preferences.AppPreferencesImpl; import com.nextcloud.client.preferences.DarkMode; import com.nextcloud.common.NextcloudClient; -import com.nextcloud.test.GrantStoragePermissionRule; import com.nextcloud.test.RandomStringGenerator; import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.ArbitraryDataProviderImpl; @@ -60,8 +58,6 @@ import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.rules.TestRule; import java.io.File; import java.io.FileWriter; @@ -79,7 +75,6 @@ import androidx.test.espresso.contrib.DrawerActions; import androidx.test.espresso.intent.rule.IntentsTestRule; import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.rule.GrantPermissionRule; import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry; import androidx.test.runner.lifecycle.Stage; @@ -94,11 +89,11 @@ * Common base for all integration tests. */ public abstract class AbstractIT { - @Rule - public final TestRule storagePermissionRule = GrantStoragePermissionRule.grant(); +// @Rule +// public final TestRule storagePermissionRule = GrantStoragePermissionRule.grant(); - @Rule - public GrantPermissionRule notificationsPermissionRule = GrantPermissionRule.grant(Manifest.permission.POST_NOTIFICATIONS); +// @Rule +// public GrantPermissionRule notificationsPermissionRule = GrantPermissionRule.grant(Manifest.permission.POST_NOTIFICATIONS); protected static OwnCloudClient client; protected static NextcloudClient nextcloudClient; From 16ef6026249b715de1253179336cdbf456818c2b Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 25 Feb 2026 08:30:00 +0100 Subject: [PATCH 03/14] use API34 Signed-off-by: tobiasKaminsky --- .github/workflows/screenShotTest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/screenShotTest.yml b/.github/workflows/screenShotTest.yml index 0ca111079618..3860b3754b77 100644 --- a/.github/workflows/screenShotTest.yml +++ b/.github/workflows/screenShotTest.yml @@ -23,7 +23,7 @@ jobs: matrix: scheme: [ Light ] color: [ blue ] - api-level: [ 28 ] + api-level: [ 34 ] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 From 9d7cc9a69848aba44d8019d048eb77e2b41acbff Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 25 Feb 2026 08:42:50 +0100 Subject: [PATCH 04/14] use API33 Signed-off-by: tobiasKaminsky --- .github/workflows/screenShotTest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/screenShotTest.yml b/.github/workflows/screenShotTest.yml index 3860b3754b77..98422a63ce95 100644 --- a/.github/workflows/screenShotTest.yml +++ b/.github/workflows/screenShotTest.yml @@ -23,7 +23,7 @@ jobs: matrix: scheme: [ Light ] color: [ blue ] - api-level: [ 34 ] + api-level: [ 33 ] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 From 671d21a2ed25ac40c8c6d34d87fa1672e97ad37f Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 25 Feb 2026 09:10:34 +0100 Subject: [PATCH 05/14] use API29 Signed-off-by: tobiasKaminsky --- .github/workflows/screenShotTest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/screenShotTest.yml b/.github/workflows/screenShotTest.yml index 98422a63ce95..2d1816bd9071 100644 --- a/.github/workflows/screenShotTest.yml +++ b/.github/workflows/screenShotTest.yml @@ -23,7 +23,7 @@ jobs: matrix: scheme: [ Light ] color: [ blue ] - api-level: [ 33 ] + api-level: [ 29 ] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 From ccf816fab3a72fc41b8098f18220f22d9256d580 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 25 Feb 2026 10:26:59 +0100 Subject: [PATCH 06/14] wip: test disabling granting permission Signed-off-by: tobiasKaminsky --- .../client/FileDisplayActivityScreenshotIT.kt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt b/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt index d727d1acd9aa..169b0c547635 100644 --- a/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt @@ -8,7 +8,6 @@ */ package com.nextcloud.client -import android.Manifest import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches @@ -17,7 +16,6 @@ import androidx.test.espresso.contrib.NavigationViewActions 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 @@ -25,17 +23,16 @@ import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.fragment.EmptyListState import com.owncloud.android.utils.ScreenshotTest import org.junit.Assert -import org.junit.Rule import org.junit.Test class FileDisplayActivityScreenshotIT : AbstractIT() { private val testClassName = "com.nextcloud.client.FileDisplayActivityScreenshotIT" - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS - ) + // @get:Rule + // val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( + // Manifest.permission.WRITE_EXTERNAL_STORAGE, + // Manifest.permission.POST_NOTIFICATIONS + // ) companion object { private const val TAG = "FileDisplayActivityScreenshotIT" From 619e0d96f0ac5245058dd76248d4585be896a60d Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 25 Feb 2026 13:20:08 +0100 Subject: [PATCH 07/14] wip Signed-off-by: tobiasKaminsky --- .../com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt | 1 - .../com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt | 1 - .../java/com/owncloud/android/AbstractIT.java | 7 +++++-- .../java/com/owncloud/android/ScreenshotsIT.kt | 10 ---------- .../owncloud/android/ui/activity/DrawerActivityIT.kt | 1 - .../com/owncloud/android/ui/dialog/DialogFragmentIT.kt | 1 - .../dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt | 1 - .../android/ui/preview/PreviewTextFileFragmentTest.kt | 1 - 8 files changed, 5 insertions(+), 18 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt index e0840fd93dbb..0a125a922cce 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt @@ -28,7 +28,6 @@ class SetOnlineStatusBottomSheetIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS ) diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt index dbb424284897..4929391d3c0e 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt @@ -27,7 +27,6 @@ import org.junit.Test class SetStatusMessageBottomSheetIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS ) diff --git a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java index da69bddc49cf..3623222826a0 100644 --- a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -34,6 +34,7 @@ import com.nextcloud.client.preferences.AppPreferencesImpl; import com.nextcloud.client.preferences.DarkMode; import com.nextcloud.common.NextcloudClient; +import com.nextcloud.test.GrantStoragePermissionRule; import com.nextcloud.test.RandomStringGenerator; import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.ArbitraryDataProviderImpl; @@ -58,6 +59,8 @@ import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.rules.TestRule; import java.io.File; import java.io.FileWriter; @@ -89,8 +92,8 @@ * Common base for all integration tests. */ public abstract class AbstractIT { -// @Rule -// public final TestRule storagePermissionRule = GrantStoragePermissionRule.grant(); + @Rule + public final TestRule storagePermissionRule = GrantStoragePermissionRule.grant(); // @Rule // public GrantPermissionRule notificationsPermissionRule = GrantPermissionRule.grant(Manifest.permission.POST_NOTIFICATIONS); diff --git a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt index 100395a13fa9..f706c670c830 100644 --- a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt @@ -6,7 +6,6 @@ */ package com.owncloud.android -import android.Manifest import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso import androidx.test.espresso.Espresso.onView @@ -18,7 +17,6 @@ import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.isRoot import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText -import androidx.test.rule.GrantPermissionRule import com.owncloud.android.datamodel.OCFile import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.activity.SettingsActivity @@ -27,20 +25,12 @@ import com.owncloud.android.utils.ScreenshotTest import org.junit.Assert.assertTrue import org.junit.BeforeClass import org.junit.ClassRule -import org.junit.Rule import org.junit.Test import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy import tools.fastlane.screengrab.locale.LocaleTestRule class ScreenshotsIT : AbstractIT() { - - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS - ) - @Test @ScreenshotTest fun gridViewScreenshot() { diff --git a/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt index 93caa0dba447..d3639df5d1a5 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt @@ -40,7 +40,6 @@ class DrawerActivityIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS ) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt index ee62b6ffe416..d79d31ce3953 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt @@ -84,7 +84,6 @@ class DialogFragmentIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS ) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt b/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt index f83e116a6da5..84d70be84290 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt @@ -26,7 +26,6 @@ class SyncFileNotEnoughSpaceDialogFragmentTest : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS ) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt b/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt index 93ac4bef85af..0febfb57e20e 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt @@ -27,7 +27,6 @@ class PreviewTextFileFragmentTest : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.POST_NOTIFICATIONS ) From 3a038a3b6ef8c3ae74751b3d45bf977be901148d Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 3 Mar 2026 10:07:13 +0100 Subject: [PATCH 08/14] wip Signed-off-by: tobiasKaminsky --- .../androidTest/java/com/owncloud/android/AbstractIT.java | 1 + .../java/com/owncloud/android/ScreenshotsIT.kt | 2 +- .../com/owncloud/android/ui/dialog/DialogFragmentIT.kt | 8 -------- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java index 3623222826a0..32f3fcc38092 100644 --- a/app/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/app/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -95,6 +95,7 @@ public abstract class AbstractIT { @Rule public final TestRule storagePermissionRule = GrantStoragePermissionRule.grant(); +// Not needed for API29, might needed for newer API // @Rule // public GrantPermissionRule notificationsPermissionRule = GrantPermissionRule.grant(Manifest.permission.POST_NOTIFICATIONS); diff --git a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt index f706c670c830..6b7d24426f12 100644 --- a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt @@ -55,7 +55,7 @@ class ScreenshotsIT : AbstractIT() { OCFile(path).apply { storageManager.saveFile(this) } - onView(withId(R.id.list_root)).perform(click()) + // onView(withId(R.id.list_root)).perform(click()) onView(isRoot()).check(matches(isDisplayed())) Screengrab.screenshot("02_listView") diff --git a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt index d79d31ce3953..2d17d37b87fe 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt @@ -8,7 +8,6 @@ */ package com.owncloud.android.ui.dialog -import android.Manifest import android.accounts.Account import android.accounts.AccountManager import android.app.Dialog @@ -27,7 +26,6 @@ import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.isRoot -import androidx.test.rule.GrantPermissionRule import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -72,7 +70,6 @@ import com.owncloud.android.utils.theme.CapabilityUtils import com.owncloud.android.utils.theme.ViewThemeUtils import io.mockk.mockk import org.junit.After -import org.junit.Rule import org.junit.Test import java.net.URI import java.util.function.Supplier @@ -82,11 +79,6 @@ class DialogFragmentIT : AbstractIT() { private val testClassName = "com.owncloud.android.ui.dialog.DialogFragmentIT" private val serverUrl = "https://nextcloud.localhost" - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.POST_NOTIFICATIONS - ) - @After fun quitLooperIfNeeded() { Looper.myLooper()?.quitSafely() From b8a4f521af740f80a2828f7a08e0f7cf5248ad47 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 3 Mar 2026 10:39:02 +0100 Subject: [PATCH 09/14] wip Signed-off-by: tobiasKaminsky --- .../android/ui/dialog/DialogFragmentIT.kt | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt index 2d17d37b87fe..7f1db226a0a6 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt @@ -95,7 +95,7 @@ class DialogFragmentIT : AbstractIT() { OCFile("/Test/"), OCFile("/") ).run { - showDialog(this) + showDialog(this, "testRenameFileDialog") } } @@ -103,7 +103,7 @@ class DialogFragmentIT : AbstractIT() { @ScreenshotTest fun testLoadingDialog() { LoadingDialog.newInstance("Wait…").run { - showDialog(this) + showDialog(this, "testLoadingDialog") } } @@ -119,7 +119,7 @@ class DialogFragmentIT : AbstractIT() { -1, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithOneAction") } } @@ -135,7 +135,7 @@ class DialogFragmentIT : AbstractIT() { -1, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithTwoAction") } } @@ -151,7 +151,7 @@ class DialogFragmentIT : AbstractIT() { R.string.common_confirm, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithThreeAction") } } @@ -168,7 +168,7 @@ class DialogFragmentIT : AbstractIT() { R.string.common_confirm, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithThreeActionRTL") resetLocale() } } @@ -177,7 +177,7 @@ class DialogFragmentIT : AbstractIT() { @ScreenshotTest fun testRemoveFileDialog() { RemoveFilesDialogFragment.newInstance(OCFile("/Test.md")).run { - showDialog(this) + showDialog(this, "testRemoveFileDialog") } } @@ -190,14 +190,14 @@ class DialogFragmentIT : AbstractIT() { } val dialog: RemoveFilesDialogFragment = RemoveFilesDialogFragment.newInstance(toDelete) - showDialog(dialog) + showDialog(dialog, "testRemoveFilesDialog") } @Test @ScreenshotTest fun testRemoveFolderDialog() { val dialog = RemoveFilesDialogFragment.newInstance(OCFile("/Folder/")) - showDialog(dialog) + showDialog(dialog, "testRemoveFolderDialog") } @Test @@ -208,7 +208,7 @@ class DialogFragmentIT : AbstractIT() { toDelete.add(OCFile("/Documents/")) val dialog: RemoveFilesDialogFragment = RemoveFilesDialogFragment.newInstance(toDelete) - showDialog(dialog) + showDialog(dialog, "testRemoveFoldersDialog") } @Test @@ -218,7 +218,7 @@ class DialogFragmentIT : AbstractIT() { Looper.prepare() } val sut = CreateFolderDialogFragment.newInstance(OCFile("/")) - showDialog(sut) + showDialog(sut, "testNewFolderDialog") } @Test @@ -228,7 +228,7 @@ class DialogFragmentIT : AbstractIT() { Looper.prepare() } val sut = SharePasswordDialogFragment.newInstance(OCFile("/"), createShare = true, askForPassword = false) - showDialog(sut) + showDialog(sut, "testEnforcedPasswordDialog") } @Test @@ -237,8 +237,8 @@ class DialogFragmentIT : AbstractIT() { if (Looper.myLooper() == null) { Looper.prepare() } - val sut = SharePasswordDialogFragment.newInstance(OCFile("/"), createShare = true, askForPassword = true) - showDialog(sut) + val sut = SharePasswordDialogFragment.newInstance(OCFile("/"), true, true) + showDialog(sut, "testOptionalPasswordDialog") } @Test @@ -624,7 +624,7 @@ class DialogFragmentIT : AbstractIT() { val handler = mockk(relaxed = true) SslUntrustedCertDialog.newInstanceForEmptySslError(sslError, handler).run { - showDialog(this) + showDialog(this, "testSslUntrustedCertDialog") } } @@ -636,7 +636,7 @@ class DialogFragmentIT : AbstractIT() { } val dialog = StoragePermissionDialogFragment() - showDialog(dialog) + showDialog(dialog, "testStoragePermissionDialog") } @Test @@ -651,11 +651,11 @@ class DialogFragmentIT : AbstractIT() { } newInstance(ocFile, false).run { - showDialog(this) + showDialog(this, "testFileActionsBottomSheet") } } - private fun showDialog(dialog: DialogFragment) { + private fun showDialog(dialog: DialogFragment, testName: String) { launchActivity().use { scenario -> scenario.onActivity { sut -> dialog.show(sut.supportFragmentManager, null) @@ -668,7 +668,7 @@ class DialogFragmentIT : AbstractIT() { if (viewGroup != null) { hideCursors(viewGroup) } - screenshot(dialogInstance.window?.decorView) + screenshotViaName(dialogInstance.window?.decorView, "${testClassName}_$testName") } onView(isRoot()).check(matches(isDisplayed())) From b18270a0cf2dca70697401e1b54ba0bb3c6c78c3 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 3 Mar 2026 10:39:02 +0100 Subject: [PATCH 10/14] wip Signed-off-by: tobiasKaminsky --- .../android/ui/dialog/DialogFragmentIT.kt | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt index 2d17d37b87fe..7f1db226a0a6 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt @@ -95,7 +95,7 @@ class DialogFragmentIT : AbstractIT() { OCFile("/Test/"), OCFile("/") ).run { - showDialog(this) + showDialog(this, "testRenameFileDialog") } } @@ -103,7 +103,7 @@ class DialogFragmentIT : AbstractIT() { @ScreenshotTest fun testLoadingDialog() { LoadingDialog.newInstance("Wait…").run { - showDialog(this) + showDialog(this, "testLoadingDialog") } } @@ -119,7 +119,7 @@ class DialogFragmentIT : AbstractIT() { -1, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithOneAction") } } @@ -135,7 +135,7 @@ class DialogFragmentIT : AbstractIT() { -1, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithTwoAction") } } @@ -151,7 +151,7 @@ class DialogFragmentIT : AbstractIT() { R.string.common_confirm, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithThreeAction") } } @@ -168,7 +168,7 @@ class DialogFragmentIT : AbstractIT() { R.string.common_confirm, -1 ).run { - showDialog(this) + showDialog(this, "testConfirmationDialogWithThreeActionRTL") resetLocale() } } @@ -177,7 +177,7 @@ class DialogFragmentIT : AbstractIT() { @ScreenshotTest fun testRemoveFileDialog() { RemoveFilesDialogFragment.newInstance(OCFile("/Test.md")).run { - showDialog(this) + showDialog(this, "testRemoveFileDialog") } } @@ -190,14 +190,14 @@ class DialogFragmentIT : AbstractIT() { } val dialog: RemoveFilesDialogFragment = RemoveFilesDialogFragment.newInstance(toDelete) - showDialog(dialog) + showDialog(dialog, "testRemoveFilesDialog") } @Test @ScreenshotTest fun testRemoveFolderDialog() { val dialog = RemoveFilesDialogFragment.newInstance(OCFile("/Folder/")) - showDialog(dialog) + showDialog(dialog, "testRemoveFolderDialog") } @Test @@ -208,7 +208,7 @@ class DialogFragmentIT : AbstractIT() { toDelete.add(OCFile("/Documents/")) val dialog: RemoveFilesDialogFragment = RemoveFilesDialogFragment.newInstance(toDelete) - showDialog(dialog) + showDialog(dialog, "testRemoveFoldersDialog") } @Test @@ -218,7 +218,7 @@ class DialogFragmentIT : AbstractIT() { Looper.prepare() } val sut = CreateFolderDialogFragment.newInstance(OCFile("/")) - showDialog(sut) + showDialog(sut, "testNewFolderDialog") } @Test @@ -228,7 +228,7 @@ class DialogFragmentIT : AbstractIT() { Looper.prepare() } val sut = SharePasswordDialogFragment.newInstance(OCFile("/"), createShare = true, askForPassword = false) - showDialog(sut) + showDialog(sut, "testEnforcedPasswordDialog") } @Test @@ -237,8 +237,8 @@ class DialogFragmentIT : AbstractIT() { if (Looper.myLooper() == null) { Looper.prepare() } - val sut = SharePasswordDialogFragment.newInstance(OCFile("/"), createShare = true, askForPassword = true) - showDialog(sut) + val sut = SharePasswordDialogFragment.newInstance(OCFile("/"), true, true) + showDialog(sut, "testOptionalPasswordDialog") } @Test @@ -624,7 +624,7 @@ class DialogFragmentIT : AbstractIT() { val handler = mockk(relaxed = true) SslUntrustedCertDialog.newInstanceForEmptySslError(sslError, handler).run { - showDialog(this) + showDialog(this, "testSslUntrustedCertDialog") } } @@ -636,7 +636,7 @@ class DialogFragmentIT : AbstractIT() { } val dialog = StoragePermissionDialogFragment() - showDialog(dialog) + showDialog(dialog, "testStoragePermissionDialog") } @Test @@ -651,11 +651,11 @@ class DialogFragmentIT : AbstractIT() { } newInstance(ocFile, false).run { - showDialog(this) + showDialog(this, "testFileActionsBottomSheet") } } - private fun showDialog(dialog: DialogFragment) { + private fun showDialog(dialog: DialogFragment, testName: String) { launchActivity().use { scenario -> scenario.onActivity { sut -> dialog.show(sut.supportFragmentManager, null) @@ -668,7 +668,7 @@ class DialogFragmentIT : AbstractIT() { if (viewGroup != null) { hideCursors(viewGroup) } - screenshot(dialogInstance.window?.decorView) + screenshotViaName(dialogInstance.window?.decorView, "${testClassName}_$testName") } onView(isRoot()).check(matches(isDisplayed())) From 977233191d3bdae53350df5390b35e70317a77a3 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 3 Mar 2026 12:25:53 +0100 Subject: [PATCH 11/14] wip Signed-off-by: tobiasKaminsky --- .../java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt | 8 -------- .../com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt | 8 -------- .../com/owncloud/android/ui/activity/DrawerActivityIT.kt | 7 ------- .../ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt | 8 -------- .../android/ui/preview/PreviewTextFileFragmentTest.kt | 8 -------- 5 files changed, 39 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt index 0a125a922cce..3c7292340f21 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt @@ -8,29 +8,21 @@ */ package com.nextcloud.ui -import android.Manifest import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.isRoot import androidx.test.espresso.matcher.ViewMatchers.withId -import androidx.test.rule.GrantPermissionRule import com.owncloud.android.AbstractIT import com.owncloud.android.R import com.owncloud.android.lib.resources.users.Status import com.owncloud.android.lib.resources.users.StatusType import com.owncloud.android.ui.activity.FileDisplayActivity -import org.junit.Rule import org.junit.Test class SetOnlineStatusBottomSheetIT : AbstractIT() { - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.POST_NOTIFICATIONS - ) - @Test fun open() { launchActivity().use { scenario -> diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt index 4929391d3c0e..37dd4adf3c90 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt @@ -8,28 +8,20 @@ */ package com.nextcloud.ui -import android.Manifest import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches 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.lib.resources.users.ClearAt import com.owncloud.android.lib.resources.users.PredefinedStatus import com.owncloud.android.lib.resources.users.Status import com.owncloud.android.lib.resources.users.StatusType import com.owncloud.android.ui.activity.FileDisplayActivity -import org.junit.Rule import org.junit.Test class SetStatusMessageBottomSheetIT : AbstractIT() { - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.POST_NOTIFICATIONS - ) - @Test fun open() { launchActivity().use { scenario -> diff --git a/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt index d3639df5d1a5..6eab228be93d 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.kt @@ -8,7 +8,6 @@ */ package com.owncloud.android.ui.activity -import android.Manifest import android.accounts.Account import android.accounts.AccountManager import android.net.Uri @@ -17,7 +16,6 @@ import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions import androidx.test.espresso.matcher.ViewMatchers import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.GrantPermissionRule import com.nextcloud.client.account.User import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.account.UserAccountManagerImpl @@ -38,11 +36,6 @@ class DrawerActivityIT : AbstractIT() { @JvmField val retryTestRule = RetryTestRule() - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.POST_NOTIFICATIONS - ) - @Test fun switchAccountViaAccountList() { launchActivity().use { scenario -> diff --git a/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt b/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt index 84d70be84290..495bec37b3c8 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.kt @@ -6,29 +6,21 @@ */ package com.owncloud.android.ui.dialog -import android.Manifest import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches 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.datamodel.OCFile import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragment.Companion.newInstance import com.owncloud.android.utils.ScreenshotTest -import org.junit.Rule import org.junit.Test class SyncFileNotEnoughSpaceDialogFragmentTest : AbstractIT() { private val testClassName = "com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragmentTest" - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.POST_NOTIFICATIONS - ) - @Test @ScreenshotTest fun showNotEnoughSpaceDialogForFolder() { diff --git a/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt b/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt index 0febfb57e20e..0ed47bdef0ed 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt @@ -6,30 +6,22 @@ */ package com.owncloud.android.ui.preview -import android.Manifest import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches 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.datamodel.OCFile import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.utils.MimeTypeUtil import com.owncloud.android.utils.ScreenshotTest -import org.junit.Rule import org.junit.Test import java.io.IOException class PreviewTextFileFragmentTest : AbstractIT() { private val testClassName = "com.owncloud.android.ui.preview.PreviewTextFileFragmentTest" - @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.POST_NOTIFICATIONS - ) - @Test @ScreenshotTest @Throws(IOException::class) From f55ccbebd62d831baf98655035b553774b03bff8 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 3 Mar 2026 13:38:58 +0100 Subject: [PATCH 12/14] wip Signed-off-by: tobiasKaminsky --- .../FileDetailFragmentStaticServerIT.kt | 23 ++++++++++++++----- .../fragment/FileDetailSharingFragmentIT.kt | 12 +++++----- .../OCFileListFragmentStaticServerIT.kt | 6 +++++ 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt index da634d4d62c6..f7696b344b89 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt @@ -79,11 +79,10 @@ class FileDetailFragmentStaticServerIT : AbstractIT() { var activity: TestActivity? = null scenario.onActivity { sut -> activity = sut - val fragment = ImageDetailFragment.newInstance(oCFile, user).apply { - hideMap() - } + val fragment = ImageDetailFragment.newInstance(oCFile, user) sut.addFragment(fragment) sut.supportFragmentManager.executePendingTransactions() + fragment.hideMap() } val screenShotName = createName(testClassName + "_" + "showFileDetailDetailsFragment", "") @@ -155,7 +154,11 @@ class FileDetailFragmentStaticServerIT : AbstractIT() { val fragment = FileDetailFragment.newInstance(oCFile, user, 0) sut.addFragment(fragment) sut.supportFragmentManager.executePendingTransactions() - fragment.fileDetailActivitiesFragment.populateList(activities as List?, true) + } + + scenario.onActivity { sut -> + (sut.fragment as FileDetailFragment) + .fileDetailActivitiesFragment.populateList(activities as List?, true) } val screenShotName = createName(testClassName + "_" + "showDetailsActivities", "") @@ -171,10 +174,14 @@ class FileDetailFragmentStaticServerIT : AbstractIT() { var activity: TestActivity? = null scenario.onActivity { sut -> activity = sut - val fragment = FileDetailFragment.newInstance(oCFile, user, 0) + val fragment = FileDetailFragment.newInstance(oCFile, user, 1) sut.addFragment(fragment) activity.supportFragmentManager.executePendingTransactions() - fragment.fileDetailActivitiesFragment.populateList(emptyList(), true) + } + + scenario.onActivity { sut -> + (sut.fragment as FileDetailFragment) + .fileDetailActivitiesFragment.populateList(emptyList(), true) } val screenShotName = createName(testClassName + "_" + "showDetailsActivitiesNone", "") @@ -193,6 +200,10 @@ class FileDetailFragmentStaticServerIT : AbstractIT() { val fragment = FileDetailFragment.newInstance(oCFile, user, 0) sut.addFragment(fragment) sut.supportFragmentManager.executePendingTransactions() + } + + scenario.onActivity { sut -> + val fragment = sut.fragment as FileDetailFragment fragment.fileDetailActivitiesFragment.disableLoadingActivities() fragment.fileDetailActivitiesFragment.setErrorContent( targetContext.resources.getString(R.string.file_detail_activity_error) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailSharingFragmentIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailSharingFragmentIT.kt index 93fe006ffe70..eb86d192fa1a 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailSharingFragmentIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailSharingFragmentIT.kt @@ -83,7 +83,7 @@ class FileDetailSharingFragmentIT : AbstractIT() { @Test @ScreenshotTest fun listSharesFileNone() { - show(file) + show(file, "listSharesFileNone") } @Test @@ -91,7 +91,7 @@ class FileDetailSharingFragmentIT : AbstractIT() { fun listSharesFileResharingNotAllowed() { file.permissions = "" - show(file) + show(file, "listSharesFileResharingNotAllowed") } @Test @@ -139,7 +139,7 @@ class FileDetailSharingFragmentIT : AbstractIT() { } } - show(file) + show(file, "listSharesDownloadLimit") } } @@ -256,11 +256,11 @@ class FileDetailSharingFragmentIT : AbstractIT() { } } - show(file) + show(file, "listSharesFileAllShareTypes") } } - private fun show(file: OCFile) { + private fun show(file: OCFile, testName: String) { launchActivity().use { scenario -> var activity: TestActivity? = null scenario.onActivity { sut -> @@ -269,7 +269,7 @@ class FileDetailSharingFragmentIT : AbstractIT() { sut.addFragment(fragment) } - val screenShotName = createName(testClassName + "_" + "show", "") + val screenShotName = createName(testClassName + "_" + testName, "") onView(isRoot()).check(matches(isDisplayed())) screenshotViaName(activity, screenShotName) } diff --git a/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt index 59bf0b97f64f..f42004c51cd5 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentStaticServerIT.kt @@ -36,6 +36,7 @@ import com.owncloud.android.utils.MimeType import com.owncloud.android.utils.ScreenshotTest import org.hamcrest.Matchers.allOf import org.hamcrest.Matchers.not +import org.junit.After import org.junit.Assert import org.junit.Before import org.junit.Rule @@ -53,6 +54,11 @@ class OCFileListFragmentStaticServerIT : AbstractIT() { Intents.init() } + @After + fun releaseIntentRecording() { + Intents.release() + } + @Test @ScreenshotTest @Suppress("MagicNumber") From 6afcbc505f5aa54f8ec3d846cb47f832a9bd2c02 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 4 Mar 2026 09:18:54 +0100 Subject: [PATCH 13/14] wip Signed-off-by: tobiasKaminsky --- .../client/FileDisplayActivityScreenshotIT.kt | 2 +- .../com/nextcloud/client/SyncedFoldersActivityIT.kt | 11 ++++++++--- .../java/com/owncloud/android/ScreenshotsIT.kt | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt b/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt index 169b0c547635..840a5ae67630 100644 --- a/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt @@ -66,8 +66,8 @@ class FileDisplayActivityScreenshotIT : AbstractIT() { } } + // @ScreenshotTest disabled for now @Test - @ScreenshotTest fun showMediaThenAllFiles() { try { launchActivity().use { scenario -> diff --git a/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.kt b/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.kt index 6ae0157b6706..21b714a9d31c 100644 --- a/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.kt @@ -75,7 +75,9 @@ class SyncedFoldersActivityIT : AbstractIT() { scenario.onActivity { sut -> val fragment = newInstance(item, 0) fragment!!.show(sut.supportFragmentManager, "") - screenshot(fragment.requireDialog().window?.decorView, screenShotName) + } + scenario.onActivity { sut -> + screenshotViaName(sut, screenShotName) } } } @@ -96,9 +98,12 @@ class SyncedFoldersActivityIT : AbstractIT() { sut.showPowerCheckDialog() } - val screenShotName = createName(testClassName + "_" + "showPowerCheckDialog", "") onView(isRoot()).check(matches(isDisplayed())) - screenshot(dialog!!.window?.decorView, screenShotName) + + scenario.onActivity { sut -> + val screenShotName = createName(testClassName + "_" + "showPowerCheckDialog", "") + screenshotViaName(sut, screenShotName) + } } } } diff --git a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt index 6b7d24426f12..29499e3fe358 100644 --- a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt @@ -101,8 +101,8 @@ class ScreenshotsIT : AbstractIT() { } } + // @ScreenshotTest disabled for now @Test - @ScreenshotTest fun davdroidScreenshot() { launchActivity().use { onView(withText(R.string.prefs_category_more)).perform(scrollTo()) From e31058c14dc179b249dc3e48ef1598458e1eab63 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 5 Mar 2026 10:21:37 +0100 Subject: [PATCH 14/14] last fix Signed-off-by: tobiasKaminsky --- .../android/ui/activity/ManageAccountsActivityIT.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/com/owncloud/android/ui/activity/ManageAccountsActivityIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/activity/ManageAccountsActivityIT.kt index 2d5cbe41ab88..51687a5da5ab 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/activity/ManageAccountsActivityIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/activity/ManageAccountsActivityIT.kt @@ -56,11 +56,13 @@ class ManageAccountsActivityIT : AbstractIT() { sut.showUser(user, userInfo) } - val screenShotName = createName(testClassName + "_" + "open", "") + val screenShotName = createName(testClassName + "_" + "userInfoDetail", "") onView(isRoot()).check(matches(isDisplayed())) + val a = getCurrentActivity() + scenario.onActivity { - screenshotViaName(getCurrentActivity(), screenShotName) + screenshotViaName(a, screenShotName) } } }