From 710c249282408ef20bfe5d6bb756acaafdf58ae4 Mon Sep 17 00:00:00 2001 From: Aaron Alaniz Date: Sun, 3 Mar 2024 05:20:57 -0600 Subject: [PATCH 1/2] Enable maestro tests for iOS --- .github/workflows/lightsaber-ci.yml | 11 ++++------- .../kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt | 11 +++++++++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/lightsaber-ci.yml b/.github/workflows/lightsaber-ci.yml index 1460461..96fe9d8 100644 --- a/.github/workflows/lightsaber-ci.yml +++ b/.github/workflows/lightsaber-ci.yml @@ -123,12 +123,9 @@ jobs: - uses: actions/checkout@v3 - uses: ./.github/actions/setup-lightsaber-ci - - # TODO Run e2e tests when Compose Multiplatform supports either Compose test tags or - # accessibility labels - name: Check for app file run: test -e ./iosApp/build/ios/Release-iphonesimulator/Lightsaber.app -# - uses: mobile-dev-inc/action-maestro-cloud@v1.1.0 -# with: -# api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }} -# app-file: ./iosApp/build/ios/Release-iphonesimulator/Lightsaber.app \ No newline at end of file + - uses: mobile-dev-inc/action-maestro-cloud@v1.1.0 + with: + api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }} + app-file: ./iosApp/build/ios/Release-iphonesimulator/Lightsaber.app \ No newline at end of file diff --git a/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt b/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt index 4679abf..8f2adde 100644 --- a/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt +++ b/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt @@ -1,5 +1,7 @@ package xyz.alaniz.aaron.lightsaber +import androidx.compose.runtime.ExperimentalComposeApi +import androidx.compose.ui.platform.AccessibilitySyncOptions import androidx.compose.ui.window.ComposeUIViewController import kotlinx.cinterop.ExperimentalForeignApi import platform.Foundation.NSDocumentDirectory @@ -11,8 +13,13 @@ import xyz.alaniz.aaron.lightsaber.di.create import xyz.alaniz.aaron.lightsaber.di.dataStoreFileName import xyz.alaniz.aaron.lightsaber.ui.lightsaber.IosLightsaberScreen -@OptIn(ExperimentalForeignApi::class) -fun MainViewController() = ComposeUIViewController { +@OptIn(ExperimentalForeignApi::class, ExperimentalComposeApi::class) +fun MainViewController() = ComposeUIViewController(configure = { + /** + * TODO Update this to only sync the accessibility tree for debug builds + */ + accessibilitySyncOptions = AccessibilitySyncOptions.Always(debugLogger = null) +}) { val documentDirectory: NSURL? = NSFileManager.defaultManager.URLForDirectory( directory = NSDocumentDirectory, inDomain = NSUserDomainMask, From e876c3d6adf2f3bd73db47511cbc542745948afe Mon Sep 17 00:00:00 2001 From: Aaron Alaniz Date: Sun, 3 Mar 2024 06:41:39 -0600 Subject: [PATCH 2/2] Update main.ios.kt --- .../kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt b/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt index 8f2adde..3ad3c5f 100644 --- a/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt +++ b/shared/src/iosMain/kotlin/xyz/alaniz/aaron/lightsaber/main.ios.kt @@ -19,6 +19,14 @@ fun MainViewController() = ComposeUIViewController(configure = { * TODO Update this to only sync the accessibility tree for debug builds */ accessibilitySyncOptions = AccessibilitySyncOptions.Always(debugLogger = null) + + /** + * TODO Understand why this needs to be false for Maestro tests to pass + * + * The default value for this is true, but then the accessibility tree mappings include an + * offset for the status bar + */ + platformLayers = false }) { val documentDirectory: NSURL? = NSFileManager.defaultManager.URLForDirectory( directory = NSDocumentDirectory,