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

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. iPad Apps
    iPhone Apps

    View Slide

  6. AUTOMATION TOOL
    CHECKLIST
    • Easy to set up and maintain
    • Updated regularly
    • Well-documented
    • Supports iOS and Android
    • Runs on devices untethered
    • Readable tests

    View Slide

  7. TOOLS EVALUATED
    • Anteater
    • Calabash
    • FoneMonkey (before it became MonkeyTalk)
    • Frank
    • KIF
    • TouchTest
    • UI Automation
    • Zucchini

    View Slide

  8. AND THE WINNER IS...

    View Slide

  9. View Slide

  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

    View Slide

  11. CALABASH TEST
    FEATURE FILE + STEP DEFINITION

    View Slide

  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

    View Slide

  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"

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  17. View Slide

  18. KEEP IN MIND
    Swiping depends on device orientation
    Can only touch visible items

    View Slide

  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

    View Slide

  20. View Slide

  21. RECOMMENDATIONS
    • Full-time Automation Engineer
    • Work with Dev to make apps accessible
    • Continuous Integration
    • Contribute fixes and custom steps

    View Slide

  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

    View Slide

  23. Moncef Belyamani
    @monfresh
    [email protected]
    moncefbelyamani.com
    about.me/moncef

    View Slide

  24. QUESTIONS?

    View Slide

  25. THANK YOU!

    View Slide