iOS Automation with Calabash: Tips & Tricks

iOS Automation with Calabash: Tips & Tricks

My presentation at the Mobile Testing Summit in San Francisco on November 1, 2012.

355b1506dd9773ba4eba7dff34c2bc6d?s=128

Moncef Belyamani

November 01, 2012
Tweet

Transcript

  1. iOS Automated Testing with Calabash: Tips and Tricks Moncef Belyamani

    @monfresh Mobile Testing Summit / November 1, 2012 / San Francisco
  2. None
  3. None
  4. None
  5. iPad Apps iPhone Apps

  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
  8. AND THE WINNER IS...

  9. None
  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
  11. CALABASH TEST FEATURE FILE + STEP DEFINITION

  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
  17. None
  18. KEEP IN MIND Swiping depends on device orientation Can only

    touch visible items
  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. None
  21. RECOMMENDATIONS • Full-time Automation Engineer • Work with Dev to

    make apps accessible • Continuous Integration • Contribute fixes and custom steps
  22. 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
  23. Moncef Belyamani @monfresh moncef@monfresh.com moncefbelyamani.com about.me/moncef

  24. QUESTIONS?

  25. THANK YOU!