Appium doesn't send the correct deviceName to xcode

my caps are:

                 caps = {

                platformName: "iOs",
                platformVersion: '9.3',
                deviceName: 'iPhone 4s',
                browserName: 'Safari'

              }

But I get the following error:

    info: --> POST /wd/hub/session {"desiredCapabilities":{"platformName":"iOs","platformVersion":"9.3","deviceName":"iPhone 4s","browserName":"Safari"}}
    info: Client User-Agent string: appium/ruby_lib/8.1.0
    info: [debug] Configuring Safari session
    info: [debug] We're on iOS8+ so not copying mobile safari app
    info: [debug] Creating new appium session 2f44434b-f5ec-4406-9887-06d721bc4e37
    info: [debug] Removing any remaining instruments sockets
    info: [debug] Cleaned up instruments socket /tmp/instruments_sock
    info: [debug] Setting Xcode version
    info: [debug] Xcode version set to 7.3.1
    info: [debug] Setting iOS SDK Version
    info: [debug] iOS SDK Version set to 9.3
    info: [debug] Checking whether instruments supports our device string
    info: [debug] Getting list of devices instruments supports
    info: [debug] Instruments is at: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments
    info: [debug] Getting device string from opts: {"forceIphone":false,"forceIpad":false,"xcodeVersion":"7.3.1","iOSSDKVersion":"9.3","deviceName":"iPhone 4s","platformVersion":"9.3"}
    info: [debug] fixDevice is on
    info: [debug] Final device string is: 'iPhone (9.3 Simulator)'
    error: Could not find a device to launch. You requested 'iPhone (9.3 Simulator)', but the available devices were: ["iPad 2 (9.3) [3371106B-8E82-4A9B-A057-97FE20F52D8A] (Simulator)","iPad Air (9.3) [14580F59-2CEF-435D-A644-AA7E5D9E3269] (Simulator)","iPad Air 2 (9.3) [47FB650B-7C80-49CF-A8EC-FFFBF10D7218] (Simulator)","iPad Pro (9.3) [41469EA6-91CD-4005-A863-483045DE53AA] (Simulator)","iPad Retina (9.3) [F413A7BC-0A0E-442D-B0B4-620FDA0C5A07] (Simulator)","iPhone 4s (9.3) [A9646893-B252-4C12-9607-B6FC07EA6B64] (Simulator)","iPhone 5 (9.3) [58FA6AE2-B2A2-4D68-B975-ABA026EA1AD5] (Simulator)","iPhone 5s (9.3) [F6637F75-39F5-46A7-9C30-ECB6079D39BE] (Simulator)","iPhone 6 (9.3) [9FCA3C9D-D635-48DD-9BD1-63FCC66A559B] (Simulator)","iPhone 6 Plus (9.3) [26DBD499-9170-4106-BBBD-D57AE2F4C642] (Simulator)","iPhone 6s (9.3) [7914547F-F6AE-4DFD-B54E-1239284657F9] (Simulator)","iPhone 6s (9.3) + Apple Watch - 38mm (2.2) [707E4F82-7DE2-4B0E-8B80-2CFBE122B434] (Simulator)","iPhone 6s Plus (9.3) [085B6150-D347-4AFF-9B54-7A11C9C868DE] (Simulator)","iPhone 6s Plus (9.3) + Apple Watch - 42mm (2.2) [5A30257C-8F96-4AFF-8634-52950F2A604A] (Simulator)"]

It seems that appium is editing my config to something that xcode doesn’t like. I am curious about “fixDevice is on” line. I’d like to turn it off to see if that fixes it but don’t know where to do it

Anybody knows?

appium server 1.4.6
ruby bindings: appium_lib (8.1.0, 8.0.2)
xcode 7.3.1

try setting

capabilities.setCapability(“udid”,strIOSUdid);

instead of deviceName

capabilities.setCapability(“deviceName”,strDeviceName);

udid works only for real devices

Im trying to use the simulator

I’m not seeing your app path. Maybe add that.

File f = new File(strIOSPath);
if(f.exists()) {capabilities.setCapability(“app”,strIOSPath);}
else{String strErrorMsg = “The IOS application path didn’t exists (”+strIOSPath+")";Reporter.log(""+strErrorMsg+"");Assert.fail(strErrorMsg);return null;}

Im using Safari, because is a default app doesn’t need it

What is your Xcode Version?

I kinda of remember that error when I upgraded to Xcode 8.2. If it 8.2 then you need to upgrade appium to 1.6.3.