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: -> $("navigationBar[name=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

Zucchini integrates mechanic.js for quick and painless elements selection.

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 better and requires XCode 4.2 or newer as well as Ruby 1.9.3 (or newer).

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

brew update 
brew install imagemagick node
npm 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 testing with Zucchini

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

Make sure you check out the zucchini-demo project featuring an easy to explore Zucchini setup around Apple's CoreDataBooks sample.