diff --git a/.github/workflows/ios-e2e-test.yml b/.github/workflows/ios-e2e-test.yml index e4688abcad..1a7e09b2ca 100644 --- a/.github/workflows/ios-e2e-test.yml +++ b/.github/workflows/ios-e2e-test.yml @@ -23,14 +23,17 @@ on: jobs: build: - name: 🏗️ Build E2E ipa - runs-on: macos-15 + name: 🏗️ Build E2E ipa (Xcode ${{ matrix.config.xcode }}) + runs-on: macos-${{ matrix.config.macos }} timeout-minutes: 60 env: WORKING_DIRECTORY: example concurrency: - group: ios-e2e-${{ github.ref }} + group: ios-e2e-${{ matrix.config.xcode }}-${{ github.ref }} cancel-in-progress: true + strategy: + matrix: + config: [{ xcode: "16.4", macos: 15 }, { xcode: "26.1", macos: 26 }] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -39,7 +42,7 @@ jobs: cache: "yarn" - uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: "16.4" + xcode-version: ${{ matrix.config.xcode }} - name: Get Xcode version run: xcodebuild -version - name: Save yarn cache directory path @@ -64,7 +67,7 @@ jobs: uses: hendrikmuhs/ccache-action@v1.2 with: max-size: 1.5G - key: ${{ runner.os }}-ccache-e2e-ios + key: ${{ runner.os }}-xcode-${{ matrix.config.xcode }}-ccache-e2e-ios create-symlink: true - name: Setup ccache behavior run: | @@ -79,9 +82,9 @@ jobs: example/ios/Pods ~/Library/Caches/CocoaPods ~/.cocoapods - key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} + key: ${{ runner.os }}-xcode-${{ matrix.config.xcode }}-pods-${{ hashFiles('**/Podfile.lock') }} restore-keys: | - ${{ runner.os }}-pods- + ${{ runner.os }}-xcode-${{ matrix.config.xcode }}-pods- - name: Install pods working-directory: ${{ env.WORKING_DIRECTORY }}/ios run: export USE_CCACHE=1 && pod install || pod update --repo-update @@ -90,16 +93,16 @@ jobs: run: yarn build-example:ios - uses: actions/upload-artifact@v4 with: - name: ios-e2e-ipa + name: ios-e2e-ipa-xcode${{ matrix.config.xcode }} path: example/ios/build/Build/Products/Release-iphonesimulator/KeyboardControllerExample.app/** e2e-test: - name: ⚙️ Automated test cases (iOS-${{ matrix.devices.ios }}) + name: ⚙️ Automated test cases (iOS-${{ matrix.devices.ios }}, XCode-${{ matrix.devices.xcode }}) runs-on: macos-${{ matrix.devices.macos }} timeout-minutes: 90 env: WORKING_DIRECTORY: example concurrency: - group: ios-e2e-${{ matrix.devices.ios }}-${{ github.ref }} + group: ios-e2e-${{ matrix.devices.ios }}-${{ matrix.devices.xcode }}-${{ github.ref }} cancel-in-progress: true strategy: matrix: @@ -110,6 +113,7 @@ jobs: { ios: 17, xcode: "16.4", macos: 15, runtime: "17.5" }, { ios: 18, xcode: "16.4", macos: 15 }, { ios: 26, xcode: "16.4", macos: 26 }, + { ios: 26, xcode: "26.1", macos: 26 }, ] needs: build steps: @@ -117,7 +121,7 @@ jobs: - name: Download a single artifact uses: actions/download-artifact@v4 with: - name: ios-e2e-ipa + name: ios-e2e-ipa-xcode${{ matrix.devices.xcode }} path: example/ios/build/Build/Products/Release-iphonesimulator/KeyboardControllerExample.app/ - uses: maxim-lobanov/setup-xcode@v1 with: @@ -137,6 +141,8 @@ jobs: retry_interval: 60 - name: List all available simulators run: xcrun simctl list + - name: Update shared cache + run: xcrun simctl runtime dyld_shared_cache update --all - name: Install AppleSimulatorUtils run: brew tap wix/brew && brew install applesimutils - name: Save yarn cache directory path