iCuke

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.

Usage

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

require ‘icuke/cucumber’

Write some scenarios like:

Background:
  Given "iCuke" from "app/iCuke/iCuke.xcodeproj" is loaded in the simulator

Scenario: User views the About screen
  When I tap "About"
  Then I should see "Author:"

How it works

iCuke uses applescript to drive Xcode in order to launch your application into the iPhone Simulator. A preload library is used to add a HTTP server into your application.

The HTTP server allows us to see an XML version of the iPhone’s screen, and to emulate taps/swipes etc.

iCuke should not require any code changes to your application to work, however, it relies on accessibility information to function sensibly. If your accessibility information is not accurate, iCuke may not work as expected.

Bugs

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 testing applications on real devices, because I don’t know of a way get a preload library to load on the device.

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

iCuke compiles against the 3.1.2 SDK. I’m not sure how to make that configurable as the compilation is done at gem install time.

Contributors

  • Nigel Taylor

  • Aslak Hellesøy

  • Dominic Baggott

Thanks

Thanks go to the people who’s work iCuke is based on:

  • Matt Gallagher

  • Ian Dees

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 Unboxed Consulting. See LICENSE for details.