Skip to content
Integration testing for iPhone applications with Cucumber
Objective-C C Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



iCuke allows you to test an iPhone application with cucumber. It provides a selection of step definitions similar to those provided for testing web applications.

iCuke provides an XML version of the iPhone's screen and the ability to simulate events such as taps or typing. This is done via a HTTP interface which iCuke attaches to your application process.

iCuke requires no code changes to your application to work, however, it relies on accessibility information to function sensibly.

If your application can be used via the VoiceOver screen reader then iCuke should not have any problems. Please see the apple documentation on making your application Accessible for more details on how to ensure iCuke will work with your application.


Install the gem and load the iCuke step definitions in a cucumber support file:

require 'icuke/cucumber'

Write some scenarios like:


Given "app/iCuke/build/Debug-iphonesimulator/" is loaded in the simulator

Scenario: User views the About screen

When I tap "About"
Then I should see "Author:"


iCuke does not currently automate enabling the Accessibility Inspecter, which is required to be running for iCuke to function. I am still deciding how best to achieve this is in a reliable fashion.

iCuke does not support drags, scrolling or pinches yet. They'll be here soon!

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don't break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.


Copyright © 2010 Rob Holland. See LICENSE for details.

Something went wrong with that request. Please try again.