Brownie Masaki Nakagawa / @ikasam_a Yokohama.pm #8 (yokohama.pm.org/2011/10/yokohamapm-8.html) 2011年11月18日金曜日
BrownieMasaki Nakagawa / @ikasam_a
Yokohama.pm #8(yokohama.pm.org/2011/10/yokohamapm-8.html)
2011年11月18日金曜日
YAPC::Asia Tokyo 2011yapcasia.org/2011/
2011年11月18日金曜日
Perl Testing Consideration
(seen from other languages)
Masaki Nakagawa
YAPC::Asia Tokyo 2011 (yapcasia.org/2011/talk/80)
2011年11月18日金曜日
Rails Testing
• Perspective
• UnitTest, End-to-End
• Frameworks
• Test::Unit (+ Shoulda), RSpec, Cucumber
• Browser Integration
• Capybara (rack-test, Selenium, Envjs, ...)
• Test Double
• rspec-mocks, rr, WebMock
2011年11月18日金曜日
Weakness
• Expectation and Verification
• vs. rr, rspec-mocks, mocha, ...
• Browser Integration API
• vs. Capybara, Webrat, ...
• Naming of Test Double modules
• Test::Mock::Guard is “Stub” module
2011年11月18日金曜日
Comparision
• Pros
• TAP-based Test Description
• Many Helpful Modules
• Cons
• Non-Uniform Browser Integration
• Poor Expectation and Verification
2011年11月18日金曜日
Capybaragithub.com/jnicklas/capybara
2011年11月18日金曜日
Capybara simulates how a real user would interact with a web application.
It is agnostic about the driver running your tests and currently comes with Rack::Test
and Selenium support built in.
2011年11月18日金曜日
within("#session") do fill_in 'Login', :with => '[email protected]' fill_in 'Password', :with => 'password'endclick_link 'Sign in'
2011年11月18日金曜日
The DSL
2011年11月18日金曜日
DriversRackTestSeleniumHtmlUnit
WebKit (QtWebKit)Envjs
Zombie.js
2011年11月18日金曜日
Browniegithub.com/masaki/Brownie
2011年11月18日金曜日
Inspired by Capybara
2011年11月18日金曜日
my $session = Brownie::Session->new;
$session->visit(‘http://example.com’);
$session->fill_in(Login => '[email protected]');$session->fill_in(Password => 'password');$session->click_link('Sign in');
OO Style
2011年11月18日金曜日
DSL Style (Not yet)
use Brownie::DSL;
visit ‘http://example.com/’;
fill_in Login => '[email protected]';fill_in Password => 'password';click_link 'Sign in';
2011年11月18日金曜日
DriversSelenium (Selenium::Remote::Driver)
Mechanize (WWW::Mechanize)
HtmlUnit (WWW::HtmlUnit)
2011年11月18日金曜日
Vocabularyvisit, current_url, current_path,status_code, response_headers,
title, source, screenshot, click_link, click_button, click_on,fill_in, choose, check, uncheck,
select, unselect, attach_file,execute_script, evaluate_script,find_element, find_elements,
2011年11月18日金曜日
DEMO
2011年11月18日金曜日
Future
• Mechanize Driver (!!!)
• Scoping (within “selector” => sub { ... })
• Embedded Selenium Server (Alien::SeleniumRC)
• HtmlUnit Driver
2011年11月18日金曜日
Patches and Collaborators Welcome !!!
2011年11月18日金曜日
Thank you
2011年11月18日金曜日