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. AUTOMATION TOOL CHECKLIST • Easy to set up and maintain

    • Updated regularly • Well-documented • Supports iOS and Android • Runs on devices untethered • Readable tests
  3. TOOLS EVALUATED • Anteater • Calabash • FoneMonkey (before it

    became MonkeyTalk) • Frank • KIF • TouchTest • UI Automation • Zucchini
  4. 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
  5. 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
  6. 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"
  7. 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
  8. 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
  9. 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
  10. 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
  11. RECOMMENDATIONS • Full-time Automation Engineer • Work with Dev to

    make apps accessible • Continuous Integration • Contribute fixes and custom steps
  12. 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