Upload
amir-barylko
View
712
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Amir Barylko - Capybara MavenThought Inc.
AMIR BARYLKO
INTRO TOCAPYBARA
RUBY UGNOV 2010
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
WHO AM I?
• Architect
•Developer
•Mentor
• Great cook
• The one who’s entertaining you for the next hour!
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
BDD
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
WHY TRADITIONALPROJECTS FAIL?
•Delivering late or over budget
•Delivering the wrong thing
• Unstable in production
• Costly to maintain
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
BDD PRINCIPLES
• Behaviour Driven development is about implementing an application by describing its behaviour from the perspective of the stakeholder
• Enough is Enough
•Deliver stakeholder value
• It’s all behaviour
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
OUTSIDE IN APPROACH
Thursday, November 25, 2010
Amir Barylko - BDD MavenThought Inc.
GHERKIN DSL
• Business readable DSL
• Flush out requirements
•Documentation
• Automated testing
• Used by Cucumber, SpecFlow, jBehave
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
CUCUMBER
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
FEATURES
Feature: Listing projects As a user I Want to see the list of projects So I can choose one to see the details
Scenario: List all projects Given I'm logged in And I have the projects: | Caruso | | Pucini | | Mariachi | When I go to the projects page Then I should see "Caruso" And I should see "Pucini" And I should see "Mariachi"
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
STEPS
Given /^I have the projects:$/ do |table|
projects = table.raw.collect do |project|
{"id" => 4444,
"name" => "#{project}",
"description" => "Project developed in rails",
"createTime" => "\/Date(1256774726000-0500)\/",
"owner" => {"id" => 2222,"name" => "Some user"}}
end
fake_response = JSON.generate({"page" => 1,"pageSize" => 10,"totalPages" => 1,"totalItems" => 1, "items" => projects})
FakeWeb.register_uri(:get, "http://agilezen.com/api/v1/projects", :body => fake_response)
FakeWeb.register_uri(:get, "http://agilezen.com/api/v1/project/4444", :body => JSON.generate(projects[0]))
end
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
CAPYBARA
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
WHAT
• Gem to simplify integration tests
• Inspired by Webrat
• Can be used with Cucumber steps or in any other test
• Easy to install: gem install capybara
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
WHY
• Support for different web browsers
• Provides driver to run headless (without browser)
• Can combine different scenarios with different browsers
• Supports Rack and any remote web application
• Supports asynchronous calls
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
FORMS
• click_link(...)
• click_button(...)
• click_link_or_button(...)
• choose(...)
• fill_in(“FirstName”, :with => “John”)
• check(...)
• uncheck(...)
• attach_file(...)
• select_option(...)
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
FINDERS
• all(*args)• page.all(:css, ‘a#user’)
• page.all(:xpath, ‘//[@id=user]’)
• find (same args as all)
• find_field
• find_link
• find_button
• find_by_id
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
MATCHERS
• has_selector?
• has_no_selector?
• has_content?
• has_no_content
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
STEPS
• Given I am on Home
•When I go to Projects
•When I press “login” within “user”
•When I follow “help” within “support”
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
STEPS II
•When I fill “username” with “mel”
•When I select “Winnipeg” from “cities”
•When I check “remember_me”
•When I uncheck “remember_me”
•When I choose “Option”
•When I attach then file “settings.xml” to “file”
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
STEPS III
• Then I should see “Welcome”
• Then I should not see “Welcome”
• Then the field “user” should contain “Mel”
• Then show me the page
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
XPATH
• Then I should see “Welcome”
• Then I should not see “Welcome”
• Then the field “user” should contain “Mel”
• Then show me the page
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
QUESTIONS?
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
RESOURCES
• Contact me: [email protected], @abarylko
•Materials: http://www.orthocoders.com/presentations
Thursday, November 25, 2010
Amir Barylko - Capybara MavenThought Inc.
RESOURCES II
• Capybara: https://github.com/jnicklas/capybara
• Cucumber: https://github.com/aslakhellesoy/cucumber/wiki/
• Culerity: https://github.com/langalex/culerity
• Celerity: http://celerity.rubyforge.org/
• Selenium: http://seleniumhq.org/
Thursday, November 25, 2010