From d36613f30b6308c1d876bca39c31168aedefa2f3 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Thu, 2 Nov 2023 12:26:23 +0100 Subject: [PATCH 1/2] feat(ios): sort simulators to get ios first --- .../src/tools/findMatchingSimulator.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/cli-platform-ios/src/tools/findMatchingSimulator.ts b/packages/cli-platform-ios/src/tools/findMatchingSimulator.ts index 811be5c5d..7249e8d70 100644 --- a/packages/cli-platform-ios/src/tools/findMatchingSimulator.ts +++ b/packages/cli-platform-ios/src/tools/findMatchingSimulator.ts @@ -53,8 +53,14 @@ function findMatchingSimulator( let match; let fallbackMatch; - for (const versionDescriptor in devices) { - const device = devices[versionDescriptor]; + const sortedDevices = Object.fromEntries( + Object.entries(devices).sort( + (a, b) => Number(b[0].includes('iOS')) - Number(a[0].includes('iOS')), + ), + ); + + for (const versionDescriptor in sortedDevices) { + const device = sortedDevices[versionDescriptor]; let version = versionDescriptor; if (/^com\.apple\.CoreSimulator\.SimRuntime\./g.test(version)) { From 9bd644535a7c6d1d818caad6d5864c064d60b00f Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Thu, 2 Nov 2023 14:03:11 +0100 Subject: [PATCH 2/2] feat: add tests --- .../__tests__/findMatchingSimulator.test.ts | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/packages/cli-platform-ios/src/tools/__tests__/findMatchingSimulator.test.ts b/packages/cli-platform-ios/src/tools/__tests__/findMatchingSimulator.test.ts index b4e7348c7..0dd03dcd0 100644 --- a/packages/cli-platform-ios/src/tools/__tests__/findMatchingSimulator.test.ts +++ b/packages/cli-platform-ios/src/tools/__tests__/findMatchingSimulator.test.ts @@ -1064,4 +1064,54 @@ describe('findMatchingSimulator', () => { version: 'tvOS 11.2', }); }); + + it('should sort simulator to get iOS ones first', () => { + expect( + findMatchingSimulator({ + devices: { + 'com.apple.CoreSimulator.SimRuntime.tvOS-11-2': [ + { + state: 'Shutdown', + availability: '(available)', + name: 'Apple TV', + udid: '816C30EA-38EA-41AC-BFDA-96FB632D522E', + }, + { + state: 'Shutdown', + availability: '(available)', + name: 'Apple TV 4K', + udid: 'BCBB7E4B-D872-4D61-BC61-7C9805551075', + }, + { + state: 'Shutdown', + availability: '(available)', + name: 'Apple TV 4K (at 1080p)', + udid: '1DE12308-1C14-4F0F-991E-A3ADC41BDFFC', + }, + ], + 'com.apple.CoreSimulator.SimRuntime.iOS-16-2': [ + { + lastBootedAt: '2023-05-09T11:08:32Z', + udid: '54B1D3DE-A943-4867-BA6A-B82BFE3A7904', + availability: '(available)', + state: 'Shutdown', + name: 'iPhone 14', + }, + { + lastBootedAt: '2023-04-06T12:34:01Z', + udid: '816A7D47-A205-4F57-AE19-E5CB842B6304', + availability: '(available)', + state: 'Shutdown', + name: 'iPhone 14 Plus', + }, + ], + }, + }), + ).toEqual({ + udid: '54B1D3DE-A943-4867-BA6A-B82BFE3A7904', + name: 'iPhone 14', + state: 'Shutdown', + version: 'iOS 16.2', + }); + }); });