Skip to content
28 changes: 17 additions & 11 deletions .github/workflows/ios-e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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: |
Expand All @@ -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
Expand All @@ -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:
Expand All @@ -110,14 +113,15 @@ 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:
- uses: actions/checkout@v4
- 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:
Expand All @@ -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
Expand Down
Loading