Skip to content

Run Compute in the UI test workflow (#929) #2397

Run Compute in the UI test workflow (#929)

Run Compute in the UI test workflow (#929) #2397

name: Compatibility tests
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
compatibility_tests_macos:
name: Execute compatibility tests for macOS
strategy:
fail-fast: false
matrix:
os: [macos-15]
xcode-version: ["26.3"]
release: [2024]
# Limit to self-hosted to reduce action cost
runs-on:
- self-hosted
- ${{ matrix.os }}
env:
OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts
OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1
OPENSWIFTUI_SWIFT_LOG: 0
OPENSWIFTUI_SWIFT_CRYPTO: 0
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
OPENSWIFTUI_USE_LOCAL_DEPS: 1
OPENSWIFTUI_LINK_TESTING: 1
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
- name: Setup Xcode
uses: OpenSwiftUIProject/setup-xcode@v2
with:
xcode-version: ${{ matrix.xcode-version }}
- name: Set up build environment
run: Scripts/CI/darwin_setup_build.sh
shell: bash
- name: Install xcbeautify
run: brew install xcbeautify
- name: Run compatibility tests on OpenSwiftUI + macOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
NSUnbufferedIO=YES swift test \
--disable-experimental-prebuilts \
--filter OpenSwiftUICompatibilityTests \
--build-path .build-compatibility-test-debug \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 0
- name: Run compatibility tests on SwiftUI + macOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
NSUnbufferedIO=YES swift test \
--disable-experimental-prebuilts \
--filter OpenSwiftUICompatibilityTests \
--build-path .build-compatibility-test-debug \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 1
compatibility_tests_ios:
name: Execute compatibility tests for iOS
strategy:
fail-fast: false
matrix:
os: [macos-15]
xcode-version: ["26.3"]
release: [2024]
ios-version: ["18.5"]
include:
- ios-version: "18.5"
ios-simulator-name: "iPhone 16 Pro"
# Limit to self-hosted to reduce action cost
runs-on:
- self-hosted
- ${{ matrix.os }}
env:
OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts
OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1
OPENSWIFTUI_SWIFT_LOG: 0
OPENSWIFTUI_SWIFT_CRYPTO: 0
OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }}
OPENSWIFTUI_SUPPORT_MULTI_PRODUCTS: 0
OPENSWIFTUI_USE_LOCAL_DEPS: 1
OPENSWIFTUI_LINK_TESTING: 1
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
- name: Setup Xcode
uses: OpenSwiftUIProject/setup-xcode@v2
with:
xcode-version: ${{ matrix.xcode-version }}
- name: Set up build environment
run: Scripts/CI/darwin_setup_build.sh
shell: bash
- name: Install xcbeautify
run: brew install xcbeautify
- name: Prepare isolated DerivedData
shell: bash
run: |
openswiftui_derived_data_path="${RUNNER_TEMP:-/tmp}/compatibility-ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}-openswiftui"
swiftui_derived_data_path="${RUNNER_TEMP:-/tmp}/compatibility-ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}-swiftui"
rm -rf "$openswiftui_derived_data_path" "$swiftui_derived_data_path"
mkdir -p "$openswiftui_derived_data_path" "$swiftui_derived_data_path"
echo "OPENSWIFTUI_DERIVED_DATA_PATH=$openswiftui_derived_data_path" >> "$GITHUB_ENV"
echo "SWIFTUI_DERIVED_DATA_PATH=$swiftui_derived_data_path" >> "$GITHUB_ENV"
- name: Run compatibility tests on OpenSwiftUI + iOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
# Xcode 26.3 + iOS 18.5 fails to launch arm64 SwiftPM package test
# runners with CoreSimulator codesigning errors; force the x86_64
# simulator slice until that launch path is fixed.
NSUnbufferedIO=YES xcodebuild -IDEPackageEnablePrebuilts=NO test \
-scheme OpenSwiftUI \
-configuration Debug \
-destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }},arch=x86_64" \
-only-testing:OpenSwiftUICompatibilityTests \
-derivedDataPath "$OPENSWIFTUI_DERIVED_DATA_PATH" \
-skipMacroValidation \
-skipPackagePluginValidation \
ONLY_ACTIVE_ARCH=YES \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 0
- name: Run compatibility tests on SwiftUI + iOS
run: |
set -o pipefail
# Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this.
# See the OpenSwiftUI iOS compatibility step above: force x86_64 to
# avoid the arm64 package test runner launch/codesigning failure.
NSUnbufferedIO=YES xcodebuild -IDEPackageEnablePrebuilts=NO test \
-scheme OpenSwiftUI \
-configuration Debug \
-destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }},arch=x86_64" \
-only-testing:OpenSwiftUICompatibilityTests \
-derivedDataPath "$SWIFTUI_DERIVED_DATA_PATH" \
-skipMacroValidation \
-skipPackagePluginValidation \
ONLY_ACTIVE_ARCH=YES \
2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified
env:
OPENSWIFTUI_COMPATIBILITY_TEST: 1
- name: Clean up isolated DerivedData
if: always()
shell: bash
run: |
if [[ -n "${OPENSWIFTUI_DERIVED_DATA_PATH:-}" ]]; then
rm -rf "$OPENSWIFTUI_DERIVED_DATA_PATH"
fi
if [[ -n "${SWIFTUI_DERIVED_DATA_PATH:-}" ]]; then
rm -rf "$SWIFTUI_DERIVED_DATA_PATH"
fi