Skip to content

desktop/8.4.9

Choose a tag to compare

@github-actions github-actions released this 23 Dec 17:20
· 6 commits to master since this release
refactor: Stabilize and multiplatform UI tests

This commit refactors the UI testing infrastructure to improve stability and enable multiplatform testing. It introduces a new `ui:test` module for common UI test logic and stabilizes tests by using idling resources.

### Key Changes

-   **New `ui:test` Module**
    -   A new Gradle module, `ui:test`, has been created to house multiplatform UI tests.
    -   Existing UI test cases (`CrudTestCase`, `SettingPasswordTestCase`, etc.) and screen objects have been moved from `ui/test-jvm` to `ui:test/src/commonMain` to enable them to run on all platforms (Android, iOS, Desktop, and Web).
    -   `ui:test-jvm` now contains only JVM-specific utilities, such as the bridge between `ComposeContentTestRule` and the multiplatform `ComposeUiTest`.

-   **UI Test Stabilization with Idling Resources**
    -   Introduced `CountingIdlingRes`, a new utility in `core/domain` to track the state of long-running asynchronous operations in ViewModels.
    -   ViewModels now increment/decrement this counter during operations like database access or encryption changes.
    -   A `ComposeCountingIdlingResource` has been added to `ui/test-jvm` to integrate with the Compose test framework, making tests wait for async operations to complete, thus preventing flakiness.

-   **Test Tagging and Navigation**
    -   Added explicit test tags to UI components in security dialogs (`EnterPasswordDialog`, `ConfirmPasswordDialog`, `ChangePasswordDialog`) and the `SignInScreen` for more reliable test node selection.
    -   Improved the `RouterImpl` by setting `launchSingleTop = true` for all navigation actions to prevent duplicate screen instances.
    -   Added abstract navigation tests (`AbstractNavigationTest`) for Android and Desktop to verify router behavior.

-   **Dependency and Version Updates**
    -   Upgraded Kotlin to version `2.3.0` and updated various other dependencies like `androidx.activityCompose` and `androidx.paging`.
    -   Bumped the application version to `8.4.9` for Android, iOS, and Desktop.
    -   Added a `CHANGELOG.md` file to document project changes.

-   **Minor Refinements**
    -   Removed the `android_ui_test_job` dependency on `build_job` in the GitHub Actions workflow.
    -   Cleaned up and improved formatting in `.podspec` files.
    -   Added a "Save" string resource used in password dialogs.