DevTeach12-Capybara
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

DevTeach12-Capybara

  • 1,457 views
Uploaded on

Presentation done at Devteach/RubyTeach 2012

Presentation done at Devteach/RubyTeach 2012

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,457
On Slideshare
1,457
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
21
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Intro to Capybara Amir Barylko
  • 2. CapybaraWho am I?• Architect• Developer• Mentor• Great cook• The one who’s entertaining you for the next hour!
  • 3. Behavior Driven Dev. Text Text The rSpec Book
  • 4. Amir Barylko - Intro to CapybaraWhy Projects Fail?• Delivering late or over budget• Delivering the wrong thing• Unstable in production• Costly to maintain
  • 5. Amir Barylko - Intro to CapybaraImprove Quality• Unit Testing• Integration Testing• Acceptance Testing
  • 6. Amir Barylko - Intro to CapybaraBDD• Implementing an application• by describing its behavior• from the perspective of the stakeholder
  • 7. Amir Barylko - Intro to CapybaraOutside In Approach BDD TDD
  • 8. Amir Barylko - Intro to CapybaraTest First• Write a test before any line of code• Write minimum amount of code to make the test pass• Refactor code to eliminate “smells”
  • 9. Cucumber
  • 10. Amir Barylko - Intro to CapybaraGherkin DSL• Business readable DSL• Flush out requirements• Documentation• Automated testing• Used by Cucumber, SpecFlow, jBehave
  • 11. Amir Barylko - Intro to CapybaraGherkin Keywords• Feature • Then• Scenario • And• Given • But• When
  • 12. Amir Barylko - Intro to CapybaraFeaturesFeature: Listing projects As a user Free text! I Want to see the list of projects So I can choose one to see the details Scenario: List all projects (steps here to implement scenario) Scenario: No projects are available (steps here to implement scenario)
  • 13. Amir Barylko - Intro to CapybaraScenarioScenario: List all projects Given Im logged in Step 1 And I have some projects stored Step 2 When I browse the projects Step 3 Then I should see all of them listed Step 4
  • 14. Amir Barylko - Intro to CapybaraRunning Features• Parse the feature • Parse the scenario • For each scenario • Find a step implementation • Execute the code
  • 15. Amir Barylko - Intro to CapybaraMatching Step• Matching regular expression Given I have some projects stored Feature File Given /^I have some projects stored$/ Step Def File
  • 16. Amir Barylko - Intro to CapybaraStepGiven /^I have some projects stored$/ do projects = 10.times { random_valid_project } fake_response = create_response(projects) FakeWeb.register_uri(....)end Plain Ruby!
  • 17. Capybara
  • 18. Amir Barylko - Intro to CapybaraThe biggest rodent?• Gem to simplify integration tests• Inspired by Webrat• Used to implement Cucumber steps• Or with your favorite testing framework
  • 19. Amir Barylko - Intro to CapybaraWhy?• Support for different drivers (browsers)• Even a headless driver (capybara-webkit)• Supports Rack applications• But can be used with any web app!
  • 20. Amir Barylko - Intro to CapybaraForms• click_link • check• click_button • uncheck• click_link_or_button • attach_file• choose • select_option• fill_in(“FirstName”, :with => “John”)
  • 21. Amir Barylko - Intro to CapybaraFinders• all(:css, ‘#user’)• all(:xpath, ‘//[@id=user]’)• find (throws exception if not found)• find_field• find_link• find_button• find_by_id
  • 22. Amir Barylko - Intro to CapybaraMatchers• has_selector?• has_no_selector?• has_content?• has_no_content
  • 23. Amir Barylko - Intro to CapybaraJavascript• execute_script(....)• Only selenium page.driver.browser.switch_to.alert.accept page.driver.browser.switch_to.alert.dismiss page.driver.browser.switch_to.alert.text
  • 24. Amir Barylko - Intro to CapybaraDrivers Rack? External? JS? Headless? Windows?Rack ✔ ✕ ✕ ✕ ✔Selenium ✔ ✔ ✔ ✕ ✔Webkit ✔ ✔ ✔ ✔ ✔Poltergeist ✔ ✔ ✔ ✔ ✕
  • 25. Summary
  • 26. Amir Barylko - Intro to CapybaraNext steps• Learn about using capybara DSL• Read and follow the Cucumber book• Learn about page objects pattern• Start with a simple project
  • 27. Amir Barylko - Intro to CapybaraResources• Email: amir@barylko.com,• Twitter: @abarylko• Blog: http://orthocoders.com• Website: http://maventhought.com
  • 28. Amir Barylko - Intro to CapybaraResources II
  • 29. Amir Barylko - Intro to CapybaraResources III• Capybara: https://github.com/jnicklas/ capybara• Cucumber: https://github.com/cucumber