<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -19,6 +19,7 @@
 
   * Maximize the browser window after initializing Selenium (Luke Melia)
   * Better inspect output for Webrat elements
+  * Sets the Webrat mode with Configuration#mode= in the config block [#85] (Mike Gaffney)
   * Detect if the document is XML or HTML using the Content-Type when in Rails mode
   * Expose #selenium method for direct access to Selenium client
   * Check nokogiri gem version before requiring nokogiri</diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -61,7 +61,11 @@ To install the latest code as a plugin: (_Note:_ This may be less stable than us
 
 In your test_helper.rb, spec_helper.rb, or env.rb (for Cucumber) add:
 
-  require &quot;webrat/rails&quot;
+  require &quot;webrat&quot;
+  
+  Webrat.configure do |config|
+    config.mode = :rails
+  end
   
 == Install with Merb
 </diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,7 @@ module Webrat
   #     config.parse_with_nokogiri = false
   #   end
   class Configuration
+    
     # Should XHTML be parsed with Nokogiri? Defaults to true, except on JRuby. When false, Hpricot and REXML are used
     attr_writer :parse_with_nokogiri
     
@@ -39,6 +40,13 @@ module Webrat
       @open_error_files ? true : false
     end
     
+    # Allows setting of webrat's mode, valid modes are:
+    # :rails, :selenium, :rack, :sinatra, :mechanize, :merb
+    def mode=(mode)
+      @mode = mode
+      require(&quot;webrat/#{mode}&quot;)
+    end
+    
   end
   
 end
\ No newline at end of file</diff>
      <filename>lib/webrat/core/configuration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -72,5 +72,3 @@ module Webrat #:nodoc:
       end
   end
 end
-
-Webrat.configuration.mode = :mechanize
\ No newline at end of file</diff>
      <filename>lib/webrat/mechanize.rb</filename>
    </modified>
    <modified>
      <diff>@@ -72,6 +72,3 @@ class Merb::Test::RspecStory #:nodoc:
     @browser ||= Webrat::MerbSession.new
   end
 end
-
-Webrat.configuration.mode = :merb
-</diff>
      <filename>lib/webrat/merb.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,5 +22,3 @@ module Webrat
     end
   end
 end
-
-Webrat.configuration.mode = :rack
\ No newline at end of file</diff>
      <filename>lib/webrat/rack.rb</filename>
    </modified>
    <modified>
      <diff>@@ -86,11 +86,8 @@ module ActionController #:nodoc:
       end
     end
   end
-  
   IntegrationTest.class_eval do
     include Webrat::Methods
     include Webrat::Matchers
   end
 end
-
-Webrat.configuration.mode = :rails
\ No newline at end of file</diff>
      <filename>lib/webrat/rails.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,8 +4,6 @@ require &quot;selenium/client&quot;
 require &quot;webrat/selenium/selenium_session&quot;
 require &quot;webrat/selenium/matchers&quot;
 
-Webrat.configuration.mode = :selenium
-
 module Webrat
   
   def self.with_selenium_server #:nodoc:</diff>
      <filename>lib/webrat/selenium.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,5 +17,3 @@ module Webrat
     
   end
 end
-
-Webrat.configuration.mode = :sinatra
\ No newline at end of file</diff>
      <filename>lib/webrat/sinatra.rb</filename>
    </modified>
    <modified>
      <diff>@@ -38,4 +38,10 @@ module Webrat
   def self.reset_for_test
     @@configuration = @@previous_config if @@previous_config
   end
+  
+  class Configuration
+    def mode_for_test= (mode)
+      @mode = mode
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + &quot;/../../spec_helper&quot;)
 describe Webrat::Configuration do
   predicate_matchers[:parse_with_nokogiri]  = :parse_with_nokogiri?
   predicate_matchers[:open_error_files]     = :open_error_files?
-  
+
   before do
     Webrat.cache_config_for_test
   end
@@ -41,4 +41,17 @@ describe Webrat::Configuration do
     config = Webrat.configuration
     config.should_not open_error_files
   end
+  
+  [:rails, 
+   :selenium,
+   :rack,
+   :sinatra,
+   :merb,
+   :mechanize].each do |mode|
+    it &quot;should require correct lib when in #{mode} mode&quot; do
+      config = Webrat::Configuration.new
+      config.should_receive(:require).with(&quot;webrat/#{mode}&quot;)
+      config.mode = mode
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/webrat/core/configuration_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,13 +3,13 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
 describe &quot;Webrat::MechanizeSession&quot; do
   before :all do
     Webrat.cache_config_for_test
-    require &quot;webrat/mechanize&quot;
+    Webrat.configuration.mode = :mechanize
   end
   
   after :all do
     Webrat.reset_for_test
   end
-  
+
   before(:each) do
     @mech = Webrat::MechanizeSession.new
   end</diff>
      <filename>spec/webrat/mechanize/mechanize_session_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,3 +7,4 @@ silence_warnings do
 end
 
 require &quot;webrat/rails&quot;
+Webrat.configuration.mode_for_test = :rails</diff>
      <filename>spec/webrat/rails/helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6d7fc04f71c170c889e6d758d5de9d98401f72dd</id>
    </parent>
  </parents>
  <author>
    <name>gaffo</name>
    <email>mike@uberu.com</email>
  </author>
  <url>http://github.com/brynary/webrat/commit/22c7834512190c5991cd0ff9e27c750037be0405</url>
  <id>22c7834512190c5991cd0ff9e27c750037be0405</id>
  <committed-date>2008-12-25T20:07:10-08:00</committed-date>
  <authored-date>2008-12-25T20:04:41-08:00</authored-date>
  <message>Sets the Webrat mode with Configuration#mode= in the config block</message>
  <tree>473e024ebfb283d48fb42e3663fba2fcd4db6b2c</tree>
  <committer>
    <name>Bryan Helmkamp</name>
    <email>bryan@brynary.com</email>
  </committer>
</commit>
