Calabash-android testing framework

By Sandhya

Calabash facilitates to write and execute automated acceptance tests of mobile apps across the platforms – Android and iOS . Calabash in essence is a bridge to allow Cucumber framework to run tests on iOS and Android devices. The libraries of Calabash enable the test code to run in native and hybrid apps. The significant aspect of Cucumber is its ability to support Behaviour Driven Development (BDD). The scenarios of the test cases are written in typical English grammar of Gherkin language. The key words – Given, When, and Then are handy to describe the scenario.

I have discussed here how to run a simple test case using calabash on Android Apps.

Prerequisites :

  • System with windows OS
  • Java/jdk
  • Android sdk
  • Ruby (above 2.0)
  • Calabash-cucumber
  • Calabash-android (0.6)
  • APK file on which you are going to perform tests

Calabash- architecture

architecture

The clients can be, any of the Calabash clients. The Calabash server receives commands from the client in HTTP protocol and executes in the respective mobile/devices/emulator.

Installations in windows

• Download and Install java [I have installed 1.7], set the java home path
      Download java from here
      Verify it using command-   java -version
• Download Install android sdk, set android home in the environment variables
       Download android sdk from here
       Verify it using command-  adb devices
• Download and install ruby
       Download ruby from here
       Verify it using command-  ruby –v (it will show the version)

Install Calabash-android

       Command to install :

The above command will install the latest version.(I encountered issues with the latest 0.7.1.So I installed 0.6.0)
      Calabash android internally installs cucumber also
      Verify cucumber installation using command cucumber –version
      (If cucumber not found install it using command gem install calabash-cucumber)
      Verify calabash installation using command calabash-android version

I created  a simple test case; the steps to be followed are as below:

• Create a folder and give a name say “Sample“
• Open command prompt and go to sample folder (ex: cd ..\Projects\Sample)
Run-  calabash-android gen
– It will create the cucumber structure in current directory
Resign app:

Build the app:

Identifying elements of the app on the device

Now we can query for elements and their attributes

Ex1: query(“*”) // it will get all elements in the current screen
Ex2: query(“SystemWebView css=‘buttons’”) // it will get all buttons in the current view [If the app is hybrid and it is written using cordova, we should use SystemWebView]

We can also use UIAutomatorviewer to identify elements [UIAutomater comes along with android sdk]

Feature file (.feature)

By default feature file will come as shown below :

fig1

Edit this file according to your scenarios. My feature file looks as shown below.

fig2

Element identification sample query on hybrid web view :

Query: query(“SystemWebView css:’button'”) : It will get all web view buttons in current page as shown in the screen shot below.

fig4

Step definition file (.rb)
The calabash_steps.rb file looks as below: 

fig3

Run the feature file:

fig5

fig6

Passed all 7 steps of a scenario

fig7

This is very impressive USER ACCEPTANCE testing methodology as the Behavior Driven Development  of the application,  very well depicts to all the stakeholders how the application is  meeting their expectations.