Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Moncef Belyamani

November 01, 2012
Tweet

More Decks by Moncef Belyamani

Other Decks in Technology

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 [email protected] moncefbelyamani.com about.me/moncef

  24. QUESTIONS?

  25. THANK YOU!