Xamarin Test Cloud is now part of Visual Studio App Center! Get Started.

Calabash iOS 0.18.2

  • This release requires a server update to 0.18.2.
  • This releases requires at least run-loop 2.0.9.
  • Calabash iOS now requires ruby >= 2.0.

These two wiki pages have instructions for updating the most recent versions.


The TCC.db interface for iOS Simulators has been removed from Calabash iOS. It has been broken for CoreSimulator environments since Xcode 6.

The done method is now deprecated. It will be removed in Calabash iOS 0.19.0. It was replaced with tap_keyboard_action_key in Calabash 0.10.0.

A number of methods have been removed from Calabash::Cucumber::Launcher. See the Deprecated section below.


  • Improved screenshots for OpenGL views, custom keyboards, alerts, and sheets.
  • App bundle detection has been reimplement in RunLoop. Thank you to @ark-konopacki, @arulami, and @topgenorth for letting me borrow their machines to debug this problem.

Automatic App Detection

If Calabash cannot detect your application, you will see new errors. The error messages will tell you where Calabash searched for you application and give you suggestions about how to help Calabash find your application.


Calabash depends on information in your .xcodeproj to find your application. If there are multiple .xcodeproj in or below the directory where you run cucumber, Calabash might not be able to determine which .xcodeproj to use. If you get this error, set the XCODEPROJ environment variable.

$ XCODEPROJ=My.xcodeproj bundle exec cucumber


If no application for the iOS Simulator can be found in your DerivedData directories or by searching recursively down from the directory where you run cucumber, this error will be raised. You probably need to build your application for the iOS Simulator.

Dylib injection

If you are using dylib injection, automatic detection will not work for you. The search algorithm only finds .app bundles that have been linked with Calabash. You must continue to use the APP environment variable.


Calabash iOS 0.19.0 will deprecate many parts Calabash. In particular, the playback API will be removed and the SimulatorLauncher module will be removed. We need to prepare for running with XCUITest.

We wll try hard to be backwards compatible, but there will be some bumps in the road. We have a lot of legacy code from iOS 3, 4, 5, and 6 that needs to go because it is slowing down the development of new features.


Please do not install gems with sudo.

If you are just getting started with Ruby and Calabash on MacOS, we have a new tool: the calabash-sandbox.

For advanced users, we recommend a managed ruby.

If you are not already using bundler and Gemfile, we strongly recommend that you start.

Docs and Examples

For this release, we've updated the README and many of the wiki pages. At the moment the wiki is publicly editiable. If you see a typo or a way to improve the docs, please make the change. If the change is significant, create an issue and we can discuss.

We have also updated the following repositories:

  • LPSimpleExample
    • Getting starting with Calabash
  • iOS Smoke Test App
    • nearly 100% coverage of all the Calabash iOS gestures and behaviors
    • examples of how manage the app life cycle and reset the keychain
    • scripts that demonstrate an efficient Calabash workflow, including how to stage binaries from Xcode builds and how to submit to the Xamarin Test Cloud.
  • iOS WebView App
    • Updated with iframe examples


We've discovered the :preferences is not stable enough to use on Simulators or physical devices. The default will remain :host.

Calabash 2.0

Calabash 2.0 is in pre-release.

Please report issues with Calabash 2.0 as a GitHub issue or on Stack Overflow.

We are looking for help from the community to finish implementing Calabash 2.0. You can see what has to be done in the project GitHub issues.

Xamarin Test Cloud users: Calabash 2.0 is not yet supported on Test Cloud. Test Cloud support will be available before Calabash 2.0 is released.


This is a reminder to check out the Calabash documentation on the Xamarin site. The information there is excellent and constantly improving.



See https://github.com/calabash/calabash-ios/wiki/Deprecated

  • RunLoop::XCTools has been deprecated (replaced) in run-loop 1.5.0.
  • RunLoop::Bridge::Simctl has been deprecated (replaced) in run-loop 2.0
  • RunLoop::SimControl is in the process of being deprecated; planned for run-loop 3.0
  • Calabash::Cucumber::Launcher - these methods have been removed and not replaced:
    • detect_device_from_args
    • detect_app_bundle_from_args
    • info_plist_from_bundle_path
    • info_plist_as_hash
    • detect_bundle_id
    • device_env

Hot Topics

See https://github.com/calabash/calabash-ios/wiki/Hot-Topics

  • instruments and Instruments.app cannot launch apps on iOS 7.1 Simulators on Yosemite with Xcode 6. iOS 7 Simulators are not supported on El Cap.
  • Errno::EINTR: Interrupted system call (FIFO)
  • NSLog output can cause apps to become unresponsive during testing

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.