macOS 14 arm64 (20250527) Image Update -- simulator fail
Description
I am using macos-latest image and my tests that run simulator are hanging after the update from macOS 14.7.5 to macOS 14.7.6 ...
Platforms affected
- [ ] Azure DevOps
- [x] GitHub Actions - Standard Runners
- [ ] GitHub Actions - Larger Runners
Runner images affected
- [ ] Ubuntu 22.04
- [ ] Ubuntu 24.04
- [ ] macOS 13
- [ ] macOS 13 Arm64
- [x] macOS 14
- [x] macOS 14 Arm64
- [x] macOS 15
- [ ] macOS 15 Arm64
- [ ] Windows Server 2019
- [ ] Windows Server 2022
- [ ] Windows Server 2025
Image version and build link
https://github.com/actions/runner-images/releases/tag/macos-14-arm64%2F20250527.1547
Is it regression?
https://github.com/actions/runner-images/releases/tag/macos-14%2F20250513.1230
Expected behavior
simulator should launch...
Actual behavior
it just hangs
Repro steps
from claude
Title: "xcodebuild test-without-building hangs in macos-14-arm64/20250527.1547" Working version: 20250505.1431 Broken version: 20250527.1547 Evidence: Simulator boots fine but xcodebuild never proceeds to test execution
macos 15 latest failed too. I'm using xcode 16.2. Going to try 16.3
Hi @salami - We will start investigating on this issue and will update you accordingly. Can you please share the workflow run you have tried for this issue.
It fails on the xcodebuild test-without-building step. The output shows this and then no more output:
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:iOS Simulator, arch:arm64, id:3C9294A3-76A1-49A2-B43C-8E7A4B32AA23, OS:18.2, name:iPhone 16 }
{ platform:iOS Simulator, arch:x86_64, id:3C9294A3-76A1-49A2-B43C-8E7A4B32AA23, OS:18.2, name:iPhone 16 }
workflow:
name: Manual UI Tests
on:
workflow_call:
inputs:
branch:
description: 'sdk branch'
required: true
type: string
revision:
description: 'sdk commit SHA (optional - will fetch latest if not provided)'
required: false
type: string
workflow_dispatch:
inputs:
branch:
description: 'sdk branch'
required: true
default: 'main'
type: string
jobs:
run-tests:
runs-on: macos-15 # or macos-latest
steps:
- uses: actions/checkout@v3
- name: Get latest revision if not provided
id: get-rev
if: ${{ !inputs.revision }}
run: |
REVISION=$(git ls-remote https://github.com/private-org/private-repo ${{ inputs.branch }} | cut -f 1)
echo "revision=$REVISION" >> $GITHUB_OUTPUT
echo "Latest revision for branch ${{ inputs.branch }}: $REVISION"
- name: Update sdk requirement in pbxproj to use specified branch and commit
run: |
# Use provided revision or fetched revision
REVISION="${{ inputs.revision || steps.get-rev.outputs.revision }}"
# Find pbxproj file path
PBXPROJ_PATH=./testproject.xcodeproj/project.pbxproj
# Use sed to replace branch requirement with exact revision
perl -i -0pe 's/(repositoryURL = "https:\/\/github.com\/private-org\/private-repo";\s*requirement = \{)[^}]*(};)/\1\n\t\t\t\trevision = "'$REVISION'";\n\t\t\t\tkind = revision;\n\t\t\t\2/s' "$PBXPROJ_PATH"
# Output changes
grep -A5 "private-org/private-repo" "$PBXPROJ_PATH";
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.3' # or 16.2
- name: Check Xcode version
run: xcodebuild -version
- name: Build project
run: |
xcodebuild build-for-testing \
-workspace testproject.xcworkspace \
-scheme "testproject" \
-destination "platform=iOS Simulator,name=iPhone 16,OS=18.2" \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO \
-allowProvisioningUpdates
- name: Run tests with retry logic
run: |
# Function to run tests
run_tests() {
xcodebuild test-without-building \
-workspace testproject.xcworkspace \
-scheme "testproject" \
-testPlan "testproject" \
-destination "platform=iOS Simulator,name=iPhone 16,OS=18.2" \
-disableAutomaticPackageResolution \
-skipPackageUpdates \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO
}
# Retry logic with 3 attempts
for attempt in {1..3}; do
echo "Test attempt $attempt of 3..."
if run_tests; then
echo "✅ Tests passed on attempt $attempt"
exit 0
else
echo "❌ Tests failed on attempt $attempt"
if [ $attempt -eq 3 ]; then
echo "All test attempts failed"
exit 1
else
echo "Retrying in 10 seconds..."
sleep 10
fi
fi
done
- name: Collect test results and logs
if: always()
run: |
echo "=== Test Results Summary ==="
find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult" -type d | head -5
# Find the most recent test result bundle
LATEST_RESULT=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult" -type d | sort -t/ -k9 -r | head -1)
if [ -n "$LATEST_RESULT" ]; then
echo "Latest test result: $LATEST_RESULT"
# Extract test summary (if xcrun supports it)
if command -v xcrun >/dev/null 2>&1; then
echo "=== Test Summary ==="
xcrun xcresulttool get test-results summary --path "$LATEST_RESULT" || echo "Could not extract test summary"
fi
fi
- name: Upload xcresult bundle
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-xcresult
path: |
~/Library/Developer/Xcode/DerivedData/**/**.xcresult
retention-days: 3
Is there any way I can do a run using macOS 14.7.5 ? That way we could know for sure whether this is the difference between successful and failed runs.
Hi @salami , I have executed your workflow on macOS-15 and macOS-14 runner images. All runs completed successfully within 5-10 minutes. Please find the execution results and the corresponding test-result for xcodebuild test-without-building step attached for your review.
Thank you for investigating. I just ran it again, and... it WORKED! I don't know what happened... maybe things were taking longer than normal and I just didn't wait long enough. Not sure.
In any case I really appreciate you taking the time to run through this. Hopefully all is good now! Thanks!