We recently migrated an older Jenkins C.I. server over to a newer one, and struggled to get XCTool or xcodebuild
to run unit tests where the simulator was needed.
There are quite a number of blog posts out there that describe how to setup a C.I. Jenkins server on a Mac, but many of them don't include the last bit (that worked for me), so I hope this helps you...
Why Can't I run the Xcode Simulator on a Jenkins server?
Some Error Messages I Encountered Along the Way:
Tried to install the test host app 'com.myapp.test' but failed.
Preparing test environment failed.
-[TEST_BUNDLE FAILED_TO_START]
There was a problem starting the test bundle: Simulator 'iPhone 6' was not prepared: Failed for unknown reason.
Test did not run: Simulator 'iPhone 6' was not prepared: Failed for unknown reason.
2015-01-21 12:02:19.296 xcodebuild[35135:875297] iPhoneSimulator: Timed out waiting 120 seconds for simulator to boot, current state is 1.
Testing failed:
Test target MyProjectTests encountered an error (Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at /var/folders/yf/49df70js2xn524f9c3835zx0000087/T/com.apple.dt.XCTest-status/Session-2015-01-21_12:00:19-sXA35e.log)
** TEST FAILED **
Need to run a GUI user.
The Simulator needs to run in the context of an actual user where it can get a window handle and render it's U.I...
Below is a great resource to get you most of the way there.
Once you've followed the instructions in the above post and you still can't get the Jenkins CI server to run your simulator tests, then check this last item which got it working for me.
Open up your Jenkins plist
file in the LaunchAgents
folder. (If you don't have one in LaunchAgents, then go back to the linked blog post and follow that first).
The key for me to get it working was to remove the CreateSession
key from the plist
.
- <key>SessionCreate</key>
- <true />
Once I removed this key, restarted the server, everything started building/working correctly.
In summary:
- Auto-login with a jenkins user
- Get your plist moved over to the
LaunchAgents
folder (see post linked above) - Remove the
SessionCreate
key