Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Brownie                  Masaki Nakagawa / @ikasam_a                           Yokohama.pm #8                 (yokohama.pm...
YAPC::Asia Tokyo 2011                       yapcasia.org/2011/2011   11   18
Perl Testing                       Consideration                          (seen from other languages)                     ...
Rails Testing                 •   Perspective                     •   UnitTest, End-to-End                 •   Frameworks ...
Weakness                 • Expectation and Verification                  • vs. rr, rspec-mocks, mocha, ...                 ...
Comparision                 • Pros                  • TAP-based Test Description                  • Many Helpful Modules  ...
Capybara                 github.com/jnicklas/capybara2011   11   18
Capybara simulates how a real user would                     interact with a web application.                 It is agnost...
within("#session") do     fill_in Login, :with => user@example.com     fill_in Password, :with => password   end   click_l...
The DSL2011   11   18
Drivers                     RackTest                     Selenium                     HtmlUnit                 WebKit (QtW...
Brownie                 github.com/masaki/Brownie2011   11   18
Inspired by Capybara2011   11   18
OO Style   my $session = Brownie::Session->new;   $session->visit(‘http://example.com’);   $session->fill_in(Login => user...
DSL Style (Not yet)   use Brownie::DSL;   visit ‘http://example.com/’;   fill_in Login => user@example.com;   fill_in Pass...
Drivers                 Selenium (Selenium::Remote::Driver)                   Mechanize (WWW::Mechanize)                  ...
Vocabulary                  visit, current_url, current_path,                 status_code, response_headers,              ...
DEMO2011   11   18
Future                 • Mechanize Driver (!!!)                 • Scoping (within “selector” => sub { ... })              ...
Patches and Collaborators                       Welcome !!!2011   11   18
Thank you2011   11   18
Upcoming SlideShare
Loading in …5
×

Brownie

2,084 views

Published on

Yokohama.pm #8

Published in: Technology
  • Be the first to comment

Brownie

  1. 1. Brownie Masaki Nakagawa / @ikasam_a Yokohama.pm #8 (yokohama.pm.org/2011/10/yokohamapm-8.html)2011 11 18
  2. 2. YAPC::Asia Tokyo 2011 yapcasia.org/2011/2011 11 18
  3. 3. Perl Testing Consideration (seen from other languages) Masaki Nakagawa YAPC::Asia Tokyo 2011 (yapcasia.org/2011/talk/80)2011 11 18
  4. 4. 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, WebMock2011 11 18
  5. 5. 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” module2011 11 18
  6. 6. Comparision • Pros • TAP-based Test Description • Many Helpful Modules • Cons • Non-Uniform Browser Integration • Poor Expectation and Verification2011 11 18
  7. 7. Capybara github.com/jnicklas/capybara2011 11 18
  8. 8. 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
  9. 9. within("#session") do fill_in Login, :with => user@example.com fill_in Password, :with => password end click_link Sign in2011 11 18
  10. 10. The DSL2011 11 18
  11. 11. Drivers RackTest Selenium HtmlUnit WebKit (QtWebKit) Envjs Zombie.js2011 11 18
  12. 12. Brownie github.com/masaki/Brownie2011 11 18
  13. 13. Inspired by Capybara2011 11 18
  14. 14. OO Style my $session = Brownie::Session->new; $session->visit(‘http://example.com’); $session->fill_in(Login => user@example.com); $session->fill_in(Password => password); $session->click_link(Sign in);2011 11 18
  15. 15. DSL Style (Not yet) use Brownie::DSL; visit ‘http://example.com/’; fill_in Login => user@example.com; fill_in Password => password; click_link Sign in;2011 11 18
  16. 16. Drivers Selenium (Selenium::Remote::Driver) Mechanize (WWW::Mechanize) HtmlUnit (WWW::HtmlUnit)2011 11 18
  17. 17. Vocabulary visit, 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
  18. 18. DEMO2011 11 18
  19. 19. Future • Mechanize Driver (!!!) • Scoping (within “selector” => sub { ... }) • Embedded Selenium Server (Alien::SeleniumRC) • HtmlUnit Driver2011 11 18
  20. 20. Patches and Collaborators Welcome !!!2011 11 18
  21. 21. Thank you2011 11 18

×