Fork me on GitHub
Zucchini DSL
Use natural language for interaction scenarios

Use a simple extensible DSL to specify your interaction or walkthrough scenarios.

Report UI
Test against your own screenshots

Mark them as pending and promote them to reference as you progress with your project.

Zucchini in CI
Define your own workflow

Use Zucchini as you design, code or test your app for regressions.

How it works

A Zucchini feature file consists of sections bound to contexts of different application screens. Every screen you proceed to needs to be backed up by a CoffeeScript class describing all UI elements you want Zucchini to interact with as well as custom actions you feel like performing on that screen.

class PostScreen extends Screen
  anchor: -> view.navigationBars()["Post"]
  
  constructor: ->
    super 'post'
    
    extend @elements,
    'Post': -> view.navigationBars()["Post"].buttons()["Post"]
    
    extend @actions,
    'Type "([^"]*)"$': (text) ->
      messageArea = view.elements()['Message Text Area']
      messageArea.setValue text

When you run Zucchini, it compiles screen classes into an UIAutomation-compliant Javascript scenario, and runs it with Apple's instruments CLI tool.

Getting Started

Pre-requisites

Zucchini only runs on Mac OS X 10.6 and 10.7 and requires XCode 4.2 as well as Ruby (at least 1.8.7).

The other two dependencies are ImageMagick and CoffeeScript. If you use Homebrew, they are straightforward to install:

brew update && brew install imagemagick && brew install coffee-script

Adding Zucchini to your project

Install the zucchini-ios gem:

gem install zucchini-ios

Create a project scaffold for zucchini:

zucchini generate --project /path/to/my_project

Create a feature scaffold for your first feature:

zucchini generate --feature /path/to/my_project/features/my_feature

Start hacking with Zucchini

Have a look at the newly created features and support subdirectories and start hacking away.

Alternatively, check out our nice zucchini-demo project featuring an easy to explore Zucchini setup around Apple's CoreDataBooks sample. And please, feel free to contribute a better Getting Started tutorial ;)