Troubleshooting iOS application tests in AWS Device Farm - AWS Device Farm

Troubleshooting iOS application tests in AWS Device Farm

The following topic lists error messages that occur during the upload of iOS application tests and recommends workarounds to resolve each error.

Note

The instructions below are based on Linux x86_64 and Mac.

IOS_APP_UNZIP_FAILED

If you see the following message, follow these steps to fix the issue.

Warning

We could not open your application. Please verify that the file is valid and try again.

Make sure that you can unzip the application package without errors. In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    A valid iOS application package should produce output like the following:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_PAYLOAD_DIR_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the Payload directory inside your application. Please unzip your application, verify that the Payload directory is inside the package, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    If the iOS application package is valid, you will find the Payload directory inside the working directory.

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_APP_DIR_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the .app directory inside the Payload directory. Please unzip your application and then open the Payload directory, verify that the .app directory is inside the directory, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    If the iOS application package is valid, you will find an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example inside the Payload directory.

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_PLIST_FILE_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the Info.plist file inside the .app directory. Please unzip your application and then open the .app directory, verify that the Info.plist file is inside the directory, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    If the iOS application package is valid, you will find the Info.plist file inside the .app directory like AWSDeviceFarmiOSReferenceApp.app in our example.

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_CPU_ARCHITECTURE_VALUE_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the CPU architecture value in the Info.plist file. Please unzip your application and then open Info.plist file inside the .app directory, verify that the key "UIRequiredDeviceCapabilities" is specified, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    You should find the Info.plist file inside an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)
  3. To find the CPU architecture value, you can open Info.plist using Xcode or Python.

    For Python, you can install the biplist module by running the following command:

    $ pip install biplist
  4. Next, open Python and run the following command:

    import biplist info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist') print info_plist['UIRequiredDeviceCapabilities']

    A valid iOS application package should produce output like the following:

    ['armv7']

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_PLATFORM_VALUE_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the platform value in the Info.plist file. Please unzip your application and then open Info.plist file inside the .app directory, verify that the key "CFBundleSupportedPlatforms" is specified, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    You should find the Info.plist file inside an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)
  3. To find the platform value, you can open Info.plist using Xcode or Python.

    For Python, you can install the biplist module by running the following command:

    $ pip install biplist
  4. Next, open Python and run the following command:

    import biplist info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist') print info_plist['CFBundleSupportedPlatforms']

    A valid iOS application package should produce output like the following:

    ['iPhoneOS']

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_WRONG_PLATFORM_DEVICE_VALUE

If you see the following message, follow these steps to fix the issue.

Warning

We found the platform device value was wrong in the Info.plist file. Please unzip your application and then open Info.plist file inside the .app directory, verify that the value of the key "CFBundleSupportedPlatforms" does not contain the keyword "simulator", and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    You should find the Info.plist file inside an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)
  3. To find the platform value, you can open Info.plist using Xcode or Python.

    For Python, you can install the biplist module by running the following command:

    $ pip install biplist
  4. Next, open Python and run the following command:

    import biplist info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist') print info_plist['CFBundleSupportedPlatforms']

    A valid iOS application package should produce output like the following:

    ['iPhoneOS']

    If the iOS application is valid, the value should not contain the keyword simulator.

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_FORM_FACTOR_VALUE_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the form factor value in the Info.plist file. Please unzip your application and then open Info.plist file inside the .app directory, verify that the key "UIDeviceFamily" is specified, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    You should find the Info.plist file inside an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)
  3. To find the form factor value, you can open Info.plist using Xcode or Python.

    For Python, you can install the biplist module by running the following command:

    $ pip install biplist
  4. Next, open Python and run the following command:

    import biplist info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist') print info_plist['UIDeviceFamily']

    A valid iOS application package should produce output like the following:

    [1, 2]

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_PACKAGE_NAME_VALUE_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the package name value in the Info.plist file. Please unzip your application and then open Info.plist file inside the .app directory, verify that the key "CFBundleIdentifier" is specified, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    You should find the Info.plist file inside an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)
  3. To find the package name value, you can open Info.plist using Xcode or Python.

    For Python, you can install the biplist module by running the following command:

    $ pip install biplist
  4. Next, open Python and run the following command:

    import biplist info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist') print info_plist['CFBundleIdentifier']

    A valid iOS application package should produce output like the following:

    Amazon.AWSDeviceFarmiOSReferenceApp

    For more information, see Working with iOS tests in AWS Device Farm.

IOS_APP_EXECUTABLE_VALUE_MISSING

If you see the following message, follow these steps to fix the issue.

Warning

We could not find the executable value in the Info.plist file. Please unzip your application and then open Info.plist file inside the .app directory, verify that the key "CFBundleExecutable" is specified, and try again.

In the following example, the package's name is AWSDeviceFarmiOSReferenceApp.ipa.

  1. Copy your application package to your working directory, and then run the following command:

    $ unzip AWSDeviceFarmiOSReferenceApp.ipa
  2. After you successfully unzip the package, you can find the working directory tree structure by running the following command:

    $ tree .

    You should find the Info.plist file inside an .app directory like AWSDeviceFarmiOSReferenceApp.app in our example:

    . `-- Payload (directory) `-- AWSDeviceFarmiOSReferenceApp.app (directory) |-- Info.plist `-- (any other files)
  3. To find the executable value, you can open Info.plist using Xcode or Python.

    For Python, you can install the biplist module by running the following command:

    $ pip install biplist
  4. Next, open Python and run the following command:

    import biplist info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist') print info_plist['CFBundleExecutable']

    A valid iOS application package should produce output like the following:

    AWSDeviceFarmiOSReferenceApp

    For more information, see Working with iOS tests in AWS Device Farm.