23
Amir Barylko - Capybara MavenThought Inc. AMIR BARYLKO INTRO TO CAPYBARA RUBY UG NOV 2010 Thursday, November 25, 2010

Capybara1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Capybara1

Amir Barylko - Capybara MavenThought Inc.

AMIR BARYLKO

INTRO TOCAPYBARA

RUBY UGNOV 2010

Thursday, November 25, 2010

Page 2: Capybara1

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

Page 3: Capybara1

Amir Barylko - Capybara MavenThought Inc.

BDD

Thursday, November 25, 2010

Page 4: Capybara1

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

Page 5: Capybara1

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

Page 6: Capybara1

Amir Barylko - Capybara MavenThought Inc.

OUTSIDE IN APPROACH

Thursday, November 25, 2010

Page 7: Capybara1

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

Page 8: Capybara1

Amir Barylko - Capybara MavenThought Inc.

CUCUMBER

Thursday, November 25, 2010

Page 9: Capybara1

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

Page 10: Capybara1

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

Page 11: Capybara1

Amir Barylko - Capybara MavenThought Inc.

CAPYBARA

Thursday, November 25, 2010

Page 12: Capybara1

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

Page 13: Capybara1

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

Page 14: Capybara1

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

Page 15: Capybara1

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

Page 16: Capybara1

Amir Barylko - Capybara MavenThought Inc.

MATCHERS

• has_selector?

• has_no_selector?

• has_content?

• has_no_content

Thursday, November 25, 2010

Page 17: Capybara1

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

Page 18: Capybara1

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

Page 19: Capybara1

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

Page 20: Capybara1

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

Page 21: Capybara1

Amir Barylko - Capybara MavenThought Inc.

QUESTIONS?

Thursday, November 25, 2010

Page 22: Capybara1

Amir Barylko - Capybara MavenThought Inc.

RESOURCES

• Contact me: [email protected], @abarylko

•Materials: http://www.orthocoders.com/presentations

Thursday, November 25, 2010

Page 23: Capybara1

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