6. AUTOMATION TOOL
CHECKLIST
• Easy to set up and maintain
• Updated regularly
• Well-documented
• Supports iOS and Android
• Runs on devices untethered
• Readable tests
7. TOOLS EVALUATED
• Anteater
• Calabash
• FoneMonkey (before it became MonkeyTalk)
• Frank
• KIF
• TouchTest
• UI Automation
• Zucchini
10. RECOMMENDED SETUP
• Ruby 1.9.3
• RVM
• Gemset
• How to install Xcode, Homebrew, Git, RVM, & Ruby 1.9.3 on
Snow Leopard, Lion, and Mountain Lion
• Enhance your Ruby development with RVM gemsets and .rvmrc
12. FEATURE EXAMPLE
Feature: Comments
In order to contribute to the discussion
As a Hacker News reader
I want to be able to add a comment
Scenario: User not logged in
Given I am not logged in
When I go to comment on a submission
Then I should be prompted to log in
13. DON’T DO THIS
Scenario: User logged in, but cancels comment form
Given the app is running
When I touch "Profile"
Then I wait to see "Login"
Then I fill in “Username” with "my_username"
Then I touch “Password”
Then I fill in “Password” with "my_password"
Then I touch done
Then I wait to see "Logout"
Then I touch "Home"
Then I touch list item number 1
Then I touch "reply"
Then I touch "Cancel"
Then I should see "Submission"
14. DO THIS
Scenario: User logged in, but cancels comment form
Given I am logged in as “username”
When I go to comment on a submission
But I cancel the comment form
Then I should see the submission
And a comment from "username" should not appear
15. STEP DEFINITION
Given /^I am logged in as "([^"]*)"$/ do |username|
macro 'I touch "Profile"'
if element_exists("button marked:'Logout'")
sleep(1)
else
macro %Q[I fill in “Username” with "#{username}"]
macro 'I touch “Password”'
macro 'I fill in “Password” with "my_password"'
macro 'I touch done'
macro 'I wait to see "Logout"'
end
end
16. UPDATING IS EASY, BUT...
• gem update calabash-cucumber
• calabash-ios download (not with SVN)
• curl http://localhost:37265/version (to verify framework is
up to date)
• May need to “Reset Content and Settings” in Simulator
• When new files are added, update Target Membership
19. TIPS & TRICKS
Use .bash_profile aliases
self.myButton.accessibilityElementsHidden = YES;
Use console to experiment and “query” to find elements
Participate in the Google Group
Get commit notifications with GitHub for Mac
20. RECOMMENDATIONS
• Full-time Automation Engineer
• Work with Dev to make apps accessible
• Continuous Integration
• Contribute fixes and custom steps
21. REFERENCES
• iOS Automated Testing with Calabash, Cucumber, and Ruby
• Create aliases in .bash_profile to assign shortcuts for common
Terminal commands
• A Calabash custom step to Swipe to delete all cells in a Table View
• Code for America
• AOL Mobile