From 2331cd8d6ad1f26af6239a6257c510f58079e0eb Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 1 Jul 2026 14:40:23 +0200 Subject: [PATCH 1/7] Fix CI tests Signed-off-by: tobiasKaminsky --- .../com/nextcloud/client/FileDisplayActivityScreenshotIT.kt | 3 +-- .../java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt | 4 +--- .../java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt | 4 +--- .../androidTest/java/com/owncloud/android/ScreenshotsIT.kt | 3 +-- .../java/com/owncloud/android/ui/activity/DrawerActivityIT.kt | 3 +-- .../java/com/owncloud/android/ui/dialog/DialogFragmentIT.kt | 3 +-- 6 files changed, 6 insertions(+), 14 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..ca13d25070e1 100644 --- a/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.kt @@ -33,8 +33,7 @@ class FileDisplayActivityScreenshotIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS + Manifest.permission.WRITE_EXTERNAL_STORAGE ) companion object { diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt index c9e07da94cfd..ac90c4be2916 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt @@ -28,9 +28,7 @@ class SetOnlineStatusBottomSheetIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS - ) + Manifest.permission.WRITE_EXTERNAL_STORAGE) @Test fun open() { diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt index b9e9feec6e2e..e2230af954a4 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt @@ -29,9 +29,7 @@ import org.junit.Test class SetStatusMessageBottomSheetIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS - ) + Manifest.permission.WRITE_EXTERNAL_STORAGE) @Test fun open() { diff --git a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt index 100395a13fa9..9bec54c4cdfa 100644 --- a/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ScreenshotsIT.kt @@ -37,8 +37,7 @@ class ScreenshotsIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS + Manifest.permission.WRITE_EXTERNAL_STORAGE ) @Test 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..3ea25ab244d6 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,8 +40,7 @@ class DrawerActivityIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS + Manifest.permission.WRITE_EXTERNAL_STORAGE ) @Test 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 5c4707f99e06..cbb1a3e649fd 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 @@ -85,8 +85,7 @@ class DialogFragmentIT : AbstractIT() { @get:Rule val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.POST_NOTIFICATIONS + Manifest.permission.WRITE_EXTERNAL_STORAGE ) @After From c052062882c641f932ecf763efec9778be9d5324 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 3 Jul 2026 15:08:30 +0200 Subject: [PATCH 2/7] disable animation for emulator, keep screen awake Signed-off-by: alperozturk96 --- scripts/wait_for_emulator.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/wait_for_emulator.sh b/scripts/wait_for_emulator.sh index 3428059427b3..a42061a93f08 100755 --- a/scripts/wait_for_emulator.sh +++ b/scripts/wait_for_emulator.sh @@ -25,5 +25,17 @@ until [[ "$bootanim" =~ "stopped" ]]; do sleep 5 done echo "($checkcounter) Done" + +# Keep the screen awake and unlocked for the whole run. On a headless emulator the +# screen can sleep or keep the keyguard up, which leaves the app window without focus +# and makes Espresso fail with RootViewWithoutFocusException. +adb -e shell svc power stayon true +adb -e shell wm dismiss-keyguard adb -e shell input keyevent 82 + +# Disable animations so Espresso does not wait on "not request layout". +adb -e shell settings put global window_animation_scale 0.0 +adb -e shell settings put global transition_animation_scale 0.0 +adb -e shell settings put global animator_duration_scale 0.0 + echo "($checkcounter) Unlocked emulator screen" From a35ddeedb86fe2879a11c0a985b57298cdf75aee Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 3 Jul 2026 15:08:46 +0200 Subject: [PATCH 3/7] use 2.2 hamcrest Signed-off-by: alperozturk96 --- app/build.gradle.kts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a659e78e0037..8bfabe7c7535 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -53,6 +53,12 @@ configurations.configureEach { useVersion(libs.versions.jacoco.get()) } else if (requested.group == "commons-logging" && requested.name == "commons-logging") { useTarget(libs.slfj) + } else if (requested.group == "org.hamcrest") { + useVersion("2.2") + because( + "Align hamcrest on compile and runtime. 1.3 (via junit) exposes fixed-arity " + + "anyOf/allOf overloads that 2.2 (via androidx.test) removed, causing NoSuchMethodError." + ) } } } From 864bd65d1b4083a2013bdc2ff82f0982892b5062 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 3 Jul 2026 15:09:01 +0200 Subject: [PATCH 4/7] remove looper for showMnemonic Signed-off-by: alperozturk96 --- .../java/com/nextcloud/client/SettingsActivityIT.kt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/client/SettingsActivityIT.kt b/app/src/androidTest/java/com/nextcloud/client/SettingsActivityIT.kt index 9b9d283af3f6..47b2f227648c 100644 --- a/app/src/androidTest/java/com/nextcloud/client/SettingsActivityIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/SettingsActivityIT.kt @@ -9,7 +9,6 @@ package com.nextcloud.client import android.content.Intent -import android.os.Looper import androidx.test.core.app.launchActivity import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches @@ -61,12 +60,8 @@ class SettingsActivityIT : AbstractIT() { } } - @Suppress("DEPRECATION") @Test fun showMnemonic() { - if (Looper.myLooper() == null) { - Looper.prepare() - } val intent = Intent().apply { putExtra(RequestCredentialsActivity.KEY_CHECK_RESULT, RequestCredentialsActivity.KEY_CHECK_RESULT_TRUE) } @@ -76,13 +71,10 @@ class SettingsActivityIT : AbstractIT() { } launchActivity().use { scenario -> - onView(isRoot()).check(matches(isDisplayed())) - scenario.onActivity { sut -> sut.handleMnemonicRequest(intent) } - Looper.myLooper()?.quitSafely() Assert.assertTrue(true) } } From ef12a6f1163354d2fccdeaead4e24501d1fd6023 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 3 Jul 2026 15:25:17 +0200 Subject: [PATCH 5/7] fix testDeleteTask Signed-off-by: alperozturk96 --- .../client/assistant/AssistantRepositoryTests.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/client/assistant/AssistantRepositoryTests.kt b/app/src/androidTest/java/com/nextcloud/client/assistant/AssistantRepositoryTests.kt index d2d333f4797f..693724df360f 100644 --- a/app/src/androidTest/java/com/nextcloud/client/assistant/AssistantRepositoryTests.kt +++ b/app/src/androidTest/java/com/nextcloud/client/assistant/AssistantRepositoryTests.kt @@ -87,17 +87,13 @@ class AssistantRepositoryTests : AbstractOnServerIT() { testCreateTask() - sleep(120) - runBlocking { val taskList = sut?.getTaskList("assistant") assertTrue(taskList != null) - sleep(120) - - assert((taskList?.size ?: 0) > 0) + val taskId = taskList?.firstOrNull()?.id ?: return@runBlocking - val result = sut?.deleteTask(taskList!!.first().id) + val result = sut?.deleteTask(taskId) assertTrue(result?.isSuccess == true) } } From 146c03f2abaacc5d4f898bf1312f69d69cb38baa Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 3 Jul 2026 15:25:54 +0200 Subject: [PATCH 6/7] fix code format Signed-off-by: alperozturk96 --- .../java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt | 3 +-- .../java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt index ac90c4be2916..583697e196f3 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetOnlineStatusBottomSheetIT.kt @@ -27,8 +27,7 @@ import org.junit.Test class SetOnlineStatusBottomSheetIT : AbstractIT() { @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE) + val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE) @Test fun open() { diff --git a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt index e2230af954a4..a9b98bedb941 100644 --- a/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt +++ b/app/src/androidTest/java/com/nextcloud/ui/SetStatusMessageBottomSheetIT.kt @@ -28,8 +28,7 @@ import org.junit.Test class SetStatusMessageBottomSheetIT : AbstractIT() { @get:Rule - val permissionRule: GrantPermissionRule = GrantPermissionRule.grant( - Manifest.permission.WRITE_EXTERNAL_STORAGE) + val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE) @Test fun open() { From 695775233bfb9640d40a5fe3113d6fe5efed695d Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 3 Jul 2026 15:29:28 +0200 Subject: [PATCH 7/7] update library Signed-off-by: alperozturk96 --- gradle/libs.versions.toml | 2 +- gradle/verification-metadata.xml | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7d32971ffe02..ffd5d3e157fb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ androidCommonLibraryVersion = "0.33.2" androidGifDrawableVersion = "1.2.32" androidImageCropperVersion = "4.7.0" -androidLibraryVersion ="0282f675c8f11af9f1da91436f1fa95abe2333fe" +androidLibraryVersion ="e4126f66ffdead52f94a2edd6855b11a8a94f812" androidOpensslVersion = "3.5.6" androidPluginVersion = "9.2.1" androidsvgVersion = "1.4" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index dd487e24e7a4..dbd2438eb804 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -125,9 +125,7 @@ - - - + @@ -362,12 +360,12 @@ + - @@ -20079,16 +20077,16 @@ - - - - - + + + + + @@ -22028,6 +22026,14 @@ + + + + + + + +