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 full-size slide

  2. iPad Apps
    iPhone Apps

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. AND THE WINNER IS...

    View full-size slide

  6. 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 full-size slide

  7. CALABASH TEST
    FEATURE FILE + STEP DEFINITION

    View full-size slide

  8. 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 full-size slide

  9. 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 full-size slide

  10. 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 full-size slide

  11. 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 full-size slide

  12. 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 full-size slide

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

    View full-size slide

  14. 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 full-size slide

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

    View full-size slide

  16. 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 full-size slide

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

    View full-size slide