Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1d65427
ci: run tvOS and watchOS integration tests (#1216)
mykola-mokhnach Aug 19, 2026
b53bb8f
feat: Add watchOS support to the TS driver, functional tests, and rel…
mykola-mokhnach Aug 20, 2026
be24d51
chore(release): 16.5.0 [skip ci]
semantic-release-bot Aug 20, 2026
ce5a9e8
fix: add watchOS assets to GitHub release artifacts (#1219)
eglitise Aug 20, 2026
b3e0aa6
chore(release): 16.5.1 [skip ci]
semantic-release-bot Aug 20, 2026
bf23ebb
ci: add tvOS matrix entries and bump min Xcode/OS versions for tvOS a…
mykola-mokhnach Aug 21, 2026
c6dcf03
feat: Add MJPEG screenshot streaming support to watchOS (#1220)
mykola-mokhnach Aug 22, 2026
d91d054
chore(release): 16.6.0 [skip ci]
semantic-release-bot Aug 22, 2026
cd741c5
feat: unify HTTP server across iOS/tvOS/watchOS on Network.framework …
mykola-mokhnach Aug 22, 2026
c279b4c
chore(release): 16.7.0 [skip ci]
semantic-release-bot Aug 22, 2026
c951a91
fix: return W3C-compliant JSON error for unmatched routes (#1223)
mykola-mokhnach Aug 23, 2026
893c84f
chore(release): 16.7.1 [skip ci]
semantic-release-bot Aug 23, 2026
cf4bb2b
fix: harden FBHTTPServer/FBTCPSocket against races and protocol gaps …
mykola-mokhnach Aug 24, 2026
ec76a43
chore(release): 16.7.2 [skip ci]
semantic-release-bot Aug 24, 2026
f99b011
fix: let /status, /screenshot, and DELETE /session API methods to byp…
mykola-mokhnach Aug 24, 2026
a360869
chore(release): 16.7.3 [skip ci]
semantic-release-bot Aug 24, 2026
cd829eb
feat: bound accessibility snapshot requests to avoid indefinite hangs…
mykola-mokhnach Aug 24, 2026
5eea025
chore(release): 16.8.0 [skip ci]
semantic-release-bot Aug 24, 2026
9921813
deprecate: mark /calibrate endpoint as deprecated (#1225)
mykola-mokhnach Aug 24, 2026
5a48001
Merge upstream appium/WebDriverAgent master (v16.8.0)
Timo972 Aug 25, 2026
bdf7d45
fix: address session-teardown races found in merge review
Timo972 Aug 25, 2026
c5fd809
fix: harden FBHTTPServer request framing
Timo972 Aug 26, 2026
903e8f6
fix: bound completed header blocks too, not just incomplete ones
Timo972 Aug 26, 2026
026b1f5
fix: restore transport bounds lost in the FBHTTPServer/MJPEG rewrite
Timo972 Aug 26, 2026
4f5cba8
Merge origin/master (PR #27 thread-safety hardening) into the upstrea…
Timo972 Aug 26, 2026
ad3f6a2
fix: treat the incomplete-request timeout as an idle bound during the…
Timo972 Aug 26, 2026
bd3b244
fix: response backpressure, header-name validation, testmanagerd fall…
Timo972 Aug 26, 2026
e490354
fix: duplicate framing headers, stale session admission, send-failure…
Timo972 Aug 26, 2026
0e6a58e
fix: guard stale teardown by generation; reject colonless header lines
Timo972 Aug 26, 2026
c842a2a
fix: address upstream review feedback on the framing hardening
Timo972 Aug 26, 2026
42c7dd3
fix: count overlapping teardowns; close the reaper-vs-pipelining race
Timo972 Aug 26, 2026
cab0681
fix: port the capture stream sessions to the Network.framework socket…
Timo972 Aug 26, 2026
f1485b4
fix: keep server-key routes off the funnel; claim the generation befo…
Timo972 Aug 26, 2026
6643701
chore: make comments more concise
Timo972 Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 61 additions & 27 deletions .github/workflows/functional-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,43 @@ jobs:
fail-fast: false
matrix:
test_targets:
# https://github.com/actions/runner-images/issues/14404
# iOS
- HOST_OS: 'xcode-27'
XCODE_VERSION: '27.0-beta'
IOS_VERSION: '27.0'
IOS_MODEL: 'iPhone 17'
- HOST_OS: 'macos-26'
XCODE_VERSION: '26.4'
IOS_VERSION: '26.4'
IOS_MODEL: 'iPhone 17'
PLATFORM_NAME: 'iOS'
PLATFORM_VERSION: '27.0'
DEVICE_NAME: 'iPhone 17'
- HOST_OS: 'macos-15'
XCODE_VERSION: '16.4'
IOS_VERSION: '18.5'
IOS_MODEL: 'iPhone 16 Plus'
- HOST_OS: 'macos-14'
XCODE_VERSION: '15.4'
IOS_VERSION: '17.5'
IOS_MODEL: 'iPhone 15 Plus'
PLATFORM_NAME: 'iOS'
PLATFORM_VERSION: '18.5'
DEVICE_NAME: 'iPhone 16 Plus'

# https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
# tvOS
- HOST_OS: 'xcode-27'
XCODE_VERSION: '27.0-beta'
PLATFORM_NAME: 'tvOS'
PLATFORM_VERSION: '27.0'
DEVICE_NAME: 'Apple TV 4K (3rd generation)'
- HOST_OS: 'macos-15'
XCODE_VERSION: '16.4'
PLATFORM_NAME: 'tvOS'
PLATFORM_VERSION: '18.5'
DEVICE_NAME: 'Apple TV 4K (3rd generation)'

# WatchOS
- HOST_OS: 'xcode-27'
XCODE_VERSION: '27.0-beta'
PLATFORM_NAME: 'watchOS'
PLATFORM_VERSION: '27.0'
DEVICE_NAME: 'Apple Watch Series 11 (46mm)'
- HOST_OS: 'macos-15'
XCODE_VERSION: '16.4'
PLATFORM_NAME: 'watchOS'
PLATFORM_VERSION: '11.5'
DEVICE_NAME: 'Apple Watch Series 10 (46mm)'

# https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
runs-on: ${{matrix.test_targets.HOST_OS}}
steps:
- uses: actions/checkout@v7
Expand All @@ -62,24 +80,40 @@ jobs:
mkdir -p ./Resources/WebDriverAgent.bundle
name: Install dev dependencies

- name: Prepare iOS simulator
if: ${{ matrix.test_targets.XCODE_VERSION != '27.0-beta' }}
env:
DEVICE_NAME: ${{matrix.test_targets.IOS_MODEL}}
PLATFORM_VERSION: ${{matrix.test_targets.IOS_VERSION}}
- run: xcrun simctl list devices available
name: List Installed Simulators
- run: xcrun simctl list runtimes
name: List Runtimes
- name: Start Simulator UI
# Xcode 27 replaced Simulator.app with DeviceHub.app, one directory level up from
# Simulator.app's location (Contents/Applications instead of Contents/Developer/Applications).
run: |
xcrun simctl list devices available
open -Fn "$(xcode-select -p)/Applications/Simulator.app"
udid=$(xcrun simctl list devices available -j | \
node -p "Object.entries(JSON.parse(fs.readFileSync(0)).devices).filter((x) => x[0].includes('$PLATFORM_VERSION'.replace('.', '-'))).reduce((acc, x) => [...acc, ...x[1]], []).find(({name}) => name === '$DEVICE_NAME').udid")
xcrun simctl bootstatus $udid -b
xcrun simctl shutdown $udid
if [ "${PLATFORM_VERSION%%.*}" -ge 27 ]; then
open -Fn "$(xcode-select --print-path)/../Applications/DeviceHub.app"
else
open -Fn "$(xcode-select --print-path)/Applications/Simulator.app"
fi
env:
PLATFORM_VERSION: ${{matrix.test_targets.PLATFORM_VERSION}}
- name: Prepare simulator
id: prepareSimulator
uses: futureware-tech/simulator-action@v5
with:
model: '${{matrix.test_targets.DEVICE_NAME}}'
os: '${{matrix.test_targets.PLATFORM_NAME}}'
os_version: '${{matrix.test_targets.PLATFORM_VERSION}}'
shutdown_after_job: false
wait_for_boot: true
- name: Finalize simulator boot
run: node Scripts/ci/wait-for-simulator-idle.mjs "${{steps.prepareSimulator.outputs.udid}}"

- run: npm run e2e-test
name: Run functional tests
env:
CI: true
_FORCE_LOGS: 1
_LOG_TIMESTAMP: 1
DEVICE_NAME: ${{matrix.test_targets.IOS_MODEL}}
PLATFORM_VERSION: ${{matrix.test_targets.IOS_VERSION}}
DEVICE_NAME: ${{matrix.test_targets.DEVICE_NAME}}
PLATFORM_NAME: ${{matrix.test_targets.PLATFORM_NAME}}
PLATFORM_VERSION: ${{matrix.test_targets.PLATFORM_VERSION}}
SIMULATOR_UDID: ${{steps.prepareSimulator.outputs.udid}}
5 changes: 4 additions & 1 deletion .github/workflows/publish.js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ env:
# Available destination for simulators depends on Xcode version.
DESTINATION_SIM: platform=iOS Simulator,name=iPhone 17
DESTINATION_SIM_TVOS: platform=tvOS Simulator,name=Apple TV 4K (3rd generation)
DESTINATION_SIM_WATCHOS: platform=watchOS Simulator,name=Apple Watch Series 11 (46mm)

jobs:
build_matrix:
Expand All @@ -43,7 +44,9 @@ jobs:
{"name": "iOS Simulator arm64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner", "destination": "${{ env.DESTINATION_SIM }}", "derived_data_path": "appium_wda_ios_sim_arm64", "simulator_name": "Debug-iphonesimulator", "wd": "appium_wda_ios_sim_arm64/Build/Products/Debug-iphonesimulator", "zip_name": "WebDriverAgentRunner-Build-Sim-arm64.zip", "artifact_name": "WebDriverAgentRunner-Build-Sim-arm64", "archs": "arm64"},
{"name": "iOS Simulator x86_64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner", "destination": "${{ env.DESTINATION_SIM }}", "derived_data_path": "appium_wda_ios_sim_x86_64", "simulator_name": "Debug-iphonesimulator", "wd": "appium_wda_ios_sim_x86_64/Build/Products/Debug-iphonesimulator", "zip_name": "WebDriverAgentRunner-Build-Sim-x86_64.zip", "artifact_name": "WebDriverAgentRunner-Build-Sim-x86_64", "archs": "x86_64"},
{"name": "tvOS Simulator arm64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner_tvOS", "destination": "${{ env.DESTINATION_SIM_TVOS }}", "derived_data_path": "appium_wda_tvos_sim_arm64", "simulator_name": "Debug-appletvsimulator", "wd": "appium_wda_tvos_sim_arm64/Build/Products/Debug-appletvsimulator", "zip_name": "WebDriverAgentRunner_tvOS-Build-Sim-arm64.zip", "artifact_name": "WebDriverAgentRunner_tvOS-Build-Sim-arm64", "archs": "arm64"},
{"name": "tvOS Simulator x86_64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner_tvOS", "destination": "${{ env.DESTINATION_SIM_TVOS }}", "derived_data_path": "appium_wda_tvos_sim_x86_64", "simulator_name": "Debug-appletvsimulator", "wd": "appium_wda_tvos_sim_x86_64/Build/Products/Debug-appletvsimulator", "zip_name": "WebDriverAgentRunner_tvOS-Build-Sim-x86_64.zip", "artifact_name": "WebDriverAgentRunner_tvOS-Build-Sim-x86_64", "archs": "x86_64"}
{"name": "tvOS Simulator x86_64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner_tvOS", "destination": "${{ env.DESTINATION_SIM_TVOS }}", "derived_data_path": "appium_wda_tvos_sim_x86_64", "simulator_name": "Debug-appletvsimulator", "wd": "appium_wda_tvos_sim_x86_64/Build/Products/Debug-appletvsimulator", "zip_name": "WebDriverAgentRunner_tvOS-Build-Sim-x86_64.zip", "artifact_name": "WebDriverAgentRunner_tvOS-Build-Sim-x86_64", "archs": "x86_64"},
{"name": "watchOS Simulator arm64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner_watchOS", "destination": "${{ env.DESTINATION_SIM_WATCHOS }}", "derived_data_path": "appium_wda_watchos_sim_arm64", "simulator_name": "Debug-watchsimulator", "wd": "appium_wda_watchos_sim_arm64/Build/Products/Debug-watchsimulator", "zip_name": "WebDriverAgentRunner_watchOS-Build-Sim-arm64.zip", "artifact_name": "WebDriverAgentRunner_watchOS-Build-Sim-arm64", "archs": "arm64"},
{"name": "watchOS Simulator x86_64", "build_script": "build-sim.sh", "scheme": "WebDriverAgentRunner_watchOS", "destination": "${{ env.DESTINATION_SIM_WATCHOS }}", "derived_data_path": "appium_wda_watchos_sim_x86_64", "simulator_name": "Debug-watchsimulator", "wd": "appium_wda_watchos_sim_x86_64/Build/Products/Debug-watchsimulator", "zip_name": "WebDriverAgentRunner_watchOS-Build-Sim-x86_64.zip", "artifact_name": "WebDriverAgentRunner_watchOS-Build-Sim-x86_64", "archs": "x86_64"}
]
MATRIX_JSON
echo "matrix=$(cat matrix.json)" >> $GITHUB_OUTPUT
Expand Down
46 changes: 28 additions & 18 deletions .github/workflows/wda-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@ concurrency:
cancel-in-progress: true

env:
MIN_VM_IMAGE: macos-14
MIN_XCODE_VERSION: "15.4"
MIN_PLATFORM_VERSION: "17.5"
MIN_TV_PLATFORM_VERSION: "17.5"
MIN_VM_IMAGE: macos-15
MIN_XCODE_VERSION: "16.4"
MIN_PLATFORM_VERSION: "18.5"
MIN_TV_PLATFORM_VERSION: "18.5"
MIN_TV_DEVICE_NAME: "Apple TV 4K (3rd generation)"
MIN_IPHONE_DEVICE_NAME: "iPhone 15 Plus"
MIN_WATCH_PLATFORM_VERSION: "11.5"
MIN_WATCH_DEVICE_NAME: "Apple Watch Series 10 (46mm)"
MIN_IPHONE_DEVICE_NAME: "iPhone 16"
MIN_IPAD_DEVICE_NAME: "iPad Air 13-inch (M2)"
MAX_VM_IMAGE: xcode-27
MAX_XCODE_VERSION: "27.0-beta"
Expand Down Expand Up @@ -106,18 +108,22 @@ jobs:
run: |
cat <<'MATRIX_JSON' | jq -c . > matrix.json
[
{"name": "iphone_int_test_1_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_1", "dest": "iphone", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_2_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_2", "dest": "iphone", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_3_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_3", "dest": "iphone", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_1_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_1", "dest": "ipad", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_2_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_2", "dest": "ipad", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_3_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_3", "dest": "ipad", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_1_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_1", "dest": "iphone", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_2_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_2", "dest": "iphone", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_3_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_3", "dest": "iphone", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_1_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_1", "dest": "ipad", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_2_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_2", "dest": "ipad", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_3_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_3", "dest": "ipad", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"}
{"name": "iphone_int_test_1_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_1", "dest": "iphone", "sdk": "sim", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_2_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_2", "dest": "iphone", "sdk": "sim", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_3_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_3", "dest": "iphone", "sdk": "sim", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_1_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_1", "dest": "ipad", "sdk": "sim", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_2_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_2", "dest": "ipad", "sdk": "sim", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_3_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "int_test_3", "dest": "ipad", "sdk": "sim", "iphone_model": "${{ env.MAX_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MAX_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MAX_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_1_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_1", "dest": "iphone", "sdk": "sim", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_2_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_2", "dest": "iphone", "sdk": "sim", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "iphone_int_test_3_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_3", "dest": "iphone", "sdk": "sim", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_1_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_1", "dest": "ipad", "sdk": "sim", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_2_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_2", "dest": "ipad", "sdk": "sim", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "ipad_int_test_3_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "int_test_3", "dest": "ipad", "sdk": "sim", "iphone_model": "${{ env.MIN_IPHONE_DEVICE_NAME }}", "ipad_model": "${{ env.MIN_IPAD_DEVICE_NAME }}", "ios_version": "${{ env.MIN_PLATFORM_VERSION }}"},
{"name": "tv_int_test_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "tv_int_test", "dest": "tv", "sdk": "tv_sim", "tv_model": "${{ env.MAX_TV_DEVICE_NAME }}", "tv_version": "${{ env.MAX_TV_PLATFORM_VERSION }}"},
{"name": "tv_int_test_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "tv_int_test", "dest": "tv", "sdk": "tv_sim", "tv_model": "${{ env.MIN_TV_DEVICE_NAME }}", "tv_version": "${{ env.MIN_TV_PLATFORM_VERSION }}"},
{"name": "watch_int_test_Max_Xcode", "vm_image": "${{ env.MAX_VM_IMAGE }}", "xcode_version": "${{ env.MAX_XCODE_VERSION }}", "action": "watch_int_test", "dest": "watch", "sdk": "watch_sim", "watch_model": "${{ env.MAX_WATCH_DEVICE_NAME }}", "watch_version": "${{ env.MAX_WATCH_PLATFORM_VERSION }}"},
{"name": "watch_int_test_Min_Xcode", "vm_image": "${{ env.MIN_VM_IMAGE }}", "xcode_version": "${{ env.MIN_XCODE_VERSION }}", "action": "watch_int_test", "dest": "watch", "sdk": "watch_sim", "watch_model": "${{ env.MIN_WATCH_DEVICE_NAME }}", "watch_version": "${{ env.MIN_WATCH_PLATFORM_VERSION }}"}
]
MATRIX_JSON
echo "matrix=$(cat matrix.json)" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -234,10 +240,14 @@ jobs:
ACTION: ${{ matrix.config.action }}
DEST: ${{ matrix.config.dest }}
TARGET: lib
SDK: sim
SDK: ${{ matrix.config.sdk }}
IPHONE_MODEL: ${{ matrix.config.iphone_model }}
IPAD_MODEL: ${{ matrix.config.ipad_model }}
IOS_VERSION: ${{ matrix.config.ios_version }}
TV_MODEL: ${{ matrix.config.tv_model }}
TV_VERSION: ${{ matrix.config.tv_version }}
WATCH_MODEL: ${{ matrix.config.watch_model }}
WATCH_VERSION: ${{ matrix.config.watch_version }}
SKIP_TESTING: ${{ startsWith(matrix.config.ios_version, '27.') && matrix.config.action == 'int_test_3' && 'IntegrationTests_3/FBForceTouchTests/testForceTap' || '' }}
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 600
FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 2
Loading
Loading