ioscirclecidetox

Detox issues with AppleSimUtils and CircleCI


I am trying to setup the detox build for ios in circleci using the macos executor. The issue I had was with applesmiutils. When the app tries to run, it executes the command applesimutils --list byId='SIM_ID'. This command if run locally, gives the desired results but causes a failure on CircleCI. The failure is:

rror: The data couldn’t be read because it isn’t in the correct format.. See “applesimutils --help” for usage.

Error: Unable to obtain a list of simulators. See “applesimutils --help” for usage.

Solution

  • After a lot of debugging and trying different versions of applesimutils, it did not help. Even without the detox commands the applesimutils --list command was failing but if we do sudo applesimutils --list that was successful.

    So, definitely something wrong with the applesimutils --list. I downgraded the utils but no use.

    The issue was that I was using NVM in my CircleCI setup that printed these lines when the xcrun simctl list devices command was run by applesimutils:

    v16.19.1 is already installed.
    Now using node v16.19.1 (npm v8.19.3)
    

    This caused the data format to change from JSON to a format not recognizable by applesimutils.

    I changed the node installation script to brew install node@16 and everything started working including detox tests!