Capybara-mechanize ================== [![Build Status](https://travis-ci.org/jeroenvandijk/capybara-mechanize.png?branch=master)](https://travis-ci.org/jeroenvandijk/capybara-mechanize) This gems makes it possible to use Capybara for (partially) remote testing. It inherits most functionality from the RackTest driver and only uses [Mechanize](https://github.com/sparklemotion/mechanize) for remote requests. It is currently in use to test the integration between a Rails application and Twitter authorization and sharing. This gem is a [Capybara](http://github.com/jnicklas/capybara) extension. I have been inspired by the Capybara driver and some earlier efforts for a Mechanize driver. Thanks to [Pinkelstar](http://www.pinkelstar.com) for giving me the time and the need to develop this gem. ### Installation gem install capybara-mechanize ### Usage without Cucumber require 'capybara/mechanize' ### Further configuration of Mechanize Upon instantiation of a `Driver`, you can configure [`mechanize` agent options](http://www.rubydoc.info/gems/mechanize/Mechanize) in a `#configure` block: ```ruby Capybara.register_driver :mechanize do |app| driver = Capybara::Mechanize::Driver.new(app) driver.configure do |agent| # Configure other Mechanize options here. agent.log = Logger.new "mech.log" agent.user_agent_alias = 'Mac Safari' end driver end ``` ### Usage without rack app You can configure it to use for external servers. Until this issue https://github.com/jeroenvandijk/capybara-mechanize/issues/66 is resolved, you can configure with ``` Capybara.register_driver :mechanize do |app| Capybara::Mechanize::Driver.new(proc {}) end ``` and use like this ``` session = Capybara::Session.new :mechanize session.visit 'https://github.com' ``` ### Usage with Cucumber and tags A @mechanize tag is added to your hooks when you add the following line to your env.rb require 'capybara/mechanize/cucumber' The following scenario will then be using the Mechanize driver @mechanize Scenario: do something remote When I click the remote link ### Remote testing When you want to use this driver to test a remote application. You have to set the app_host: Capybara.app_host = "http://www.yourapp.com" Note that I haven't tested this case for my self yet. The Capybara tests pass for this situation though so it should work! Please provide me with feedback if it doesn't. ### HTTP errors If you receive the error `Net::HTTP::Persistent::Error: too many connection resets`, try setting a timeout value: `page.driver.browser.agent.idle_timeout = 0.4`. ## Running tests Run bundler bundle install Then you are ready to run the test like so bundle exec rake spec Todo ---- * Test this driver with non-rack/non-ruby projects Note on Patches/Pull Requests ----------------------------- * Fork the project. * Make your feature addition or bug fix. * Add tests for it. This is important so I don't break it in a future version unintentionally. * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull) * Send me a pull request. Bonus points for topic branches. Copyright --------- Copyright (c) 2010-2013 Jeroen van Dijk. See LICENSE for details.