Skip to content
25 changes: 21 additions & 4 deletions .github/workflows/ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,29 @@ jobs:
- name: Build and Test
env:
scheme: ${{ 'SDKHostApp' }}
platform: ${{ 'iOS Simulator' }}
os: ${{ '16.2' }}
device: ${{ 'iPhone 13' }}
run: |
# xcrun xctrace returns via stderr, not the expected stdout (see https://developer.apple.com/forums/thread/663959)

if [ $scheme = default ]; then scheme=$(cat default); fi

# Determine file to build: .xcworkspace or .xcodeproj
if [ "`ls -A | grep -i \\.xcworkspace\$`" ]; then filetype_parameter="workspace" && file_to_build="`ls -A | grep -i \\.xcworkspace\$`"; else filetype_parameter="project" && file_to_build="`ls -A | grep -i \\.xcodeproj\$`"; fi

# Clean up whitespace
file_to_build=`echo $file_to_build | awk '{$1=$1;print}'`
xcodebuild test -scheme "$scheme" -"$filetype_parameter" "$file_to_build" -destination "platform=$platform,OS=$os,name=$device"

# Find first available simulator
device_name=$(xcrun simctl list devices available | grep "iPhone" | head -n 1 | sed -E 's/^[[:space:]]*([^()]+)[[:space:]]*\(.*$/\1/' | awk '{$1=$1; print}')

if [ -z "$device_name" ]; then
echo "❌ Failed to find a valid iOS device."
exit 1
fi

echo "📱 Using device: $device_name"

# Build and run the tests
xcodebuild test \
-scheme "$scheme" \
-"$filetype_parameter" "$file_to_build" \
-destination "platform=iOS Simulator,name=$device_name"