Brownie

1,954 views

Published on

Yokohama.pm #8

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,954
On SlideShare
0
From Embeds
0
Number of Embeds
303
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×