Automated Functional testing for Android based on cucumber
Java Ruby
Pull request Compare This branch is 2 commits ahead, 1195 commits behind calabash:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Calabash-Android lets you run Cucumber features on your Android device or emulator. A Cucumber feature could look something like this:

Feature: Login feature
  Scenario: As a valid user I can log into my app
    Given I am a valid user
    And I enter my username
    And I enter my password
    And I press "Login"
    Then I see "Welcome to coolest app ever"

You can run your Calabash features on multiple devices using

If you have any questions on Calabash-Android, please use the Google group



You need to have Ruby installed. Verify your installation by running ruby -v in a terminal - it should print "ruby 1.8.7" (or higher).

If you are on Windows you can get Ruby from

You should have the Android SDK installed and the environment variable ANDROID_HOME should be pointing to it.

You also need to have Ant installed and added to your path


Install calabash-android by running

  • gem install calabash-android
  • You might have to run sudo gem install calabash-android if you do not have the right permissions.

Notice: Make sure that the app you are trying to test is signed with the key store you just selected in the setup.

Generate a Cucumber skeleton

To get started with calabash it might be a good idea to run calabash-android gen. It will create a Cucumber skeleton in the current folder like this:

| |_app_installation_hooks.rb
| |_app_life_cycle_hooks.rb
| |_env.rb
| |_calabash_steps.rb

In this skeleton you find all the predefined steps that comes with calabash. Try to take a look my_first.feature and change it to fit your app.

Writing a test

The Cucumber features goes in the features library and should have the ".feature" extension.

You can start out by looking at features/test_dummy.feature. You can extend this feature or make your own using some of the predefined steps that comes with Calabash.

Running test

To run your test:

calabash-android run <apk>

Calabash-android will install an instrumentation next along with your app when executing the app. We call this instrumentation for "test server". The "test server" has special permission that allows it to interact very closely with your app during test. Everytime you test a new binary or use an upgraded version of calabash a new test server will be build. The test server is an intrumentation that will run along with your app on the device to execute the test.

Screenshot location

Screenshots are placed in the current working directory by default. The location can be changed by setting the SCREENSHOT_PATH environment variable.

SCREENSHOT_PATH=/tmp/foo/ calabash-android run

would cause the first screenshot to appear at /tmp/foo/screenshot_0.png.

Predefined steps

The predefined steps are located in the features/step_definitions folder. A compiled list of predefined steps with comments is available here