diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 0449bfa..8b02b81 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -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"