capybara

21
Almir M3nd3s @m3nd3s almirmendes.com Flávia Missi @flaviamissi flaviamissi.com.br Capybara Capybara

Upload: flavia-missi

Post on 17-May-2015

3.022 views

Category:

Technology


0 download

DESCRIPTION

Presentation about Integration Tests using Capybara, Selenium and Rails.

TRANSCRIPT

Page 1: Capybara

Almir [email protected]

Flávia Missi@flaviamissi

flaviamissi.com.br

CapybaraCapybara

Page 2: Capybara

Unit testsUnit testsFunctional test Functional test

Page 3: Capybara

User + BrowserUser + Browser

Page 4: Capybara

Integration testsIntegration tests

Page 5: Capybara
Page 6: Capybara

Capybara simulates how a real Capybara simulates how a real user would interact with a user would interact with a

web applicationweb application

http://www.flickr.com/photos/kalebdf/3172638676/

Ué... não Ué... não aconteceu nada!aconteceu nada!

Page 7: Capybara

Sinatra

Page 8: Capybara

Selenium HQSelenium HQ

Page 9: Capybara

gem install capybaragem install capybara

Page 10: Capybara

require 'capybara/rails'require 'capybara/rspec'

spec_helper.rb

Page 11: Capybara

Capybara.register_driver :selenium do |app|Capybara.register_driver :selenium do |app| Capybara::Driver::Selenium.new(Capybara::Driver::Selenium.new(

app, :browser => :chrome)app, :browser => :chrome) endend

Capybara.default_driver = :seleniumCapybara.default_driver = :selenium

Page 12: Capybara

visit('/projects')visit('/projects')

visit(post_comments_path(post))visit(post_comments_path(post))

current_pathcurrent_path

Page 13: Capybara

Simulating clickSimulating click

Page 14: Capybara

click_link('id-of-link')click_link('id-of-link')

click_link('Link Text')click_link('Link Text')

click_button('Save')click_button('Save')

click_on('Link Text')click_on('Link Text')

click_on('Button Value')click_on('Button Value')

Page 15: Capybara

Filling html formsFilling html forms

Page 16: Capybara

fill_in('First Name', :with => 'John')fill_in('First Name', :with => 'John')

choose('A Radio Button')choose('A Radio Button')

check('A Checkbox')check('A Checkbox')

uncheck('A Checkbox')uncheck('A Checkbox')

attach_file('Image', '/path/to/image.jpg')attach_file('Image', '/path/to/image.jpg')

select('Option', :from => 'Select Box')select('Option', :from => 'Select Box')

Page 17: Capybara

within("li#employee") do

fill_in 'Name', :with => 'Jimmy'

end

within(:xpath, "//li[@id='employee']") do

fill_in 'Name', :with => 'Jimmy'

end

Page 18: Capybara

page.has_selector?('table tr')page.has_selector?('table tr')

page.has_selector?(:xpath, '//table/tr')page.has_selector?(:xpath, '//table/tr')

page.has_no_selector?(:content)page.has_no_selector?(:content)

page.has_xpath?('//table/tr')page.has_xpath?('//table/tr')

page.has_css?('table tr.foo')page.has_css?('table tr.foo')

page.has_content?('foo')page.has_content?('foo')

QueryingQuerying

Page 19: Capybara

page.should have_selector('table tr')page.should have_selector('table tr')

page.should have_selector(:xpath, '//table/tr')page.should have_selector(:xpath, '//table/tr')

page.should have_no_selector(:content)page.should have_no_selector(:content)

page.should have_xpath('//table/tr')page.should have_xpath('//table/tr')

page.should have_css('table tr.foo')page.should have_css('table tr.foo')

page.should have_content('foo')page.should have_content('foo')

page.should have_no_content('foo')page.should have_no_content('foo')

RSpec QueryingRSpec Querying

Page 20: Capybara

É nozes!É nozes!Valeu!

Page 21: Capybara

LinksLinkshttp://rubydoc.info/github/jnicklas/capybara/master/file/README.rdochttp://rubydoc.info/github/jnicklas/capybara/master/file/README.rdoc

https://github.com/jnicklas/capybarahttps://github.com/jnicklas/capybara