From bc2ef9144c354e6661350e78307f44bd42978921 Mon Sep 17 00:00:00 2001 From: Ivan Matkov Date: Fri, 10 Oct 2025 15:01:09 +0200 Subject: [PATCH 01/12] Move iOS Tests to GitHub actions --- .github/workflows/compose-tests.yml | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index f96366485ccc5..6acc156c11e6f 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -67,6 +67,84 @@ jobs: paths: "out/**/build/test-results/**/TEST-*.xml" if: always() + compose-ios-utils-tests: + runs-on: macos-15-xlarge + name: Compose iOS Utils Tests + steps: + - name: Checkout Repository + uses: actions/checkout@v5 + + - name: Setup Prerequisites + uses: ./.github/actions/setup-prerequisites + + - name: Setup Xcode + uses: ./.github/actions/setup-xcode + + - name: Run iOS Utils Tests + timeout-minutes: 15 + shell: bash + working-directory: compose/ui/ui-uikit/src/uikitMain/objc/CMPUIKitUtils + run: | + xcodebuild test \ + -resultBundlePath TestResults.xcresult \ + -scheme CMPUIKitUtilsTests \ + -project CMPUIKitUtils.xcodeproj \ + -destination 'platform=iOS Simulator,name=iPhone 16' + + - name: Upload Test Results + uses: actions/upload-artifact@v4 + if: failure() + with: + name: TestResults-${{ github.run_number }}.xcresult + path: compose/ui/ui-uikit/src/uikitMain/objc/CMPUIKitUtils/TestResults.xcresult + + compose-ios-instrumented-tests: + runs-on: macos-15-xlarge + name: Compose iOS Instrumented Tests + steps: + - name: Checkout Repository + uses: actions/checkout@v5 + + - name: Setup Prerequisites + uses: ./.github/actions/setup-prerequisites + + - name: Setup Xcode + uses: ./.github/actions/setup-xcode + + - name: Building Framework with XCTests + run: | + ./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 + + - name: Configure Simulator + run: | + # Boot a test simulator + xcrun simctl boot "iPhone 16" + + # Write the accessibility flags inside the Simulator: + xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true + xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true + xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true + + # Restart SpringBoard (so system services pick up the change) + xcrun simctl spawn booted launchctl stop com.apple.SpringBoard + + - name: Run iOS Instrumented Tests + timeout-minutes: 15 + shell: bash + working-directory: compose/ui/ui/src/uikitInstrumentedTest/launcher + run: | + xcodebuild test \ + -scheme Launcher-CI \ + -project Launcher.xcodeproj \ + -destination 'platform=iOS Simulator,name=iPhone 16' \ + | xcpretty --report junit + + - name: Test Summary + uses: test-summary/action@v2 + with: + paths: "**/reports/junit.xml" + if: always() + compose-web-chrome-tests: runs-on: ubuntu-24.04 name: Compose Web Chrome Tests From b1d58844da8127868d02779e26d45afa29d63f56 Mon Sep 17 00:00:00 2001 From: Ivan Matkov Date: Wed, 8 Oct 2025 18:27:13 +0200 Subject: [PATCH 02/12] Remove `.jb-ciscripts` --- .../PullRequests/UIKitInstrumentedTests.sh | 49 ------------------- .jb-ciscripts/README.md | 3 -- 2 files changed, 52 deletions(-) delete mode 100755 .jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh delete mode 100644 .jb-ciscripts/README.md diff --git a/.jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh b/.jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh deleted file mode 100755 index 9567a4cefbc17..0000000000000 --- a/.jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh +++ /dev/null @@ -1,49 +0,0 @@ - -## Building framework with XCTests -./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 - -# Force-close all simulators -xcrun simctl shutdown all -killall Simulator - -## Configure simulators to disconnect hardware keyboard (and show on-screen keyboard). -# Get list of all DEVICES -DEVICES=$(xcrun simctl list DEVICES --json) -TEST_DEVICE="iPhone 16" - -# This assumes you have jq installed; you can also parse manually if not -if ! command -v jq &> /dev/null; then - echo "Error: jq is not installed" - exit 1 -fi - -# Export current preferences to PREF_PLIST -PREF_PLIST=~/iphonesimulator.plist -defaults export com.apple.iphonesimulator - > "$PREF_PLIST" - -# Adding "ConnectHardwareKeyboard = false" for every simulator -echo "$DEVICES" | jq -r '.DEVICES | to_entries[] | select(.key | startswith("com.apple.CoreSimulator.SimRuntime.iOS")) | .value[] | "\(.udid)"' | while read -r UUID; do - /usr/libexec/PlistBuddy -c "Set :DevicePreferences:$UUID:ConnectHardwareKeyboard false" "$PREF_PLIST" 2>/dev/null || \ - /usr/libexec/PlistBuddy -c "Add :DevicePreferences:$UUID:ConnectHardwareKeyboard bool false" "$PREF_PLIST" -done - -# Import back the modified plist -defaults import com.apple.iphonesimulator "$PREF_PLIST" - -## Launch Simulator app -XCODE_PATH=$(xcode-select -p) -SIMULATOR_PATH="$XCODE_PATH/Applications/Simulator.app/Contents/MacOS/Simulator" -open -a $SIMULATOR_PATH - -# boot a test simulator -xcrun simctl boot "$TEST_DEVICE" -# Write the accessibility flags inside the Simulator: -xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true -xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true -xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true -# Restart SpringBoard (so system services pick up the change) -xcrun simctl spawn booted launchctl stop com.apple.SpringBoard - -## Launch tests -cd compose/ui/ui/src/uikitInstrumentedTest/launcher -xcodebuild test -scheme Launcher-CI -project Launcher.xcodeproj -destination "platform=iOS Simulator,name=$TEST_DEVICE" diff --git a/.jb-ciscripts/README.md b/.jb-ciscripts/README.md deleted file mode 100644 index 078ba92f4a92c..0000000000000 --- a/.jb-ciscripts/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This folder contains scripts called by CI. - -Storing them in the repo solves the issue of [not supporting different branches in TeamCity](https://youtrack.jetbrains.com/issue/CMP-8136/PR-checks-runs-always-by-main-teamcity-config). From 147c324d683be53dec004cf34d81d4ea4d7b9487 Mon Sep 17 00:00:00 2001 From: Ivan Matkov Date: Fri, 10 Oct 2025 01:22:10 +0200 Subject: [PATCH 03/12] Apply GRADLE_OPTS to iOS tests like it was in TeamCity --- .github/workflows/compose-tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index 6acc156c11e6f..5a5622965b215 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -45,6 +45,8 @@ jobs: compose-ios-tests: runs-on: macos-15-xlarge name: Compose iOS Tests + env: + GRADLE_OPTS: -Xmx12g -Dorg.gradle.daemon=false steps: - name: Checkout Repository uses: actions/checkout@v5 @@ -70,6 +72,8 @@ jobs: compose-ios-utils-tests: runs-on: macos-15-xlarge name: Compose iOS Utils Tests + env: + GRADLE_OPTS: -Xmx12g -Dorg.gradle.daemon=false steps: - name: Checkout Repository uses: actions/checkout@v5 @@ -101,6 +105,8 @@ jobs: compose-ios-instrumented-tests: runs-on: macos-15-xlarge name: Compose iOS Instrumented Tests + env: + GRADLE_OPTS: -Xmx12g -Dorg.gradle.daemon=false steps: - name: Checkout Repository uses: actions/checkout@v5 From 69957d81aa07e6e59924ab2cb485b105c1c7cb7c Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 11:20:43 +0200 Subject: [PATCH 04/12] Update XCode 16.4, iOS 18.5, Use general tests Launcher. --- .github/actions/setup-xcode/action.yml | 4 +-- .github/workflows/compose-tests.yml | 40 +++++++++++++------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/actions/setup-xcode/action.yml b/.github/actions/setup-xcode/action.yml index 90b449317d14f..ca899fccd3c0a 100644 --- a/.github/actions/setup-xcode/action.yml +++ b/.github/actions/setup-xcode/action.yml @@ -9,8 +9,8 @@ runs: - name: Setup Xcode version shell: bash run: | - sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer - xcodebuild -downloadPlatform iOS -buildVersion 18.2 + sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer + xcodebuild -downloadPlatform iOS -buildVersion 18.5 /usr/bin/xcodebuild -version - name: Cache Xcode DerivedData diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index 5a5622965b215..d9044512ebfc2 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -116,33 +116,33 @@ jobs: - name: Setup Xcode uses: ./.github/actions/setup-xcode - - - name: Building Framework with XCTests - run: | - ./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 - - - name: Configure Simulator - run: | - # Boot a test simulator - xcrun simctl boot "iPhone 16" - - # Write the accessibility flags inside the Simulator: - xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true - xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true - xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true - - # Restart SpringBoard (so system services pick up the change) - xcrun simctl spawn booted launchctl stop com.apple.SpringBoard - +# +# - name: Building Framework with XCTests +# run: | +# ./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 +# +# - name: Configure Simulator +# run: | +# # Boot a test simulator +# xcrun simctl boot "iPhone 16" +# +# # Write the accessibility flags inside the Simulator: +# xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true +# xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true +# xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true +# +# # Restart SpringBoard (so system services pick up the change) +# xcrun simctl spawn booted launchctl stop com.apple.SpringBoard +# - name: Run iOS Instrumented Tests timeout-minutes: 15 shell: bash working-directory: compose/ui/ui/src/uikitInstrumentedTest/launcher run: | xcodebuild test \ - -scheme Launcher-CI \ + -scheme Launcher \ -project Launcher.xcodeproj \ - -destination 'platform=iOS Simulator,name=iPhone 16' \ + -destination 'platform=iOS Simulator,name=iPhone 17' \ | xcpretty --report junit - name: Test Summary From 8b9c84f0451f917c03ab310dd409a41381a433c3 Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 11:38:40 +0200 Subject: [PATCH 05/12] Print accessibility tree when failed, remove xcpretty --- .github/workflows/compose-tests.yml | 3 +-- .../compose/ui/test/AccessibilityTestNode.kt | 12 ++++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index d9044512ebfc2..6fb21402933a2 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -142,8 +142,7 @@ jobs: xcodebuild test \ -scheme Launcher \ -project Launcher.xcodeproj \ - -destination 'platform=iOS Simulator,name=iPhone 17' \ - | xcpretty --report junit + -destination 'platform=iOS Simulator,name=iPhone 17' - name: Test Summary uses: test-summary/action@v2 diff --git a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/AccessibilityTestNode.kt b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/AccessibilityTestNode.kt index b646284e6f770..28e4aceab9234 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/AccessibilityTestNode.kt +++ b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/AccessibilityTestNode.kt @@ -331,14 +331,22 @@ internal fun UIKitInstrumentedTest.assertAccessibilityTree( } internal fun UIKitInstrumentedTest.findNodeWithTag(tag: String) = findNodeWithTagOrNull(tag) - ?: fail("Unable to find node with identifier: $tag") + ?: run { + println("Actual accessibility tree:") + println(getAccessibilityTree().printTree()) + fail("Unable to find node with identifier: $tag") + } internal fun UIKitInstrumentedTest.findNodeWithTagOrNull(tag: String) = firstNodeOrNull { it.identifier == tag } internal fun UIKitInstrumentedTest.findNodeWithLabel(label: String) = findNodeWithLabelOrNull(label) - ?: fail("Unable to find node with label: $label") + ?: run { + println("Actual accessibility tree:") + println(getAccessibilityTree().printTree()) + fail("Unable to find node with label: $label") + } internal fun UIKitInstrumentedTest.findNodeWithLabelOrNull(label: String) = firstNodeOrNull { it.label == label From 58da1269d9c3e6b50a0e04def0338de716f1120d Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 11:49:22 +0200 Subject: [PATCH 06/12] Print devices, enable accessibility service --- .github/workflows/compose-tests.yml | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index 6fb21402933a2..53b85e1f91ec6 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -121,19 +121,21 @@ jobs: # run: | # ./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 # -# - name: Configure Simulator -# run: | -# # Boot a test simulator -# xcrun simctl boot "iPhone 16" -# -# # Write the accessibility flags inside the Simulator: -# xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true -# xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true -# xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true -# -# # Restart SpringBoard (so system services pick up the change) -# xcrun simctl spawn booted launchctl stop com.apple.SpringBoard -# + - name: Configure Simulator + run: | + xcrun simctl list devices + + # Boot a test simulator + xcrun simctl boot "iPhone 17" + + # Write the accessibility flags inside the Simulator: + xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true + xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true + xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true + + # Restart SpringBoard (so system services pick up the change) + xcrun simctl spawn booted launchctl stop com.apple.SpringBoard + - name: Run iOS Instrumented Tests timeout-minutes: 15 shell: bash From ec5087cbb58af04828567f7d7990e8b5a46dec02 Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 12:11:48 +0200 Subject: [PATCH 07/12] Update run scripts, fix caching warning --- .github/actions/setup-xcode/action.yml | 2 +- .github/workflows/compose-tests.yml | 5 +++-- .../launcher/Launcher.xcodeproj/project.pbxproj | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/actions/setup-xcode/action.yml b/.github/actions/setup-xcode/action.yml index ca899fccd3c0a..7aeac014c38f5 100644 --- a/.github/actions/setup-xcode/action.yml +++ b/.github/actions/setup-xcode/action.yml @@ -10,7 +10,7 @@ runs: shell: bash run: | sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - xcodebuild -downloadPlatform iOS -buildVersion 18.5 + xcodebuild -downloadPlatform iOS -buildVersion 18.6 /usr/bin/xcodebuild -version - name: Cache Xcode DerivedData diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index 53b85e1f91ec6..d4aab092511f7 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -126,7 +126,7 @@ jobs: xcrun simctl list devices # Boot a test simulator - xcrun simctl boot "iPhone 17" + xcrun simctl boot "iPhone 16" # Write the accessibility flags inside the Simulator: xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true @@ -135,6 +135,7 @@ jobs: # Restart SpringBoard (so system services pick up the change) xcrun simctl spawn booted launchctl stop com.apple.SpringBoard + xcrun simctl shutdown all - name: Run iOS Instrumented Tests timeout-minutes: 15 @@ -144,7 +145,7 @@ jobs: xcodebuild test \ -scheme Launcher \ -project Launcher.xcodeproj \ - -destination 'platform=iOS Simulator,name=iPhone 17' + -destination 'platform=iOS Simulator,name=iPhone 16' - name: Test Summary uses: test-summary/action@v2 diff --git a/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj b/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj index 9c468f56494ef..1ab94a377767d 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj +++ b/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj @@ -262,6 +262,7 @@ /* Begin PBXShellScriptBuildPhase section */ 9928B7EB2D326BB1006277AD /* Build Tests */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); From 5a4d2a08ebe93034bc73e1acfc1f5c297d36ad35 Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 12:25:03 +0200 Subject: [PATCH 08/12] Increase double tap delay --- .../kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt index aa6daca07ac6e..6b8424e45bd95 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt +++ b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt @@ -242,7 +242,7 @@ internal class UIKitInstrumentedTest { fun AccessibilityTestNode.doubleTap(): UITouch { val frame = frame ?: error("Internal error. Frame is missing.") tap(frame.center()) - delay(50) + delay(100) return tap(frame.center()) } From f2a90520eec313f4d03799d5de5216481c7bf401 Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 13:02:40 +0200 Subject: [PATCH 09/12] Debug test --- .../compose/ui/interaction/BasicInteractionTest.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt index dbdaca4c07ac0..8efd055eef66b 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt +++ b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt @@ -22,7 +22,10 @@ import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.material.TextField import androidx.compose.runtime.MutableState +import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -127,7 +130,11 @@ class BasicInteractionTest { UIPasteboard.generalPasteboard().string = "Paste text" setContent { Column(modifier = Modifier.safeDrawingPadding()) { - BasicTextField("Hello-LongLongLongLongLongLong-text", {}, modifier = Modifier.testTag("TextField")) + var value by remember { mutableStateOf(TextFieldValue("Hello-LongLongLongLongLong-text")) } + BasicTextField(value, { + println("onValueChange $it") + value = it + }, modifier = Modifier.testTag("TextField")) } } From 02451ef49a3ead41248917e45f54749d828899ad Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 13:12:45 +0200 Subject: [PATCH 10/12] Debug test --- .../androidx/compose/ui/interaction/BasicInteractionTest.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt index 8efd055eef66b..27316214741f3 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt +++ b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt @@ -138,6 +138,9 @@ class BasicInteractionTest { } } + findNodeWithTag("TextField").tap() + waitForIdle() + delay(1000) findNodeWithTag("TextField").doubleTap() verifyFullToolbarPresent() From e74e45c19df5edd3c0e18b3747301402205ce880 Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Thu, 16 Oct 2025 13:41:39 +0200 Subject: [PATCH 11/12] Update Open Toolbar gesture, Increase timeout --- .github/workflows/compose-tests.yml | 2 +- .../ui/interaction/BasicInteractionTest.kt | 31 +++++++++---------- .../compose/ui/test/UIKitInstrumentedTest.kt | 2 +- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index d4aab092511f7..1e5c4be6fd0b7 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -138,7 +138,7 @@ jobs: xcrun simctl shutdown all - name: Run iOS Instrumented Tests - timeout-minutes: 15 + timeout-minutes: 30 shell: bash working-directory: compose/ui/ui/src/uikitInstrumentedTest/launcher run: | diff --git a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt index 27316214741f3..1cd9fb81f548b 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt +++ b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/interaction/BasicInteractionTest.kt @@ -130,18 +130,11 @@ class BasicInteractionTest { UIPasteboard.generalPasteboard().string = "Paste text" setContent { Column(modifier = Modifier.safeDrawingPadding()) { - var value by remember { mutableStateOf(TextFieldValue("Hello-LongLongLongLongLong-text")) } - BasicTextField(value, { - println("onValueChange $it") - value = it - }, modifier = Modifier.testTag("TextField")) + BasicTextField("Hello-LongLongLongLongLongLong-text", {}, modifier = Modifier.testTag("TextField")) } } - findNodeWithTag("TextField").tap() - waitForIdle() - delay(1000) - findNodeWithTag("TextField").doubleTap() + openToolbar(textFieldTag = "TextField") verifyFullToolbarPresent() } @@ -156,7 +149,7 @@ class BasicInteractionTest { } } - findNodeWithTag("TextField").doubleTap() + openToolbar(textFieldTag = "TextField") verifyFullToolbarPresent() } @@ -170,7 +163,7 @@ class BasicInteractionTest { } } - findNodeWithTag("TextField").doubleTap() + openToolbar(textFieldTag = "TextField") verifyFullToolbarPresent() } @@ -185,7 +178,7 @@ class BasicInteractionTest { } } - findNodeWithTag("TextField").doubleTap() + openToolbar(textFieldTag = "TextField") verifyFullToolbarPresent() } @@ -206,7 +199,7 @@ class BasicInteractionTest { fun MutableState.isFullySelected(): Boolean = value.selection.start == 0 && value.selection.end == value.text.length - findNodeWithTag("TextField").doubleTap() + openToolbar(textFieldTag = "TextField") waitForContextMenu() assertFalse(textFieldValue.isFullySelected()) @@ -229,7 +222,7 @@ class BasicInteractionTest { fun TextFieldState.isFullySelected(): Boolean = selection.start == 0 && selection.end == text.length - findNodeWithTag("TextField").doubleTap() + openToolbar(textFieldTag = "TextField") waitForContextMenu() assertFalse(textFieldState.isFullySelected()) @@ -240,6 +233,13 @@ class BasicInteractionTest { assertTrue(textFieldState.isFullySelected()) } + private fun UIKitInstrumentedTest.openToolbar(textFieldTag: String) { + findNodeWithTag("TextField").tap() + delay(500) + findNodeWithTag("TextField").doubleTap() + waitForContextMenu() + } + @OptIn(ExperimentalFoundationApi::class) private fun runContextMenuTest( newContextMenuEnabled: Boolean, @@ -256,9 +256,6 @@ class BasicInteractionTest { @OptIn(ExperimentalForeignApi::class) private fun UIKitInstrumentedTest.verifyFullToolbarPresent() { - // Verify elements from context menu present - waitForContextMenu() - findNodeWithLabel("Cut").let { it.assertVisibleInContainer() assertTrue(it.isAccessibilityElement ?: false) diff --git a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt index 6b8424e45bd95..aa6daca07ac6e 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt +++ b/compose/ui/ui/src/uikitInstrumentedTest/kotlin/androidx/compose/ui/test/UIKitInstrumentedTest.kt @@ -242,7 +242,7 @@ internal class UIKitInstrumentedTest { fun AccessibilityTestNode.doubleTap(): UITouch { val frame = frame ?: error("Internal error. Frame is missing.") tap(frame.center()) - delay(100) + delay(50) return tap(frame.center()) } From abaede8de56ea7a4ba75613bf4190cdf9c10529b Mon Sep 17 00:00:00 2001 From: Andrei Salavei Date: Fri, 17 Oct 2025 15:58:14 +0200 Subject: [PATCH 12/12] Remove TeamCity support files, update actions config, remove Launcher-CI scheme --- .github/actions/setup-xcode/action.yml | 3 +- .github/workflows/compose-tests.yml | 6 +- .../PullRequests/UIKitInstrumentedTests.sh | 51 ------ .../Launcher.xcodeproj/project.pbxproj | 164 ++---------------- 4 files changed, 14 insertions(+), 210 deletions(-) delete mode 100755 .jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh diff --git a/.github/actions/setup-xcode/action.yml b/.github/actions/setup-xcode/action.yml index 7aeac014c38f5..409fd8cdfa85f 100644 --- a/.github/actions/setup-xcode/action.yml +++ b/.github/actions/setup-xcode/action.yml @@ -9,8 +9,7 @@ runs: - name: Setup Xcode version shell: bash run: | - sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer - xcodebuild -downloadPlatform iOS -buildVersion 18.6 + sudo xcode-select -s /Applications/Xcode_16.4.app /usr/bin/xcodebuild -version - name: Cache Xcode DerivedData diff --git a/.github/workflows/compose-tests.yml b/.github/workflows/compose-tests.yml index 1e5c4be6fd0b7..0a24a8407d7d7 100644 --- a/.github/workflows/compose-tests.yml +++ b/.github/workflows/compose-tests.yml @@ -116,11 +116,7 @@ jobs: - name: Setup Xcode uses: ./.github/actions/setup-xcode -# -# - name: Building Framework with XCTests -# run: | -# ./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 -# + - name: Configure Simulator run: | xcrun simctl list devices diff --git a/.jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh b/.jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh deleted file mode 100755 index 72aa489e69d45..0000000000000 --- a/.jb-ciscripts/PullRequests/UIKitInstrumentedTests.sh +++ /dev/null @@ -1,51 +0,0 @@ - -## Building framework with XCTests -./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64 - -# Force-close all simulators -xcrun simctl shutdown all -killall Simulator - -## Configure simulators to disconnect hardware keyboard (and show on-screen keyboard). -# Get list of all DEVICES -DEVICES=$(xcrun simctl list DEVICES --json) -TEST_DEVICE="iPhone 16" - -echo $DEVICES - -# This assumes you have jq installed; you can also parse manually if not -if ! command -v jq &> /dev/null; then - echo "Error: jq is not installed" - exit 1 -fi - -# Export current preferences to PREF_PLIST -PREF_PLIST=~/iphonesimulator.plist -defaults export com.apple.iphonesimulator - > "$PREF_PLIST" - -# Adding "ConnectHardwareKeyboard = false" for every simulator -echo "$DEVICES" | jq -r '.DEVICES | to_entries[] | select(.key | startswith("com.apple.CoreSimulator.SimRuntime.iOS")) | .value[] | "\(.udid)"' | while read -r UUID; do - /usr/libexec/PlistBuddy -c "Set :DevicePreferences:$UUID:ConnectHardwareKeyboard false" "$PREF_PLIST" 2>/dev/null || \ - /usr/libexec/PlistBuddy -c "Add :DevicePreferences:$UUID:ConnectHardwareKeyboard bool false" "$PREF_PLIST" -done - -# Import back the modified plist -defaults import com.apple.iphonesimulator "$PREF_PLIST" - -## Launch Simulator app -XCODE_PATH=$(xcode-select -p) -SIMULATOR_PATH="$XCODE_PATH/Applications/Simulator.app/Contents/MacOS/Simulator" -open -a $SIMULATOR_PATH - -# boot a test simulator -xcrun simctl boot "$TEST_DEVICE" -# Write the accessibility flags inside the Simulator: -xcrun simctl spawn booted defaults write com.apple.Accessibility AccessibilityEnabled -bool true -xcrun simctl spawn booted defaults write com.apple.Accessibility ApplicationAccessibilityEnabled -bool true -xcrun simctl spawn booted defaults write com.apple.Accessibility AutomationEnabled -bool true -# Restart SpringBoard (so system services pick up the change) -xcrun simctl spawn booted launchctl stop com.apple.SpringBoard - -## Launch tests -cd compose/ui/ui/src/uikitInstrumentedTest/launcher -xcodebuild test -scheme Launcher-CI -project Launcher.xcodeproj -destination "platform=iOS Simulator,name=$TEST_DEVICE" diff --git a/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj b/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj index 1ab94a377767d..c44b3773b91f2 100644 --- a/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj +++ b/compose/ui/ui/src/uikitInstrumentedTest/launcher/Launcher.xcodeproj/project.pbxproj @@ -10,10 +10,6 @@ 9928B7FF2D32CD78006277AD /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9928B7FE2D32CD75006277AD /* main.swift */; }; 9928B8042D330AB6006277AD /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9928B8032D330AB6006277AD /* IOKit.framework */; }; 9928B82C2D3422C1006277AD /* Launcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9928B82B2D3422C1006277AD /* Launcher.swift */; }; - 99AEE0582DCC020200AAC8AE /* Launcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9928B82B2D3422C1006277AD /* Launcher.swift */; }; - 99AEE05A2DCC020200AAC8AE /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9928B8032D330AB6006277AD /* IOKit.framework */; }; - 99AEE0642DCC06D100AAC8AE /* InstrumentedTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99AEE0632DCC06D100AAC8AE /* InstrumentedTest.framework */; }; - 99AEE0652DCC06D100AAC8AE /* InstrumentedTest.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 99AEE0632DCC06D100AAC8AE /* InstrumentedTest.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -24,36 +20,14 @@ remoteGlobalIDString = 997DFCF92B18E5D3000B56B5; remoteInfo = CMPUIKitUtilsTestApp; }; - 99AEE0552DCC020200AAC8AE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 9975AAC12AEABB5600AF155F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 997DFCF92B18E5D3000B56B5; - remoteInfo = CMPUIKitUtilsTestApp; - }; /* End PBXContainerItemProxy section */ -/* Begin PBXCopyFilesBuildPhase section */ - 99AEE0662DCC06D100AAC8AE /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 99AEE0652DCC06D100AAC8AE /* InstrumentedTest.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ 9928B7FE2D32CD75006277AD /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 9928B8032D330AB6006277AD /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.1.sdk/System/Library/Frameworks/IOKit.framework; sourceTree = DEVELOPER_DIR; }; 9928B82B2D3422C1006277AD /* Launcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Launcher.swift; sourceTree = ""; }; 997DFCE32B18D99E000B56B5 /* Launcher.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Launcher.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 997DFCFA2B18E5D3000B56B5 /* LauncherHost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LauncherHost.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 99AEE05F2DCC020200AAC8AE /* Launcher-CI.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Launcher-CI.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 99AEE0602DCC061700AAC8AE /* iphonesimulator.xcarchive */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = iphonesimulator.xcarchive; path = "../../../../../../out/androidx/internal-testutils-xctest/build/objc/iphonesimulator.xcarchive"; sourceTree = ""; }; 99AEE0612DCC067600AAC8AE /* libCMPTestUtils.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libCMPTestUtils.a; path = "../../../../../../out/androidx/internal-testutils-xctest/build/objc/iphonesimulator.xcarchive/Products/usr/local/lib/libCMPTestUtils.a"; sourceTree = ""; }; 99AEE0632DCC06D100AAC8AE /* InstrumentedTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = InstrumentedTest.framework; path = ../../../../../../out/androidx/compose/ui/ui/build/bin/uikitSimArm64/InstrumentedTestDebugFramework/InstrumentedTest.framework; sourceTree = ""; }; @@ -76,15 +50,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 99AEE0592DCC020200AAC8AE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 99AEE0642DCC06D100AAC8AE /* InstrumentedTest.framework in Frameworks */, - 99AEE05A2DCC020200AAC8AE /* IOKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -115,7 +80,6 @@ children = ( 997DFCE32B18D99E000B56B5 /* Launcher.xctest */, 997DFCFA2B18E5D3000B56B5 /* LauncherHost.app */, - 99AEE05F2DCC020200AAC8AE /* Launcher-CI.xctest */, ); name = Products; sourceTree = ""; @@ -175,25 +139,6 @@ productReference = 997DFCFA2B18E5D3000B56B5 /* LauncherHost.app */; productType = "com.apple.product-type.application"; }; - 99AEE0532DCC020200AAC8AE /* Launcher-CI */ = { - isa = PBXNativeTarget; - buildConfigurationList = 99AEE05C2DCC020200AAC8AE /* Build configuration list for PBXNativeTarget "Launcher-CI" */; - buildPhases = ( - 99AEE0572DCC020200AAC8AE /* Sources */, - 99AEE0592DCC020200AAC8AE /* Frameworks */, - 99AEE05B2DCC020200AAC8AE /* Resources */, - 99AEE0662DCC06D100AAC8AE /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 99AEE0542DCC020200AAC8AE /* PBXTargetDependency */, - ); - name = "Launcher-CI"; - productName = CMPUIKitUtilsTests; - productReference = 99AEE05F2DCC020200AAC8AE /* Launcher-CI.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -228,7 +173,6 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 99AEE0532DCC020200AAC8AE /* Launcher-CI */, 997DFCE22B18D99E000B56B5 /* Launcher */, 997DFCF92B18E5D3000B56B5 /* LauncherHost */, ); @@ -250,13 +194,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 99AEE05B2DCC020200AAC8AE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -298,14 +235,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 99AEE0572DCC020200AAC8AE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 99AEE0582DCC020200AAC8AE /* Launcher.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -314,11 +243,6 @@ target = 997DFCF92B18E5D3000B56B5 /* LauncherHost */; targetProxy = 997DFD082B18E5DC000B56B5 /* PBXContainerItemProxy */; }; - 99AEE0542DCC020200AAC8AE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 997DFCF92B18E5D3000B56B5 /* LauncherHost */; - targetProxy = 99AEE0552DCC020200AAC8AE /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -453,8 +377,9 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inderited)", @@ -468,6 +393,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = JetBrains.CMPUIKitUtilsTests; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -481,8 +407,9 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inderited)", @@ -496,6 +423,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = JetBrains.CMPUIKitUtilsTests; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; @@ -510,9 +438,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 45226JTYHN; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -525,6 +453,7 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = JetBrains.CMPUIKitUtilsTestApp; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -539,9 +468,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 45226JTYHN; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; @@ -554,6 +483,7 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = JetBrains.CMPUIKitUtilsTestApp; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -561,67 +491,6 @@ }; name = Release; }; - 99AEE05D2DCC020200AAC8AE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - FRAMEWORK_SEARCH_PATHS = ../../../../../../out/androidx/compose/ui/ui/build/bin/uikitSimArm64/InstrumentedTestDebugFramework/; - GENERATE_INFOPLIST_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(inderited)", - "CMPUIKitUtils/**", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "-L$SRCROOT/../../../../../../out/androidx/internal-testutils-xctest/build/objc/iphonesimulator.xcarchive/Products/usr/local/lib", - "-lCMPTestUtils", - "-ObjC", - "-framework", - InstrumentedTest, - ); - PRODUCT_BUNDLE_IDENTIFIER = JetBrains.CMPUIKitUtilsTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LauncherHost.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/LauncherHost"; - }; - name = Debug; - }; - 99AEE05E2DCC020200AAC8AE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - FRAMEWORK_SEARCH_PATHS = ../../../../../../out/androidx/compose/ui/ui/build/bin/uikitSimArm64/InstrumentedTestDebugFramework/; - GENERATE_INFOPLIST_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(inderited)", - "CMPUIKitUtils/**", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "-L$SRCROOT/../../../../../../out/androidx/internal-testutils-xctest/build/objc/iphonesimulator.xcarchive/Products/usr/local/lib", - "-lCMPTestUtils", - "-ObjC", - "-framework", - InstrumentedTest, - ); - PRODUCT_BUNDLE_IDENTIFIER = JetBrains.CMPUIKitUtilsTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LauncherHost.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/LauncherHost"; - }; - name = Release; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -652,15 +521,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 99AEE05C2DCC020200AAC8AE /* Build configuration list for PBXNativeTarget "Launcher-CI" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99AEE05D2DCC020200AAC8AE /* Debug */, - 99AEE05E2DCC020200AAC8AE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = 9975AAC12AEABB5600AF155F /* Project object */;