Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces an initial Kaspresso-based instrumentation “integration test” flow (mixing Espresso/Kakao screens with UI Automator for the external browser), updates AndroidX test dependency versions, and temporarily disables a set of currently failing/flaky existing androidTest tests.
Changes:
- Add Kaspresso dependency and include
src/integrationTest/javain theandroidTestsource set. - Add the first Kaspresso test (
LoginScreenTest) plus screen objects for key app/browser UI. - Update AndroidX test/espresso versions and mark multiple existing instrumentation tests as
@Ignoreto unblock local runs.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 16 comments.
Show a summary per file
| File | Description |
|---|---|
| opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/GetRemoteShareesOperation.kt | Adjusts KDoc for constructor params (currently introduces a param-name inconsistency). |
| opencloudComLibrary/build.gradle | Switches AndroidX test core dependency to version-catalog alias. |
| opencloudApp/src/integrationTest/java/screens/StartScreen.kt | Adds Kakao/Kaspresso screen for initial account setup UI. |
| opencloudApp/src/integrationTest/java/screens/MainScreen.kt | Adds Kakao/Kaspresso screen for main activity UI. |
| opencloudApp/src/integrationTest/java/screens/ManageAccountsDialog.kt | Adds screen model for account removal flow (currently uses hardcoded text + naming typo). |
| opencloudApp/src/integrationTest/java/screens/LoginScreen.kt | Adds UI Automator screen for external browser login (currently Chrome-package pinned). |
| opencloudApp/src/integrationTest/java/eu/opencloud/android/LoginScreenTest.kt | Adds first Kaspresso integration test flow for login/remove-account. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/ui/activity/ReleaseNotesActivityTest.kt | Ignores two tests. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/sharing/shares/ui/ShareFileFragmentTest.kt | Ignores entire test class. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/settings/security/SettingsSecurityFragmentTest.kt | Ignores multiple tests. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/settings/security/PassCodeActivityTest.kt | Ignores multiple tests. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/settings/more/SettingsMoreFragmentTest.kt | Ignores one test. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/settings/logs/SettingsLogsFragmentTest.kt | Ignores one test. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/settings/advanced/SettingsAdvancedFragmentTest.kt | Ignores one test. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/files/details/FileDetailsFragmentTest.kt | Ignores entire test class. |
| opencloudApp/src/androidTest/java/eu/opencloud/android/authentication/LoginActivityTest.kt | Adds AccountManager static mocking and ignores multiple tests. |
| opencloudApp/build.gradle | Adds Kaspresso dependency, integration test source dir, and globally forces AndroidX test/espresso versions. |
| gradle/libs.versions.toml | Bumps AndroidX test/espresso versions and adds Kaspresso version/catalog entry. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...Library/src/main/java/eu/opencloud/android/lib/resources/shares/GetRemoteShareesOperation.kt
Show resolved
Hide resolved
opencloudApp/src/integrationTest/java/screens/ManageAccountsDialog.kt
Outdated
Show resolved
Hide resolved
opencloudApp/src/integrationTest/java/screens/ManageAccountsDialog.kt
Outdated
Show resolved
Hide resolved
opencloudApp/src/integrationTest/java/eu/opencloud/android/LoginScreenTest.kt
Outdated
Show resolved
Hide resolved
...cloudApp/src/androidTest/java/eu/opencloud/android/settings/more/SettingsMoreFragmentTest.kt
Show resolved
Hide resolved
...cloudApp/src/androidTest/java/eu/opencloud/android/settings/logs/SettingsLogsFragmentTest.kt
Show resolved
Hide resolved
.../src/androidTest/java/eu/opencloud/android/settings/advanced/SettingsAdvancedFragmentTest.kt
Show resolved
Hide resolved
opencloudApp/src/androidTest/java/eu/opencloud/android/files/details/FileDetailsFragmentTest.kt
Show resolved
Hide resolved
opencloudApp/src/androidTest/java/eu/opencloud/android/authentication/LoginActivityTest.kt
Show resolved
Hide resolved
5b844f4 to
a957903
Compare
| // can't find it using withId("com.android.chrome", "username") so using withResourceName() | ||
| val username = UiEditText { withResourceName("username") } | ||
| val password = UiEditText { withResourceName("password") } | ||
| val loginButton = UiButton { withResourceName("kc-login") } |
There was a problem hiding this comment.
trying to run the test it could not find that element
04-08 16:35:52.615 7129 7150 E TestRunner: failed: loginApp(eu.opencloud.android.LoginScreenTest)
04-08 16:35:52.616 7129 7150 E TestRunner: ----- begin exception -----
04-08 16:35:52.616 7129 7150 E TestRunner: com.kaspersky.components.kautomator.intercept.exception.UnfoundedUiObjectException: The UiObject2 was not found on the screen. The selector=BySelector [RES='\Qkc-login\E'], index=0
04-08 16:35:52.616 7129 7150 E TestRunner: at com.kaspersky.components.kautomator.intercept.interaction.UiObjectInteraction.check(UiObjectInteraction.kt:31)
04-08 16:35:52.616 7129 7150 E TestRunner: at com.kaspersky.kaspresso.interceptors.tolibrary.kautomator.KautomatorObjectInterceptor$interceptCheck$1.invoke(KautomatorObjectInterceptor.kt:29)
04-08 16:35:52.616 7129 7150 E TestRunner: at com.kaspersky.kaspresso.interceptors.tolibrary.kautomator.KautomatorObjectInterceptor$interceptCheck$1.invoke(KautomatorObjectInterceptor.kt:24)
04-08 16:35:52.616 7129 7150 E TestRunner: at com.kaspersky.kaspresso.autoscroll.ObjectAutoScrollProviderImpl.withAutoScroll(ObjectAutoScrollProviderImpl.kt:30)
There was a problem hiding this comment.
Thank you for review! Please try to run again
yeah, this place is really flaky. I added a timeout to wait for the browser to redirect.
Problem is: we open app -> set url -> redirect to browser to login page -> after login go back to the app
When switching between the app and the browser, the behavior is unpredictable, so the test is not stable.
a957903 to
f4294cb
Compare
Changes:
How to run test:
java -jar ~/Downloads/adbserver-desktop.jar./gradlew :opencloudApp:connectedOriginalDebugAndroidTest \ -Pandroid.testInstrumentationRunnerArguments.class=eu.opencloud.android.LoginScreenTest#loginAppor run in the Android studio:
Screen.Recording.2026-03-31.at.15.29.51.mp4