Enhanced simulator auto-detection for better reliability:
Device ID Support:
- Extracts both device name and UUID from simulator list
- Uses device ID (UUID) for xcodebuild destination when available
- More reliable than device name matching
- Falls back to device name if ID not available
Detection Improvements:
- Better parsing of simulator list output
- Handles edge cases where device name might not match exactly
- Logs both device name and ID for debugging
Fixes:
- Device not found: Using UUID ensures exact device matching
- Auto-detection: More robust extraction of device information
- Build reliability: Device ID is more reliable than name matching
Result: Script should now correctly auto-detect and use available iPhone simulators
Fixed build script to always open Simulator app window:
Simulator Visibility:
- Always opens Simulator app window after booting
- Ensures window is visible even if simulator was already booted
- Provides visual feedback that simulator is running
Boot Flow:
- If already booted: opens Simulator window immediately
- If booting: boots device, then opens Simulator window
- If boot fails: opens Simulator app for manual selection
Fixes:
- Simulator window now always appears after build
- User can see simulator even if it was already running
- Better visual feedback during build process
Result: Simulator window is now always visible after build completes
Enhanced simulator boot logic for better reliability:
Boot Detection:
- More robust check for already-booted simulators
- Uses grep with case-insensitive matching
- Verifies boot status after manual Simulator app opening
Error Handling:
- Shows actual boot command output (removed 2>/dev/null)
- Adds 3-second wait after successful boot for initialization
- Verifies boot status after opening Simulator app manually
- Continues with build even if boot verification fails
Fixes:
- Simulator boot detection now works correctly
- Better error messages when boot fails
- Handles edge cases where simulator is already booted
Result: Build script now reliably detects and boots simulators
Fixed simulator auto-detection to extract device name correctly:
Simulator Detection:
- Fixed sed command to extract device name (not UUID)
- Pattern: extracts text before first parenthesis
- Handles whitespace correctly with xargs
Example:
- Input: ' iPhone 17 Pro (UUID) (Status)'
- Output: 'iPhone 17 Pro'
Result: Build script now correctly detects and uses available iPhone simulators
Fixed build script to automatically detect and use available simulators:
Simulator Detection:
- Auto-detects first available iPhone simulator if none specified
- Falls back to generic destination if no iPhones found
- Lists available devices in error messages
Build Destination:
- Uses specific device name when available
- Falls back to generic destination for compatibility
- Handles both named devices and generic destinations
Fixes:
- No longer hardcodes 'iPhone 15 Pro' (which may not exist)
- Works with any available iPhone simulator
- Better error messages showing available devices
Usage:
- ./scripts/build-and-deploy.sh # Auto-detect
- ./scripts/build-and-deploy.sh 'iPhone 17' # Specify device
Result: Build script now works with any available simulator
Created standalone iOS test app structure matching android-test-app:
- Added ios-test-app directory with README, setup guide, and build scripts
- Created comprehensive iOS synchronization status documentation
- Documented API method gaps between Android (52) and iOS (9 methods)
- Added iOS setup guide for Vue 3 test app
New files:
- test-apps/ios-test-app/ - Standalone iOS test app structure
- docs/IOS_SYNC_STATUS.md - Detailed API comparison and status tracking
- docs/IOS_SYNC_SUMMARY.md - Summary of iOS synchronization work
- test-apps/daily-notification-test/docs/IOS_SETUP.md - Vue app iOS setup
iOS test environments are now ready for setup. Test apps need Xcode project
generation via Capacitor CLI or copying from ios/App.
Next steps: Generate Xcode projects and implement missing API methods.