Wednesday, 11 November 2015

Useful Calabash Android methods for scrolling, reading and counting items in Android List view

Calabash queries for Android list view

#Get total items in List view
query "ListView",:getCount

#Get first visible item from android list view
query "ListView",:getFirstVisiblePosition

#Get item details at row 2 in current list
query "ListView",{:getItemAtPosition=>1}

#get last visible position of item currently visible in list view
query "ListView",:getLastVisiblePosition

#Scroll in list view
query "ListView",{:smoothScrollToPosition=>5}

#scroll progressively in list view
query "ListView",{:smoothScrollByOffset=>1} # scroll by one position

Example of Android list view -

Query for Android hint text

query for hint text in android text fields (Edittext)

query "*",:hint 

Monday, 2 March 2015

Expect script to compile Titanium project and add calabash framework to it using ticalabash

Expect script is bit advanced version of shell script
Where terminal can wait for the result of the previous command and execute the next query based on the output of the previous result.
Take a look at this amazing blog for expect script examples -

TiCalabash is a package which can be used to add calabash to Titanium project and execute tests. -

Below shell script does the following sequence of steps 

  1. Cleans Project
  2. Builds project
  3. Adds calabash-ios framework to code and creates -cal scheme
  4. compile the project with calabash framework added


set arg1 [lindex $argv 0]

set timeout 20
spawn ti clean
expect {
    "Project cleaned successfully" { puts "STEP 1 DONE" }
    timeout { puts "failed to find text"; exit 1 }

if { $arg1 == "phone" } {
 spawn ti build -p ios -b;
 puts "expect.exp - Phone build"
} elseif { $arg1 == "tablet" } {
 spawn ti build -p ios -Y ipad -b --retina;
 puts "expect.exp - Tablet build"

set timeout 400
expect {
    "Initiating Xcode pre-compile" { puts "STEP 2 DONE" }
    timeout { puts "*** FAILED TO FIND - Initiating Xcode pre-compile "; exit 1 }

expect {
    "Project built successfully" { puts "STEP 3 DONE" }
    timeout { puts "*** FAILED TO FIND - Project built successfully "; exit 1 }

set timeout 20
spawn ti calabash —platform=iphone
expect "Please answer yes (y) or no (n)"  { send "n\r" }

set timeout 200
expect {
    "Default target:" { send "\r" }
    timeout { puts "failed to find text"; exit 1 }

expect {
    "Setup done" { puts "STEP 4 DONE" }
 timeout { puts "failed to find text: Setup done"; exit 1}

expect {
 timeout { puts "failed to find text"; exit 1 }

Disable VKB(Virtual Key Board) on android genymotion emulator

Steps to Disable keyboard in Genymotion

1) start Genymotion emulator
2) Go to settings
3) Select language and Input
4) Open Current keyboard under Keyboard and Input methods
5) Disable hardware option

Checkout the Animated GIF below 

Friday, 23 January 2015

Useful calabash queries : methods to count elements / read elements and find text present

These are queries used with UI picker view -

Scrolling to particular row: 

Read elements from picker view
query("pickerView",:delegate, [{pickerView:nil},{titleForRow:3},{forComponent:0}])
Count Number of items in picker view