Build Status Dependency Status License



Briar extends the Calabash iOS API to help you write cucumber Scenarios that interact with complex UI elements like tables, pickers, and sliders.

Briar is not trying to provide steps that will work for every project.

Every project should cultivate its own vernacular - a shared language between developers, clients, and users. The steps that briar provides are not meant to be dropped into into your projects. Briar provides a library of ruby methods to build application-specific steps from. The steps in the features directory are meant to be examples of what briar can offer.

To see briar in action, take a look at


DRY: I have many iOS projects that use Calabash and I found I was rewriting a lot of supporting code.


  • Requires ruby >= 2.2.5; the latest release of ruby is recommended.
  • Xcode >= 8.0

In your Gemfile:

gem "briar", "~> 2.0"

# To use the briar XTC developer tools, include rake
gem "rake", "~> 10.3"

In your features/support/env.rb file:

require "calabash-cucumber/cucumber"
require "briar/cucumber"

# Optional
I18n.enforce_available_locales = false

To integrate briar and your calabash-ios console see:

briar binary

The briar binary provides useful commands to improve your calabash workflow.

There is detailed help about how to use the .xamarin convention and dotenv to setup your environment.

# help
$ briar help
$ briar help console
$ briar help .xamarin

# open a console against simulators
$ briar console sim6            <== against the current simulator
$ briar console sim7 ipad_r_64  <== changes the default simulator

# open a console against named devices
$ briar console venus
$ briar console neptune

# install the calabash server from a local repo
$ briar install calabash-server

# do a clean install of your .ipa on named device
$ briar install pluto
$ briar install earp

# open a cucumber html report in your default browser
$ briar report       <== last run against the simulator
$ briar report venus <== last run against venus

Xamarin Test Cloud

Requires adopting the .xamarin convention and a .env file. See the help for .xamarin and xtc.

# list the currently cached device in ~/.xamarin/test-cloud/ios-sets.csv
$ briar xtc

# submit a job to the iPads device set
$ briar xtc iPads

# submit a job to the iPhones device set with the meal_log profile
$ briar xtc iPhones meal_log

Version Numbers

I will try my best to follow Semantic Versioning [1] when naming the versions.

However, the semantic versioning spec is incompatible with RubyGem's patterns for pre-release gems. [2]

"But returning to the practical: No release version of SemVer is compatible with Rubygems." - David Kellum

Why call it briar?


All pull requests should be based off the develop branch.

For more details see the document.

Please do not change the version number. :)