<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>log/default.yml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -14,7 +14,7 @@ END
 
   def test_route
     get :test_file, :testname =&gt; 'html.html' #initialize the controller
-    assert_equal 'http://test.host/selenium/tests/suite/test_case.sel', 
+    assert_equal 'http://test.host/selenium/tests/suite%2Ftest_case.sel', 
         @controller.url_for(:controller =&gt; 'selenium', :action =&gt; 'test_file', :testname =&gt; 'suite/test_case.sel')
   end
   </diff>
      <filename>test/renderer_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,672 +1,676 @@
-require File.dirname(__FILE__) + '/test_helper'
-
-class RSeleneseTest &lt; Test::Unit::TestCase
-  include ERB::Util
-  
-  def rselenese name, input, partial = nil, type = nil
-    view = TestView.new
-    view.override_partial partial, type do
-      view.assigns['page_title'] = name
-      view.render_template 'rsel', input
-    end
-  end
-
-  def assert_rselenese expected, name, input, partial = nil, type = nil
-    assert_text_equal(expected, rselenese(name, input, partial, type))
-  end
-
-  def test_empty
-    expected = &lt;&lt;END
-&lt;table&gt;
-&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Empty&lt;/th&gt;&lt;/tr&gt;
-&lt;/table&gt;
-END
-    input = ''
-    assert_rselenese expected, 'Empty', input
-  end
-
-  def assert_generates_command expected, name, *args
-    expected = expected.map {|v| h(v) }
-    expected &lt;&lt; '&amp;nbsp;' while expected.length &lt; 3
-    expected = expected.map {|v| &quot;&lt;td&gt;#{v}&lt;/td&gt;&quot; }.join
-    expected_html = &lt;&lt;END
-&lt;table&gt;
-&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Selenese Commands&lt;/th&gt;&lt;/tr&gt;
-&lt;tr&gt;#{expected}&lt;/tr&gt;
-&lt;/table&gt;
-END
-    args_str  = args.map {|a| a.inspect }.join(',')
-    input = &quot;#{name}(#{args_str})&quot;
-    assert_rselenese expected_html, 'Selenese Commands', input
-  end
-
-  def test_element_locators
-    assert_generates_command %w{click aCheckbox}, :click, 'aCheckbox'
-    assert_generates_command %w{click document.foo}, :click, 'document.foo'
-    assert_generates_command %w{click //a}, :click, '//a'
-  end
-
-  def test_collection_arguments
-    assert_generates_command ['assertAllLinks', 'link1,link2,link3'], :assert_all_links, ['link1', 'link2','link3']
-    assert_generates_command ['assertAllLinks', 'link?,link?,link?'], :assert_all_links, 'link?,link?,link?'
-  end
-
-  ARG_VALUE_MAP = {
-    # We can't test url_for style arguments here, because we don't have
-    # a valid controller to interpret them.  See RendererTest.
-    :url =&gt; '/relative/url',
-    :string =&gt; '1234',
-    :pattern =&gt; 'glob:J* Smith', # Also: many other formats.
-    :dimension =&gt; '10',
-    :variable =&gt; 'varname',
-    :locator =&gt; 'foo',
-    :coord_string =&gt; '10,20',
-    :movements_string =&gt; '+70,-300',
-    :script =&gt; 'script',
-    :attribute_name =&gt; 'attribute',
-    :locator_and_attribute_name =&gt; [['foo', 'attribute'], 'foo@attribute'],
-    :table_locator =&gt; [['table', 2, 4], 'table.2.4'],
-    :coll_pattern =&gt; [[['a', &quot;b\\&quot;, 'c,']], &quot;a,b\\\\,c\\,&quot;],
-    :event_name =&gt; 'eventName',
-    :keycode =&gt; 123,
-    :option_locator =&gt; 'label=hello',
-    :window_id =&gt; [[nil], 'null'],
-    :window_name =&gt; 'myWindow',
-    :timeout =&gt; 123,
-    :integer =&gt; 1,
-    :log_level =&gt; :debug,
-    :name_value_pair =&gt; 'name=value',
-    :options_string =&gt; 'path=/path/, max_age=60'
-  }
-
-  # Call _command_ with _args_ and make sure it produces a good table.
-  # If the input command doesn't 'selenize' cleanly (e.g. if the input command
-  # is :do_foo and the expected result is +dofoo+ and not +doFoo+) +command+
-  # can be specified as an array (e.g. +[:input_command, 'expectedResult']+).
-  def assert_command_works command, *args
-    expected_values = args.inject([]) do |c, arg|
-      v = ARG_VALUE_MAP[arg]
-      if v.is_a? Array
-        c &lt;&lt; v[1]
-      else
-        c &lt;&lt; v
-      end
-    end
-    input_values = args.inject([]) do |c, arg|
-      v = ARG_VALUE_MAP[arg]
-      if v.is_a? Array
-        c.concat v[0]
-      else
-        c &lt;&lt; v
-      end
-    end
-    input_name, expected_name  = (command.is_a?(Array) ? command : [command, SeleniumOnRails::TestBuilder.selenize(command.to_s)])
-    assert_generates_command [expected_name]+expected_values, input_name.to_s, *input_values
-  end
-
-  def test_action_commands
-    assert_command_works [:brake, 'break']
-    assert_command_works :create_cookie, :name_value_pair, :options_string
-    assert_command_works :delete_cookie, :string, :string
-    assert_command_works :double_click, :locator
-    assert_command_works :double_click_at, :locator, :coord_string
-    assert_command_works :drag_and_drop, :locator, :movements_string
-    assert_command_works :drag_and_drop_to_object, :locator, :locator
-    assert_command_works :echo, :string
-    assert_command_works :highlight, :locator
-    assert_command_works :meta_key_down
-    assert_command_works :meta_key_up
-    assert_command_works :mouse_down_at, :locator, :coord_string
-    assert_command_works :mouse_move, :locator
-    assert_command_works :mouse_move_at, :locator, :coord_string
-    assert_command_works :mouse_out, :locator
-    assert_command_works :mouse_up, :locator
-    assert_command_works :mouse_up_at, :locator, :coord_string
-    assert_command_works :open_window, :url, :integer
-    assert_command_works :pause, :timeout
-    assert_command_works :remove_all_selections, :locator
-    assert_command_works :select_frame, :locator
-    assert_command_works :set_cursor_position, :locator, :integer
-    assert_command_works :set_mouse_speed, :integer
-    assert_command_works :shift_key_down
-    assert_command_works :shift_key_up
-    assert_command_works :store, :script, :variable
-    assert_command_works :type_keys, :locator, :string
-    assert_command_works :window_focus, :window_name
-    assert_command_works :window_maximize, :window_name
-    assert_command_works :click, :locator
-    assert_command_works :click_and_wait, :locator
-    assert_command_works :click_at, :locator, :coord_string
-    assert_command_works :fire_event, :locator, :event_name
-    assert_command_works :fire_event_and_wait, :locator, :event_name
-    assert_command_works :key_press, :locator, :keycode
-    assert_command_works :key_press_and_wait, :locator, :keycode
-    assert_command_works :key_down, :locator, :keycode
-    assert_command_works :key_down_and_wait, :locator, :keycode
-    assert_command_works :key_up, :locator, :keycode
-    assert_command_works :key_up_and_wait, :locator, :keycode
-    assert_command_works :alt_key_down
-    assert_command_works :alt_key_up
-    assert_command_works :control_key_down
-    assert_command_works :control_key_up
-    assert_command_works :mouse_over, :locator
-    assert_command_works :mouse_over_and_wait, :locator
-    assert_command_works :mouse_down, :locator
-    assert_command_works :mouse_down_and_wait, :locator
-    assert_command_works :type, :locator, :string
-    assert_command_works :type_and_wait, :locator, :string
-    assert_command_works :check, :locator
-    assert_command_works :check_and_wait, :locator
-    assert_command_works :uncheck, :locator
-    assert_command_works :uncheck_and_wait, :locator
-    assert_command_works :select, :locator, :option_locator
-    assert_command_works :select_and_wait, :locator, :option_locator
-    assert_command_works :add_selection, :locator, :option_locator
-    assert_command_works :add_selection_and_wait, :locator, :option_locator
-    assert_command_works :remove_selection, :locator, :option_locator
-    assert_command_works :remove_selection_and_wait, :locator, :option_locator
-    assert_command_works :submit, :locator
-    assert_command_works :open, :url
-    assert_command_works :select_window, :window_id
-    assert_command_works [:wait_for_popup, 'waitForPopUp'], :window_id, :timeout
-    assert_command_works :choose_cancel_on_next_confirmation
-    assert_command_works :choose_cancel_on_next_confirmation_and_wait
-    assert_command_works :answer_on_next_prompt, :string
-    assert_command_works :answer_on_next_prompt_and_wait, :string
-    assert_command_works :go_back
-    assert_command_works :refresh
-    assert_command_works :close
-    assert_command_works :set_context, :string
-    assert_command_works :set_context, :string, :log_level
-    assert_command_works :wait_for_condition, :script, :timeout
-    assert_command_works :set_timeout, :timeout
-    assert_command_works :wait_for_page_to_load, :timeout
-  end
-
-  def test_accessor_commands
-    assert_command_works :store_alert_present, :variable
-    assert_command_works :assert_alert_present
-    assert_command_works :assert_alert_not_present
-    assert_command_works :verify_alert_present
-    assert_command_works :verify_alert_not_present
-    assert_command_works :wait_for_alert_present
-    assert_command_works :wait_for_alert_not_present
-
-    assert_command_works :store_prompt_present, :variable 
-    assert_command_works :assert_prompt_present
-    assert_command_works :assert_prompt_not_present
-    assert_command_works :verify_prompt_present
-    assert_command_works :verify_prompt_not_present
-    assert_command_works :wait_for_prompt_present
-    assert_command_works :wait_for_prompt_not_present
-
-    assert_command_works :store_confirmation_present, :variable 
-    assert_command_works :assert_confirmation_present
-    assert_command_works :assert_confirmation_not_present
-    assert_command_works :verify_confirmation_present
-    assert_command_works :verify_confirmation_not_present
-    assert_command_works :wait_for_confirmation_present
-    assert_command_works :wait_for_confirmation_not_present
-
-    assert_command_works :store_alert, :variable
-    assert_command_works :assert_alert, :pattern
-    assert_command_works :assert_not_alert, :pattern
-    assert_command_works :verify_alert, :pattern
-    assert_command_works :verify_not_alert, :pattern
-    assert_command_works :wait_for_alert, :pattern
-    assert_command_works :wait_for_not_alert, :pattern
-
-    assert_command_works :store_confirmation, :variable
-    assert_command_works :assert_confirmation, :pattern
-    assert_command_works :assert_not_confirmation, :pattern
-    assert_command_works :verify_confirmation, :pattern
-    assert_command_works :verify_not_confirmation, :pattern
-    assert_command_works :wait_for_confirmation, :pattern
-    assert_command_works :wait_for_not_confirmation, :pattern
-
-    assert_command_works :store_prompt, :variable
-    assert_command_works :assert_prompt, :pattern
-    assert_command_works :assert_not_prompt, :pattern
-    assert_command_works :verify_prompt, :pattern
-    assert_command_works :verify_not_prompt, :pattern
-    assert_command_works :wait_for_prompt, :pattern
-    assert_command_works :wait_for_not_prompt, :pattern
-
-    assert_command_works :store_absolute_location, :variable
-    assert_command_works :assert_absolute_location, :url
-    assert_command_works :assert_not_absolute_location, :url
-    assert_command_works :verify_absolute_location, :url
-    assert_command_works :verify_not_absolute_location, :url
-    assert_command_works :wait_for_absolute_location, :url
-    assert_command_works :wait_for_not_absolute_location, :url
-
-    assert_command_works :store_location, :pattern, :variable
-    assert_command_works :assert_location, :url
-    assert_command_works :assert_not_location, :url
-    assert_command_works :verify_location, :url
-    assert_command_works :verify_not_location, :url
-    assert_command_works :wait_for_location, :url
-    assert_command_works :wait_for_not_location, :url
-    
-    assert_command_works :store_title, :variable
-    assert_command_works :assert_title, :pattern
-    assert_command_works :assert_not_title, :pattern
-    assert_command_works :verify_title, :pattern
-    assert_command_works :verify_not_title, :pattern
-    assert_command_works :wait_for_title, :pattern
-    assert_command_works :wait_for_not_title, :pattern
-
-    assert_command_works :store_body_text, :variable
-    assert_command_works :assert_body_text, :pattern
-    assert_command_works :assert_not_body_text, :pattern
-    assert_command_works :verify_body_text, :pattern
-    assert_command_works :verify_not_body_text, :pattern
-    assert_command_works :wait_for_body_text, :pattern
-    assert_command_works :wait_for_not_body_text, :pattern
-
-    assert_command_works :store_value, :locator, :variable
-    assert_command_works :assert_value, :locator, :pattern
-    assert_command_works :assert_not_value, :locator, :pattern
-    assert_command_works :verify_value, :locator, :pattern
-    assert_command_works :verify_not_value, :locator, :pattern
-    assert_command_works :wait_for_value, :locator, :pattern
-    assert_command_works :wait_for_not_value, :locator, :pattern
-
-    assert_command_works :store_text, :locator, :variable
-    assert_command_works :assert_text, :locator, :pattern
-    assert_command_works :assert_not_text, :locator, :pattern
-    assert_command_works :verify_text, :locator, :pattern
-    assert_command_works :verify_not_text, :locator, :pattern
-    assert_command_works :wait_for_text, :locator, :pattern
-    assert_command_works :wait_for_not_text, :locator, :pattern
-
-    assert_command_works :store_eval, :script, :variable
-    assert_command_works :assert_eval, :script, :pattern
-    assert_command_works :assert_not_eval, :script, :pattern
-    assert_command_works :verify_eval, :script, :pattern
-    assert_command_works :verify_not_eval, :script, :pattern
-    assert_command_works :wait_for_eval, :script, :pattern
-    assert_command_works :wait_for_not_eval, :script, :pattern
-
-    assert_command_works :store_checked, :locator, :variable
-    assert_command_works :assert_checked, :locator
-    assert_command_works :assert_not_checked, :locator
-    assert_command_works :verify_checked, :locator
-    assert_command_works :verify_not_checked, :locator
-    assert_command_works :wait_for_checked, :locator
-    assert_command_works :wait_for_not_checked, :locator
-
-    assert_command_works :store_table, :table_locator, :variable
-    assert_command_works :assert_table, :table_locator, :pattern
-    assert_command_works :assert_not_table, :table_locator, :pattern
-    assert_command_works :verify_table, :table_locator, :pattern
-    assert_command_works :verify_not_table, :table_locator, :pattern
-    assert_command_works :wait_for_table, :table_locator, :pattern
-    assert_command_works :wait_for_not_table, :table_locator, :pattern
-    
-    assert_raise RuntimeError do
-      assert_command_works :store_selected, :locator, :option_locator, :variable
-    end
-    assert_command_works :assert_selected, :locator, :option_locator
-    assert_command_works :assert_not_selected, :locator, :option_locator
-    assert_command_works :verify_selected, :locator, :option_locator
-    assert_command_works :verify_not_selected, :locator, :option_locator
-    assert_command_works :wait_for_selected, :locator, :option_locator
-    assert_command_works :wait_for_not_selected, :locator, :option_locator
-    
-    assert_command_works :store_selected_id, :locator, :variable
-    assert_command_works :assert_selected_id, :locator, :pattern
-    assert_command_works :assert_not_selected_id, :locator, :pattern
-    assert_command_works :verify_selected_id, :locator, :pattern
-    assert_command_works :verify_not_selected_id, :locator, :pattern
-    assert_command_works :wait_for_selected_id, :locator, :pattern
-    assert_command_works :wait_for_not_selected_id, :locator, :pattern
-    
-    assert_command_works :store_selected_ids, :locator, :variable
-    assert_command_works :assert_selected_ids, :locator, :pattern
-    assert_command_works :assert_not_selected_ids, :locator, :pattern
-    assert_command_works :verify_selected_ids, :locator, :pattern
-    assert_command_works :verify_not_selected_ids, :locator, :pattern
-    assert_command_works :wait_for_selected_ids, :locator, :pattern
-    assert_command_works :wait_for_not_selected_ids, :locator, :pattern
-    
-    assert_command_works :store_selected_index, :locator, :variable
-    assert_command_works :assert_selected_index, :locator, :pattern
-    assert_command_works :assert_not_selected_index, :locator, :pattern
-    assert_command_works :verify_selected_index, :locator, :pattern
-    assert_command_works :verify_not_selected_index, :locator, :pattern
-    assert_command_works :wait_for_selected_index, :locator, :pattern
-    assert_command_works :wait_for_not_selected_index, :locator, :pattern
-    
-    assert_command_works :store_selected_indexes, :locator, :variable
-    assert_command_works :assert_selected_indexes, :locator, :pattern
-    assert_command_works :assert_not_selected_indexes, :locator, :pattern
-    assert_command_works :verify_selected_indexes, :locator, :pattern
-    assert_command_works :verify_not_selected_indexes, :locator, :pattern
-    assert_command_works :wait_for_selected_indexes, :locator, :pattern
-    assert_command_works :wait_for_not_selected_indexes, :locator, :pattern
-    
-    assert_command_works :store_selected_label, :locator, :variable
-    assert_command_works :assert_selected_label, :locator, :pattern
-    assert_command_works :assert_not_selected_label, :locator, :pattern
-    assert_command_works :verify_selected_label, :locator, :pattern
-    assert_command_works :verify_not_selected_label, :locator, :pattern
-    assert_command_works :wait_for_selected_label, :locator, :pattern
-    assert_command_works :wait_for_not_selected_label, :locator, :pattern
-    
-    assert_command_works :store_selected_labels, :locator, :variable
-    assert_command_works :assert_selected_labels, :locator, :pattern
-    assert_command_works :assert_not_selected_labels, :locator, :pattern
-    assert_command_works :verify_selected_labels, :locator, :pattern
-    assert_command_works :verify_not_selected_labels, :locator, :pattern
-    assert_command_works :wait_for_selected_labels, :locator, :pattern
-    assert_command_works :wait_for_not_selected_labels, :locator, :pattern
-    
-    assert_command_works :store_selected_value, :locator, :variable
-    assert_command_works :assert_selected_value, :locator, :pattern
-    assert_command_works :assert_not_selected_value, :locator, :pattern
-    assert_command_works :verify_selected_value, :locator, :pattern
-    assert_command_works :verify_not_selected_value, :locator, :pattern
-    assert_command_works :wait_for_selected_value, :locator, :pattern
-    assert_command_works :wait_for_not_selected_value, :locator, :pattern
-    
-    assert_command_works :store_selected_values, :locator, :variable
-    assert_command_works :assert_selected_values, :locator, :pattern
-    assert_command_works :assert_not_selected_values, :locator, :pattern
-    assert_command_works :verify_selected_values, :locator, :pattern
-    assert_command_works :verify_not_selected_values, :locator, :pattern
-    assert_command_works :wait_for_selected_values, :locator, :pattern
-    assert_command_works :wait_for_not_selected_values, :locator, :pattern
-    
-    assert_command_works :store_something_selected, :locator, :variable
-    assert_command_works :assert_something_selected, :locator
-    assert_command_works :assert_not_something_selected, :locator
-    assert_command_works :verify_something_selected, :locator
-    assert_command_works :verify_not_something_selected, :locator
-    assert_command_works :wait_for_something_selected, :locator
-    assert_command_works :wait_for_not_something_selected, :locator
-
-    assert_command_works :store_selected_options, :locator, :variable
-    assert_command_works :assert_selected_options, :locator, :coll_pattern
-    assert_command_works :assert_not_selected_options, :locator, :coll_pattern
-    assert_command_works :verify_selected_options, :locator, :coll_pattern
-    assert_command_works :verify_not_selected_options, :locator, :coll_pattern
-    assert_command_works :wait_for_selected_options, :locator, :coll_pattern
-    assert_command_works :wait_for_not_selected_options, :locator, :coll_pattern
-
-    assert_command_works :store_select_options, :locator, :variable
-    assert_command_works :assert_select_options, :locator, :coll_pattern
-    assert_command_works :assert_not_select_options, :locator, :coll_pattern
-    assert_command_works :verify_select_options, :locator, :coll_pattern
-    assert_command_works :verify_not_select_options, :locator, :coll_pattern
-    assert_command_works :wait_for_select_options, :locator, :coll_pattern
-    assert_command_works :wait_for_not_select_options, :locator, :coll_pattern
-
-    assert_command_works :store_attribute, :locator_and_attribute_name, :variable
-    assert_command_works :assert_attribute, :locator_and_attribute_name, :pattern
-    assert_command_works :assert_not_attribute, :locator_and_attribute_name, :pattern
-    assert_command_works :verify_attribute, :locator_and_attribute_name, :pattern
-    assert_command_works :verify_not_attribute, :locator_and_attribute_name, :pattern
-    assert_command_works :wait_for_attribute, :locator_and_attribute_name, :pattern
-    assert_command_works :wait_for_not_attribute, :locator_and_attribute_name, :pattern
-    
-    assert_raise RuntimeError do
-      assert_command_works :store_ordered, :locator, :locator, :variable
-    end
-    assert_command_works :assert_ordered, :locator, :locator
-    assert_command_works :assert_not_ordered, :locator, :locator
-    assert_command_works :verify_ordered, :locator, :locator
-    assert_command_works :verify_not_ordered, :locator, :locator
-    assert_command_works :wait_for_ordered, :locator, :locator
-    assert_command_works :wait_for_not_ordered, :locator, :locator
-
-    assert_command_works :store_text_present, :pattern, :variable
-    assert_command_works :assert_text_present, :pattern
-    assert_command_works :assert_text_not_present, :pattern
-    assert_command_works :verify_text_present, :pattern
-    assert_command_works :verify_text_not_present, :pattern
-    assert_command_works :wait_for_text_present, :pattern
-    assert_command_works :wait_for_text_not_present, :pattern
-
-    assert_command_works :store_element_present, :locator, :variable
-    assert_command_works :assert_element_present, :locator
-    assert_command_works :assert_element_not_present, :locator
-    assert_command_works :verify_element_present, :locator
-    assert_command_works :verify_element_not_present, :locator
-    assert_command_works :wait_for_element_present, :locator
-    assert_command_works :wait_for_element_not_present, :locator
-
-    assert_command_works :store_visible, :locator, :variable
-    assert_command_works :assert_visible, :locator
-    assert_command_works :assert_not_visible, :locator
-    assert_command_works :verify_visible, :locator
-    assert_command_works :verify_not_visible, :locator
-    assert_command_works :wait_for_visible, :locator
-    assert_command_works :wait_for_not_visible, :locator
-    
-    assert_raise RuntimeError do
-      assert_command_works :store_error_on_next, :string
-    end
-    assert_command_works :assert_error_on_next, :string
-    assert_command_works :assert_not_error_on_next, :string
-    assert_command_works :verify_error_on_next, :string
-    assert_command_works :verify_not_error_on_next, :string
-    assert_command_works :wait_for_error_on_next, :string
-    assert_command_works :wait_for_not_error_on_next, :string    
-    
-    assert_raise RuntimeError do
-      assert_command_works :store_failure_on_next, :string
-    end
-    assert_command_works :assert_failure_on_next, :string
-    assert_command_works :assert_not_failure_on_next, :string
-    assert_command_works :verify_failure_on_next, :string
-    assert_command_works :verify_not_failure_on_next, :string
-    assert_command_works :wait_for_failure_on_next, :string
-    assert_command_works :wait_for_not_failure_on_next, :string
-    
-    assert_command_works :store_all_window_ids, :variable
-    assert_command_works :assert_all_window_ids, :pattern
-    assert_command_works :assert_not_all_window_ids, :pattern
-    assert_command_works :verify_all_window_ids, :pattern
-    assert_command_works :verify_not_all_window_ids, :pattern
-    assert_command_works :wait_for_all_window_ids, :pattern
-    assert_command_works :wait_for_not_all_window_ids, :pattern
-
-    assert_command_works :store_all_window_names, :variable
-    assert_command_works :assert_all_window_names, :pattern
-    assert_command_works :assert_not_all_window_names, :pattern
-    assert_command_works :verify_all_window_names, :pattern
-    assert_command_works :verify_not_all_window_names, :pattern
-    assert_command_works :wait_for_all_window_names, :pattern
-    assert_command_works :wait_for_not_all_window_names, :pattern
-
-    assert_command_works :store_all_window_titles, :variable
-    assert_command_works :assert_all_window_titles, :pattern
-    assert_command_works :assert_not_all_window_titles, :pattern
-    assert_command_works :verify_all_window_titles, :pattern
-    assert_command_works :verify_not_all_window_titles, :pattern
-    assert_command_works :wait_for_all_window_titles, :pattern
-    assert_command_works :wait_for_not_all_window_titles, :pattern
-    
-    assert_command_works :store_cookie, :variable
-    assert_command_works :assert_cookie, :pattern
-    assert_command_works :assert_not_cookie, :pattern
-    assert_command_works :verify_cookie, :pattern
-    assert_command_works :verify_not_cookie, :pattern
-    assert_command_works :wait_for_cookie, :pattern
-    assert_command_works :wait_for_not_cookie, :pattern
-    
-    assert_command_works :store_log_messages, :variable
-    assert_command_works :assert_log_messages, :pattern
-    assert_command_works :assert_not_log_messages, :pattern
-    assert_command_works :verify_log_messages, :pattern
-    assert_command_works :verify_not_log_messages, :pattern
-    assert_command_works :wait_for_log_messages, :pattern
-    assert_command_works :wait_for_not_log_messages, :pattern
-    
-    assert_command_works :store_mouse_speed, :variable
-    assert_command_works :assert_mouse_speed, :pattern
-    assert_command_works :assert_not_mouse_speed, :pattern
-    assert_command_works :verify_mouse_speed, :pattern
-    assert_command_works :verify_not_mouse_speed, :pattern
-    assert_command_works :wait_for_mouse_speed, :pattern
-    assert_command_works :wait_for_not_mouse_speed, :pattern
-
-    assert_command_works :store_cursor_position, :locator, :variable
-    assert_command_works :assert_cursor_position, :locator, :pattern
-    assert_command_works :assert_not_cursor_position, :locator, :pattern
-    assert_command_works :verify_cursor_position, :locator, :pattern
-    assert_command_works :verify_not_cursor_position, :locator, :pattern
-    assert_command_works :wait_for_cursor_position, :locator, :pattern
-    assert_command_works :wait_for_not_cursor_position, :locator, :pattern
-    
-    assert_command_works :store_attribute_from_all_windows, :attribute_name, :variable
-    assert_command_works :assert_attribute_from_all_windows, :attribute_name, :pattern
-    assert_command_works :assert_not_attribute_from_all_windows, :attribute_name, :pattern
-    assert_command_works :verify_attribute_from_all_windows, :attribute_name, :pattern
-    assert_command_works :verify_not_attribute_from_all_windows, :attribute_name, :pattern
-    assert_command_works :wait_for_attribute_from_all_windows, :attribute_name, :pattern
-    assert_command_works :wait_for_not_attribute_from_all_windows, :attribute_name, :pattern
-
-    assert_command_works :store_element_height, :locator, :variable
-    assert_command_works :assert_element_height, :locator, :dimension
-    assert_command_works :assert_not_element_height, :locator, :dimension
-    assert_command_works :verify_element_height, :locator, :dimension
-    assert_command_works :verify_not_element_height, :locator, :dimension
-    assert_command_works :wait_for_element_height, :locator, :dimension
-    assert_command_works :wait_for_not_element_height, :locator, :dimension
-    
-    assert_command_works :store_element_index, :locator, :variable
-    assert_command_works :assert_element_index, :locator, :pattern
-    assert_command_works :assert_not_element_index, :locator, :pattern
-    assert_command_works :verify_element_index, :locator, :pattern
-    assert_command_works :verify_not_element_index, :locator, :pattern
-    assert_command_works :wait_for_element_index, :locator, :pattern
-    assert_command_works :wait_for_not_element_index, :locator, :pattern
-
-    assert_command_works :store_element_width, :locator, :variable
-    assert_command_works :assert_element_width, :locator, :dimension
-    assert_command_works :assert_not_element_width, :locator, :dimension
-    assert_command_works :verify_element_width, :locator, :dimension
-    assert_command_works :verify_not_element_width, :locator, :dimension
-    assert_command_works :wait_for_element_width, :locator, :dimension
-    assert_command_works :wait_for_not_element_width, :locator, :dimension
-
-    assert_command_works :store_element_position_left, :locator, :variable
-    assert_command_works :assert_element_position_left, :locator, :dimension
-    assert_command_works :assert_not_element_position_left, :locator, :dimension
-    assert_command_works :verify_element_position_left, :locator, :dimension
-    assert_command_works :verify_not_element_position_left, :locator, :dimension
-    assert_command_works :wait_for_element_position_left, :locator, :dimension
-    assert_command_works :wait_for_not_element_position_left, :locator, :dimension
-
-    assert_command_works :store_element_position_top, :locator, :variable
-    assert_command_works :assert_element_position_top, :locator, :dimension
-    assert_command_works :assert_not_element_position_top, :locator, :dimension
-    assert_command_works :verify_element_position_top, :locator, :dimension
-    assert_command_works :verify_not_element_position_top, :locator, :dimension
-    assert_command_works :wait_for_element_position_top, :locator, :dimension
-    assert_command_works :wait_for_not_element_position_top, :locator, :dimension
-
-    assert_command_works :store_editable, :locator, :variable
-    assert_command_works :assert_editable, :locator
-    assert_command_works :assert_not_editable, :locator
-    assert_command_works :verify_editable, :locator
-    assert_command_works :verify_not_editable, :locator
-    assert_command_works :wait_for_editable, :locator
-    assert_command_works :wait_for_not_editable, :locator
-
-    assert_command_works :store_all_buttons, :variable
-    assert_command_works :assert_all_buttons, :coll_pattern
-    assert_command_works :assert_not_all_buttons, :coll_pattern
-    assert_command_works :verify_all_buttons, :coll_pattern
-    assert_command_works :verify_not_all_buttons, :coll_pattern
-    assert_command_works :wait_for_all_buttons, :coll_pattern
-    assert_command_works :wait_for_not_all_buttons, :coll_pattern
-
-    assert_command_works :store_all_links, :variable
-    assert_command_works :assert_all_links, :coll_pattern
-    assert_command_works :assert_not_all_links, :coll_pattern
-    assert_command_works :verify_all_links, :coll_pattern
-    assert_command_works :verify_not_all_links, :coll_pattern
-    assert_command_works :wait_for_all_links, :coll_pattern
-    assert_command_works :wait_for_not_all_links, :coll_pattern
-
-    assert_command_works :store_all_fields, :variable
-    assert_command_works :assert_all_fields, :coll_pattern
-    assert_command_works :assert_not_all_fields, :coll_pattern
-    assert_command_works :verify_all_fields, :coll_pattern
-    assert_command_works :verify_not_all_fields, :coll_pattern
-    assert_command_works :wait_for_all_fields, :coll_pattern
-    assert_command_works :wait_for_not_all_fields, :coll_pattern
-
-    assert_command_works :store_html_source, :variable
-    assert_command_works :assert_html_source, :pattern
-    assert_command_works :assert_not_html_source, :pattern
-    assert_command_works :verify_html_source, :pattern
-    assert_command_works :verify_not_html_source, :pattern
-    assert_command_works :wait_for_html_source, :pattern
-    assert_command_works :wait_for_not_html_source, :pattern
-
-    assert_command_works :store_expression, :script, :variable
-    assert_command_works :assert_expression, :script, :pattern
-    assert_command_works :assert_not_expression, :script, :pattern
-    assert_command_works :verify_expression, :script, :pattern
-    assert_command_works :verify_not_expression, :script, :pattern
-    assert_command_works :wait_for_expression, :script, :pattern
-    assert_command_works :wait_for_not_expression, :script, :pattern
-    
-    assert_raise RuntimeError do
-      assert_command_works :store_whether_this_frame_match_frame_expression, :string, :string, :variable
-    end
-    assert_command_works :assert_whether_this_frame_match_frame_expression, :string, :string
-    assert_command_works :assert_not_whether_this_frame_match_frame_expression, :string, :string
-    assert_command_works :verify_whether_this_frame_match_frame_expression, :string, :string
-    assert_command_works :verify_not_whether_this_frame_match_frame_expression, :string, :string
-    assert_command_works :wait_for_whether_this_frame_match_frame_expression, :string, :string
-    assert_command_works :wait_for_not_whether_this_frame_match_frame_expression, :string, :string
-    
-    assert_raise RuntimeError do
-      assert_command_works :store_whether_this_window_match_window_expression, :string, :string, :variable
-    end
-    assert_command_works :assert_whether_this_window_match_window_expression, :string, :string
-    assert_command_works :assert_not_whether_this_window_match_window_expression, :string, :string
-    assert_command_works :verify_whether_this_window_match_window_expression, :string, :string
-    assert_command_works :verify_not_whether_this_window_match_window_expression, :string, :string
-    assert_command_works :wait_for_whether_this_window_match_window_expression, :string, :string
-    assert_command_works :wait_for_not_whether_this_window_match_window_expression, :string, :string
-    
-  end
-
-  def test_partial_support
-    expected = &lt;&lt;END
-&lt;table&gt;
-&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Partial support&lt;/th&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;partial&lt;/td&gt;&lt;td&gt;RSelenese partial&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-END
-    input = &quot;include_partial 'override'&quot;
-    partial = &quot;type 'partial', 'RSelenese partial'&quot;
-    assert_rselenese expected, 'Partial support', input, partial, 'rsel'
-  end
-  
-  def test_partial_support_with_local_assigns
-    expected = &lt;&lt;END_EXPECTED
-&lt;table&gt;
-&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Partial support with local variables&lt;/th&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;partial&lt;/td&gt;&lt;td&gt;RSelenese partial&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;local&lt;/td&gt;&lt;td&gt;par&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;local&lt;/td&gt;&lt;td&gt;tial&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-END_EXPECTED
-    input = &quot;include_partial 'override', :locator =&gt; 'local', :input =&gt; ['par', 'tial']&quot;
-    partial = &lt;&lt;END_PARTIAL
-type 'partial', 'RSelenese partial'
-input.each do |i|
-  type locator, i
-end
-END_PARTIAL
-    assert_rselenese expected, 'Partial support with local variables', input, partial, 'rsel'
-  end
-
-end
+require File.dirname(__FILE__) + '/test_helper'
+
+class RSeleneseTest &lt; Test::Unit::TestCase
+  include ERB::Util
+  
+  def rselenese name, input, partial = nil, type = nil
+    view = TestView.new(File.dirname(__FILE__))
+    view.override_partial partial, type do
+      view.assigns['page_title'] = name
+      path = File.dirname(__FILE__) + &quot;html.rsel&quot;
+      File.open(path, 'w+') do |index_file|
+        index_file &lt;&lt; input
+      end
+      view.render_template ActionView::Template.new(view, path, false, locals = {})
+    end
+  end
+
+  def assert_rselenese expected, name, input, partial = nil, type = nil
+    assert_text_equal(expected, rselenese(name, input, partial, type))
+  end
+
+  def test_empty
+    expected = &lt;&lt;END
+&lt;table&gt;
+&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Empty&lt;/th&gt;&lt;/tr&gt;
+&lt;/table&gt;
+END
+    input = ''
+    assert_rselenese expected, 'Empty', input
+  end
+
+  def assert_generates_command expected, name, *args
+    expected = expected.map {|v| h(v) }
+    expected &lt;&lt; '&amp;nbsp;' while expected.length &lt; 3
+    expected = expected.map {|v| &quot;&lt;td&gt;#{v}&lt;/td&gt;&quot; }.join
+    expected_html = &lt;&lt;END
+&lt;table&gt;
+&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Selenese Commands&lt;/th&gt;&lt;/tr&gt;
+&lt;tr&gt;#{expected}&lt;/tr&gt;
+&lt;/table&gt;
+END
+    args_str  = args.map {|a| a.inspect }.join(',')
+    input = &quot;#{name}(#{args_str})&quot;
+    assert_rselenese expected_html, 'Selenese Commands', input
+  end
+ 
+  def test_element_locators
+    assert_generates_command %w{click aCheckbox}, :click, 'aCheckbox'
+    assert_generates_command %w{click document.foo}, :click, 'document.foo'
+    assert_generates_command %w{click //a}, :click, '//a'
+  end
+
+  def test_collection_arguments
+    assert_generates_command ['assertAllLinks', 'link1,link2,link3'], :assert_all_links, ['link1', 'link2','link3']
+    assert_generates_command ['assertAllLinks', 'link?,link?,link?'], :assert_all_links, 'link?,link?,link?'
+  end
+
+  ARG_VALUE_MAP = {
+    # We can't test url_for style arguments here, because we don't have
+    # a valid controller to interpret them.  See RendererTest.
+    :url =&gt; '/relative/url',
+    :string =&gt; '1234',
+    :pattern =&gt; 'glob:J* Smith', # Also: many other formats.
+    :dimension =&gt; '10',
+    :variable =&gt; 'varname',
+    :locator =&gt; 'foo',
+    :coord_string =&gt; '10,20',
+    :movements_string =&gt; '+70,-300',
+    :script =&gt; 'script',
+    :attribute_name =&gt; 'attribute',
+    :locator_and_attribute_name =&gt; [['foo', 'attribute'], 'foo@attribute'],
+    :table_locator =&gt; [['table', 2, 4], 'table.2.4'],
+    :coll_pattern =&gt; [[['a', &quot;b\\&quot;, 'c,']], &quot;a,b\\\\,c\\,&quot;],
+    :event_name =&gt; 'eventName',
+    :keycode =&gt; 123,
+    :option_locator =&gt; 'label=hello',
+    :window_id =&gt; [[nil], 'null'],
+    :window_name =&gt; 'myWindow',
+    :timeout =&gt; 123,
+    :integer =&gt; 1,
+    :log_level =&gt; :debug,
+    :name_value_pair =&gt; 'name=value',
+    :options_string =&gt; 'path=/path/, max_age=60'
+  }
+
+  # Call _command_ with _args_ and make sure it produces a good table.
+  # If the input command doesn't 'selenize' cleanly (e.g. if the input command
+  # is :do_foo and the expected result is +dofoo+ and not +doFoo+) +command+
+  # can be specified as an array (e.g. +[:input_command, 'expectedResult']+).
+  def assert_command_works command, *args
+    expected_values = args.inject([]) do |c, arg|
+      v = ARG_VALUE_MAP[arg]
+      if v.is_a? Array
+        c &lt;&lt; v[1]
+      else
+        c &lt;&lt; v
+      end
+    end
+    input_values = args.inject([]) do |c, arg|
+      v = ARG_VALUE_MAP[arg]
+      if v.is_a? Array
+        c.concat v[0]
+      else
+        c &lt;&lt; v
+      end
+    end
+    input_name, expected_name  = (command.is_a?(Array) ? command : [command, SeleniumOnRails::TestBuilder.selenize(command.to_s)])
+    assert_generates_command [expected_name]+expected_values, input_name.to_s, *input_values
+  end
+
+  def test_action_commands
+    assert_command_works [:brake, 'break']
+    assert_command_works :create_cookie, :name_value_pair, :options_string
+    assert_command_works :delete_cookie, :string, :string
+    assert_command_works :double_click, :locator
+    assert_command_works :double_click_at, :locator, :coord_string
+    assert_command_works :drag_and_drop, :locator, :movements_string
+    assert_command_works :drag_and_drop_to_object, :locator, :locator
+    assert_command_works :echo, :string
+    assert_command_works :highlight, :locator
+    assert_command_works :meta_key_down
+    assert_command_works :meta_key_up
+    assert_command_works :mouse_down_at, :locator, :coord_string
+    assert_command_works :mouse_move, :locator
+    assert_command_works :mouse_move_at, :locator, :coord_string
+    assert_command_works :mouse_out, :locator
+    assert_command_works :mouse_up, :locator
+    assert_command_works :mouse_up_at, :locator, :coord_string
+    assert_command_works :open_window, :url, :integer
+    assert_command_works :pause, :timeout
+    assert_command_works :remove_all_selections, :locator
+    assert_command_works :select_frame, :locator
+    assert_command_works :set_cursor_position, :locator, :integer
+    assert_command_works :set_mouse_speed, :integer
+    assert_command_works :shift_key_down
+    assert_command_works :shift_key_up
+    assert_command_works :store, :script, :variable
+    assert_command_works :type_keys, :locator, :string
+    assert_command_works :window_focus, :window_name
+    assert_command_works :window_maximize, :window_name
+    assert_command_works :click, :locator
+    assert_command_works :click_and_wait, :locator
+    assert_command_works :click_at, :locator, :coord_string
+    assert_command_works :fire_event, :locator, :event_name
+    assert_command_works :fire_event_and_wait, :locator, :event_name
+    assert_command_works :key_press, :locator, :keycode
+    assert_command_works :key_press_and_wait, :locator, :keycode
+    assert_command_works :key_down, :locator, :keycode
+    assert_command_works :key_down_and_wait, :locator, :keycode
+    assert_command_works :key_up, :locator, :keycode
+    assert_command_works :key_up_and_wait, :locator, :keycode
+    assert_command_works :alt_key_down
+    assert_command_works :alt_key_up
+    assert_command_works :control_key_down
+    assert_command_works :control_key_up
+    assert_command_works :mouse_over, :locator
+    assert_command_works :mouse_over_and_wait, :locator
+    assert_command_works :mouse_down, :locator
+    assert_command_works :mouse_down_and_wait, :locator
+    assert_command_works :type, :locator, :string
+    assert_command_works :type_and_wait, :locator, :string
+    assert_command_works :check, :locator
+    assert_command_works :check_and_wait, :locator
+    assert_command_works :uncheck, :locator
+    assert_command_works :uncheck_and_wait, :locator
+    assert_command_works :select, :locator, :option_locator
+    assert_command_works :select_and_wait, :locator, :option_locator
+    assert_command_works :add_selection, :locator, :option_locator
+    assert_command_works :add_selection_and_wait, :locator, :option_locator
+    assert_command_works :remove_selection, :locator, :option_locator
+    assert_command_works :remove_selection_and_wait, :locator, :option_locator
+    assert_command_works :submit, :locator
+    assert_command_works :open, :url
+    assert_command_works :select_window, :window_id
+    assert_command_works [:wait_for_popup, 'waitForPopUp'], :window_id, :timeout
+    assert_command_works :choose_cancel_on_next_confirmation
+    assert_command_works :choose_cancel_on_next_confirmation_and_wait
+    assert_command_works :answer_on_next_prompt, :string
+    assert_command_works :answer_on_next_prompt_and_wait, :string
+    assert_command_works :go_back
+    assert_command_works :refresh
+    assert_command_works :close
+    assert_command_works :set_context, :string
+    assert_command_works :set_context, :string, :log_level
+    assert_command_works :wait_for_condition, :script, :timeout
+    assert_command_works :set_timeout, :timeout
+    assert_command_works :wait_for_page_to_load, :timeout
+  end
+
+  def test_accessor_commands
+    assert_command_works :store_alert_present, :variable
+    assert_command_works :assert_alert_present
+    assert_command_works :assert_alert_not_present
+    assert_command_works :verify_alert_present
+    assert_command_works :verify_alert_not_present
+    assert_command_works :wait_for_alert_present
+    assert_command_works :wait_for_alert_not_present
+
+    assert_command_works :store_prompt_present, :variable 
+    assert_command_works :assert_prompt_present
+    assert_command_works :assert_prompt_not_present
+    assert_command_works :verify_prompt_present
+    assert_command_works :verify_prompt_not_present
+    assert_command_works :wait_for_prompt_present
+    assert_command_works :wait_for_prompt_not_present
+
+    assert_command_works :store_confirmation_present, :variable 
+    assert_command_works :assert_confirmation_present
+    assert_command_works :assert_confirmation_not_present
+    assert_command_works :verify_confirmation_present
+    assert_command_works :verify_confirmation_not_present
+    assert_command_works :wait_for_confirmation_present
+    assert_command_works :wait_for_confirmation_not_present
+
+    assert_command_works :store_alert, :variable
+    assert_command_works :assert_alert, :pattern
+    assert_command_works :assert_not_alert, :pattern
+    assert_command_works :verify_alert, :pattern
+    assert_command_works :verify_not_alert, :pattern
+    assert_command_works :wait_for_alert, :pattern
+    assert_command_works :wait_for_not_alert, :pattern
+
+    assert_command_works :store_confirmation, :variable
+    assert_command_works :assert_confirmation, :pattern
+    assert_command_works :assert_not_confirmation, :pattern
+    assert_command_works :verify_confirmation, :pattern
+    assert_command_works :verify_not_confirmation, :pattern
+    assert_command_works :wait_for_confirmation, :pattern
+    assert_command_works :wait_for_not_confirmation, :pattern
+
+    assert_command_works :store_prompt, :variable
+    assert_command_works :assert_prompt, :pattern
+    assert_command_works :assert_not_prompt, :pattern
+    assert_command_works :verify_prompt, :pattern
+    assert_command_works :verify_not_prompt, :pattern
+    assert_command_works :wait_for_prompt, :pattern
+    assert_command_works :wait_for_not_prompt, :pattern
+
+    assert_command_works :store_absolute_location, :variable
+    assert_command_works :assert_absolute_location, :url
+    assert_command_works :assert_not_absolute_location, :url
+    assert_command_works :verify_absolute_location, :url
+    assert_command_works :verify_not_absolute_location, :url
+    assert_command_works :wait_for_absolute_location, :url
+    assert_command_works :wait_for_not_absolute_location, :url
+
+    assert_command_works :store_location, :pattern, :variable
+    assert_command_works :assert_location, :url
+    assert_command_works :assert_not_location, :url
+    assert_command_works :verify_location, :url
+    assert_command_works :verify_not_location, :url
+    assert_command_works :wait_for_location, :url
+    assert_command_works :wait_for_not_location, :url
+    
+    assert_command_works :store_title, :variable
+    assert_command_works :assert_title, :pattern
+    assert_command_works :assert_not_title, :pattern
+    assert_command_works :verify_title, :pattern
+    assert_command_works :verify_not_title, :pattern
+    assert_command_works :wait_for_title, :pattern
+    assert_command_works :wait_for_not_title, :pattern
+
+    assert_command_works :store_body_text, :variable
+    assert_command_works :assert_body_text, :pattern
+    assert_command_works :assert_not_body_text, :pattern
+    assert_command_works :verify_body_text, :pattern
+    assert_command_works :verify_not_body_text, :pattern
+    assert_command_works :wait_for_body_text, :pattern
+    assert_command_works :wait_for_not_body_text, :pattern
+
+    assert_command_works :store_value, :locator, :variable
+    assert_command_works :assert_value, :locator, :pattern
+    assert_command_works :assert_not_value, :locator, :pattern
+    assert_command_works :verify_value, :locator, :pattern
+    assert_command_works :verify_not_value, :locator, :pattern
+    assert_command_works :wait_for_value, :locator, :pattern
+    assert_command_works :wait_for_not_value, :locator, :pattern
+
+    assert_command_works :store_text, :locator, :variable
+    assert_command_works :assert_text, :locator, :pattern
+    assert_command_works :assert_not_text, :locator, :pattern
+    assert_command_works :verify_text, :locator, :pattern
+    assert_command_works :verify_not_text, :locator, :pattern
+    assert_command_works :wait_for_text, :locator, :pattern
+    assert_command_works :wait_for_not_text, :locator, :pattern
+
+    assert_command_works :store_eval, :script, :variable
+    assert_command_works :assert_eval, :script, :pattern
+    assert_command_works :assert_not_eval, :script, :pattern
+    assert_command_works :verify_eval, :script, :pattern
+    assert_command_works :verify_not_eval, :script, :pattern
+    assert_command_works :wait_for_eval, :script, :pattern
+    assert_command_works :wait_for_not_eval, :script, :pattern
+
+    assert_command_works :store_checked, :locator, :variable
+    assert_command_works :assert_checked, :locator
+    assert_command_works :assert_not_checked, :locator
+    assert_command_works :verify_checked, :locator
+    assert_command_works :verify_not_checked, :locator
+    assert_command_works :wait_for_checked, :locator
+    assert_command_works :wait_for_not_checked, :locator
+
+    assert_command_works :store_table, :table_locator, :variable
+    assert_command_works :assert_table, :table_locator, :pattern
+    assert_command_works :assert_not_table, :table_locator, :pattern
+    assert_command_works :verify_table, :table_locator, :pattern
+    assert_command_works :verify_not_table, :table_locator, :pattern
+    assert_command_works :wait_for_table, :table_locator, :pattern
+    assert_command_works :wait_for_not_table, :table_locator, :pattern
+    
+    assert_raise ActionView::TemplateError do
+      assert_command_works :store_selected, :locator, :option_locator, :variable
+    end
+    assert_command_works :assert_selected, :locator, :option_locator
+    assert_command_works :assert_not_selected, :locator, :option_locator
+    assert_command_works :verify_selected, :locator, :option_locator
+    assert_command_works :verify_not_selected, :locator, :option_locator
+    assert_command_works :wait_for_selected, :locator, :option_locator
+    assert_command_works :wait_for_not_selected, :locator, :option_locator
+    
+    assert_command_works :store_selected_id, :locator, :variable
+    assert_command_works :assert_selected_id, :locator, :pattern
+    assert_command_works :assert_not_selected_id, :locator, :pattern
+    assert_command_works :verify_selected_id, :locator, :pattern
+    assert_command_works :verify_not_selected_id, :locator, :pattern
+    assert_command_works :wait_for_selected_id, :locator, :pattern
+    assert_command_works :wait_for_not_selected_id, :locator, :pattern
+    
+    assert_command_works :store_selected_ids, :locator, :variable
+    assert_command_works :assert_selected_ids, :locator, :pattern
+    assert_command_works :assert_not_selected_ids, :locator, :pattern
+    assert_command_works :verify_selected_ids, :locator, :pattern
+    assert_command_works :verify_not_selected_ids, :locator, :pattern
+    assert_command_works :wait_for_selected_ids, :locator, :pattern
+    assert_command_works :wait_for_not_selected_ids, :locator, :pattern
+    
+    assert_command_works :store_selected_index, :locator, :variable
+    assert_command_works :assert_selected_index, :locator, :pattern
+    assert_command_works :assert_not_selected_index, :locator, :pattern
+    assert_command_works :verify_selected_index, :locator, :pattern
+    assert_command_works :verify_not_selected_index, :locator, :pattern
+    assert_command_works :wait_for_selected_index, :locator, :pattern
+    assert_command_works :wait_for_not_selected_index, :locator, :pattern
+    
+    assert_command_works :store_selected_indexes, :locator, :variable
+    assert_command_works :assert_selected_indexes, :locator, :pattern
+    assert_command_works :assert_not_selected_indexes, :locator, :pattern
+    assert_command_works :verify_selected_indexes, :locator, :pattern
+    assert_command_works :verify_not_selected_indexes, :locator, :pattern
+    assert_command_works :wait_for_selected_indexes, :locator, :pattern
+    assert_command_works :wait_for_not_selected_indexes, :locator, :pattern
+    
+    assert_command_works :store_selected_label, :locator, :variable
+    assert_command_works :assert_selected_label, :locator, :pattern
+    assert_command_works :assert_not_selected_label, :locator, :pattern
+    assert_command_works :verify_selected_label, :locator, :pattern
+    assert_command_works :verify_not_selected_label, :locator, :pattern
+    assert_command_works :wait_for_selected_label, :locator, :pattern
+    assert_command_works :wait_for_not_selected_label, :locator, :pattern
+    
+    assert_command_works :store_selected_labels, :locator, :variable
+    assert_command_works :assert_selected_labels, :locator, :pattern
+    assert_command_works :assert_not_selected_labels, :locator, :pattern
+    assert_command_works :verify_selected_labels, :locator, :pattern
+    assert_command_works :verify_not_selected_labels, :locator, :pattern
+    assert_command_works :wait_for_selected_labels, :locator, :pattern
+    assert_command_works :wait_for_not_selected_labels, :locator, :pattern
+    
+    assert_command_works :store_selected_value, :locator, :variable
+    assert_command_works :assert_selected_value, :locator, :pattern
+    assert_command_works :assert_not_selected_value, :locator, :pattern
+    assert_command_works :verify_selected_value, :locator, :pattern
+    assert_command_works :verify_not_selected_value, :locator, :pattern
+    assert_command_works :wait_for_selected_value, :locator, :pattern
+    assert_command_works :wait_for_not_selected_value, :locator, :pattern
+    
+    assert_command_works :store_selected_values, :locator, :variable
+    assert_command_works :assert_selected_values, :locator, :pattern
+    assert_command_works :assert_not_selected_values, :locator, :pattern
+    assert_command_works :verify_selected_values, :locator, :pattern
+    assert_command_works :verify_not_selected_values, :locator, :pattern
+    assert_command_works :wait_for_selected_values, :locator, :pattern
+    assert_command_works :wait_for_not_selected_values, :locator, :pattern
+    
+    assert_command_works :store_something_selected, :locator, :variable
+    assert_command_works :assert_something_selected, :locator
+    assert_command_works :assert_not_something_selected, :locator
+    assert_command_works :verify_something_selected, :locator
+    assert_command_works :verify_not_something_selected, :locator
+    assert_command_works :wait_for_something_selected, :locator
+    assert_command_works :wait_for_not_something_selected, :locator
+
+    assert_command_works :store_selected_options, :locator, :variable
+    assert_command_works :assert_selected_options, :locator, :coll_pattern
+    assert_command_works :assert_not_selected_options, :locator, :coll_pattern
+    assert_command_works :verify_selected_options, :locator, :coll_pattern
+    assert_command_works :verify_not_selected_options, :locator, :coll_pattern
+    assert_command_works :wait_for_selected_options, :locator, :coll_pattern
+    assert_command_works :wait_for_not_selected_options, :locator, :coll_pattern
+
+    assert_command_works :store_select_options, :locator, :variable
+    assert_command_works :assert_select_options, :locator, :coll_pattern
+    assert_command_works :assert_not_select_options, :locator, :coll_pattern
+    assert_command_works :verify_select_options, :locator, :coll_pattern
+    assert_command_works :verify_not_select_options, :locator, :coll_pattern
+    assert_command_works :wait_for_select_options, :locator, :coll_pattern
+    assert_command_works :wait_for_not_select_options, :locator, :coll_pattern
+
+    assert_command_works :store_attribute, :locator_and_attribute_name, :variable
+    assert_command_works :assert_attribute, :locator_and_attribute_name, :pattern
+    assert_command_works :assert_not_attribute, :locator_and_attribute_name, :pattern
+    assert_command_works :verify_attribute, :locator_and_attribute_name, :pattern
+    assert_command_works :verify_not_attribute, :locator_and_attribute_name, :pattern
+    assert_command_works :wait_for_attribute, :locator_and_attribute_name, :pattern
+    assert_command_works :wait_for_not_attribute, :locator_and_attribute_name, :pattern
+    
+    assert_raise ActionView::TemplateError do
+      assert_command_works :store_ordered, :locator, :locator, :variable
+    end
+    assert_command_works :assert_ordered, :locator, :locator
+    assert_command_works :assert_not_ordered, :locator, :locator
+    assert_command_works :verify_ordered, :locator, :locator
+    assert_command_works :verify_not_ordered, :locator, :locator
+    assert_command_works :wait_for_ordered, :locator, :locator
+    assert_command_works :wait_for_not_ordered, :locator, :locator
+
+    assert_command_works :store_text_present, :pattern, :variable
+    assert_command_works :assert_text_present, :pattern
+    assert_command_works :assert_text_not_present, :pattern
+    assert_command_works :verify_text_present, :pattern
+    assert_command_works :verify_text_not_present, :pattern
+    assert_command_works :wait_for_text_present, :pattern
+    assert_command_works :wait_for_text_not_present, :pattern
+
+    assert_command_works :store_element_present, :locator, :variable
+    assert_command_works :assert_element_present, :locator
+    assert_command_works :assert_element_not_present, :locator
+    assert_command_works :verify_element_present, :locator
+    assert_command_works :verify_element_not_present, :locator
+    assert_command_works :wait_for_element_present, :locator
+    assert_command_works :wait_for_element_not_present, :locator
+
+    assert_command_works :store_visible, :locator, :variable
+    assert_command_works :assert_visible, :locator
+    assert_command_works :assert_not_visible, :locator
+    assert_command_works :verify_visible, :locator
+    assert_command_works :verify_not_visible, :locator
+    assert_command_works :wait_for_visible, :locator
+    assert_command_works :wait_for_not_visible, :locator
+    
+    assert_raise ActionView::TemplateError do
+      assert_command_works :store_error_on_next, :string
+    end
+    assert_command_works :assert_error_on_next, :string
+    assert_command_works :assert_not_error_on_next, :string
+    assert_command_works :verify_error_on_next, :string
+    assert_command_works :verify_not_error_on_next, :string
+    assert_command_works :wait_for_error_on_next, :string
+    assert_command_works :wait_for_not_error_on_next, :string    
+    
+    assert_raise ActionView::TemplateError do
+      assert_command_works :store_failure_on_next, :string
+    end
+    assert_command_works :assert_failure_on_next, :string
+    assert_command_works :assert_not_failure_on_next, :string
+    assert_command_works :verify_failure_on_next, :string
+    assert_command_works :verify_not_failure_on_next, :string
+    assert_command_works :wait_for_failure_on_next, :string
+    assert_command_works :wait_for_not_failure_on_next, :string
+    
+    assert_command_works :store_all_window_ids, :variable
+    assert_command_works :assert_all_window_ids, :pattern
+    assert_command_works :assert_not_all_window_ids, :pattern
+    assert_command_works :verify_all_window_ids, :pattern
+    assert_command_works :verify_not_all_window_ids, :pattern
+    assert_command_works :wait_for_all_window_ids, :pattern
+    assert_command_works :wait_for_not_all_window_ids, :pattern
+
+    assert_command_works :store_all_window_names, :variable
+    assert_command_works :assert_all_window_names, :pattern
+    assert_command_works :assert_not_all_window_names, :pattern
+    assert_command_works :verify_all_window_names, :pattern
+    assert_command_works :verify_not_all_window_names, :pattern
+    assert_command_works :wait_for_all_window_names, :pattern
+    assert_command_works :wait_for_not_all_window_names, :pattern
+
+    assert_command_works :store_all_window_titles, :variable
+    assert_command_works :assert_all_window_titles, :pattern
+    assert_command_works :assert_not_all_window_titles, :pattern
+    assert_command_works :verify_all_window_titles, :pattern
+    assert_command_works :verify_not_all_window_titles, :pattern
+    assert_command_works :wait_for_all_window_titles, :pattern
+    assert_command_works :wait_for_not_all_window_titles, :pattern
+    
+    assert_command_works :store_cookie, :variable
+    assert_command_works :assert_cookie, :pattern
+    assert_command_works :assert_not_cookie, :pattern
+    assert_command_works :verify_cookie, :pattern
+    assert_command_works :verify_not_cookie, :pattern
+    assert_command_works :wait_for_cookie, :pattern
+    assert_command_works :wait_for_not_cookie, :pattern
+    
+    assert_command_works :store_log_messages, :variable
+    assert_command_works :assert_log_messages, :pattern
+    assert_command_works :assert_not_log_messages, :pattern
+    assert_command_works :verify_log_messages, :pattern
+    assert_command_works :verify_not_log_messages, :pattern
+    assert_command_works :wait_for_log_messages, :pattern
+    assert_command_works :wait_for_not_log_messages, :pattern
+    
+    assert_command_works :store_mouse_speed, :variable
+    assert_command_works :assert_mouse_speed, :pattern
+    assert_command_works :assert_not_mouse_speed, :pattern
+    assert_command_works :verify_mouse_speed, :pattern
+    assert_command_works :verify_not_mouse_speed, :pattern
+    assert_command_works :wait_for_mouse_speed, :pattern
+    assert_command_works :wait_for_not_mouse_speed, :pattern
+
+    assert_command_works :store_cursor_position, :locator, :variable
+    assert_command_works :assert_cursor_position, :locator, :pattern
+    assert_command_works :assert_not_cursor_position, :locator, :pattern
+    assert_command_works :verify_cursor_position, :locator, :pattern
+    assert_command_works :verify_not_cursor_position, :locator, :pattern
+    assert_command_works :wait_for_cursor_position, :locator, :pattern
+    assert_command_works :wait_for_not_cursor_position, :locator, :pattern
+    
+    assert_command_works :store_attribute_from_all_windows, :attribute_name, :variable
+    assert_command_works :assert_attribute_from_all_windows, :attribute_name, :pattern
+    assert_command_works :assert_not_attribute_from_all_windows, :attribute_name, :pattern
+    assert_command_works :verify_attribute_from_all_windows, :attribute_name, :pattern
+    assert_command_works :verify_not_attribute_from_all_windows, :attribute_name, :pattern
+    assert_command_works :wait_for_attribute_from_all_windows, :attribute_name, :pattern
+    assert_command_works :wait_for_not_attribute_from_all_windows, :attribute_name, :pattern
+
+    assert_command_works :store_element_height, :locator, :variable
+    assert_command_works :assert_element_height, :locator, :dimension
+    assert_command_works :assert_not_element_height, :locator, :dimension
+    assert_command_works :verify_element_height, :locator, :dimension
+    assert_command_works :verify_not_element_height, :locator, :dimension
+    assert_command_works :wait_for_element_height, :locator, :dimension
+    assert_command_works :wait_for_not_element_height, :locator, :dimension
+    
+    assert_command_works :store_element_index, :locator, :variable
+    assert_command_works :assert_element_index, :locator, :pattern
+    assert_command_works :assert_not_element_index, :locator, :pattern
+    assert_command_works :verify_element_index, :locator, :pattern
+    assert_command_works :verify_not_element_index, :locator, :pattern
+    assert_command_works :wait_for_element_index, :locator, :pattern
+    assert_command_works :wait_for_not_element_index, :locator, :pattern
+
+    assert_command_works :store_element_width, :locator, :variable
+    assert_command_works :assert_element_width, :locator, :dimension
+    assert_command_works :assert_not_element_width, :locator, :dimension
+    assert_command_works :verify_element_width, :locator, :dimension
+    assert_command_works :verify_not_element_width, :locator, :dimension
+    assert_command_works :wait_for_element_width, :locator, :dimension
+    assert_command_works :wait_for_not_element_width, :locator, :dimension
+
+    assert_command_works :store_element_position_left, :locator, :variable
+    assert_command_works :assert_element_position_left, :locator, :dimension
+    assert_command_works :assert_not_element_position_left, :locator, :dimension
+    assert_command_works :verify_element_position_left, :locator, :dimension
+    assert_command_works :verify_not_element_position_left, :locator, :dimension
+    assert_command_works :wait_for_element_position_left, :locator, :dimension
+    assert_command_works :wait_for_not_element_position_left, :locator, :dimension
+
+    assert_command_works :store_element_position_top, :locator, :variable
+    assert_command_works :assert_element_position_top, :locator, :dimension
+    assert_command_works :assert_not_element_position_top, :locator, :dimension
+    assert_command_works :verify_element_position_top, :locator, :dimension
+    assert_command_works :verify_not_element_position_top, :locator, :dimension
+    assert_command_works :wait_for_element_position_top, :locator, :dimension
+    assert_command_works :wait_for_not_element_position_top, :locator, :dimension
+
+    assert_command_works :store_editable, :locator, :variable
+    assert_command_works :assert_editable, :locator
+    assert_command_works :assert_not_editable, :locator
+    assert_command_works :verify_editable, :locator
+    assert_command_works :verify_not_editable, :locator
+    assert_command_works :wait_for_editable, :locator
+    assert_command_works :wait_for_not_editable, :locator
+
+    assert_command_works :store_all_buttons, :variable
+    assert_command_works :assert_all_buttons, :coll_pattern
+    assert_command_works :assert_not_all_buttons, :coll_pattern
+    assert_command_works :verify_all_buttons, :coll_pattern
+    assert_command_works :verify_not_all_buttons, :coll_pattern
+    assert_command_works :wait_for_all_buttons, :coll_pattern
+    assert_command_works :wait_for_not_all_buttons, :coll_pattern
+
+    assert_command_works :store_all_links, :variable
+    assert_command_works :assert_all_links, :coll_pattern
+    assert_command_works :assert_not_all_links, :coll_pattern
+    assert_command_works :verify_all_links, :coll_pattern
+    assert_command_works :verify_not_all_links, :coll_pattern
+    assert_command_works :wait_for_all_links, :coll_pattern
+    assert_command_works :wait_for_not_all_links, :coll_pattern
+
+    assert_command_works :store_all_fields, :variable
+    assert_command_works :assert_all_fields, :coll_pattern
+    assert_command_works :assert_not_all_fields, :coll_pattern
+    assert_command_works :verify_all_fields, :coll_pattern
+    assert_command_works :verify_not_all_fields, :coll_pattern
+    assert_command_works :wait_for_all_fields, :coll_pattern
+    assert_command_works :wait_for_not_all_fields, :coll_pattern
+
+    assert_command_works :store_html_source, :variable
+    assert_command_works :assert_html_source, :pattern
+    assert_command_works :assert_not_html_source, :pattern
+    assert_command_works :verify_html_source, :pattern
+    assert_command_works :verify_not_html_source, :pattern
+    assert_command_works :wait_for_html_source, :pattern
+    assert_command_works :wait_for_not_html_source, :pattern
+
+    assert_command_works :store_expression, :script, :variable
+    assert_command_works :assert_expression, :script, :pattern
+    assert_command_works :assert_not_expression, :script, :pattern
+    assert_command_works :verify_expression, :script, :pattern
+    assert_command_works :verify_not_expression, :script, :pattern
+    assert_command_works :wait_for_expression, :script, :pattern
+    assert_command_works :wait_for_not_expression, :script, :pattern
+    
+    assert_raise ActionView::TemplateError do
+      assert_command_works :store_whether_this_frame_match_frame_expression, :string, :string, :variable
+    end
+    assert_command_works :assert_whether_this_frame_match_frame_expression, :string, :string
+    assert_command_works :assert_not_whether_this_frame_match_frame_expression, :string, :string
+    assert_command_works :verify_whether_this_frame_match_frame_expression, :string, :string
+    assert_command_works :verify_not_whether_this_frame_match_frame_expression, :string, :string
+    assert_command_works :wait_for_whether_this_frame_match_frame_expression, :string, :string
+    assert_command_works :wait_for_not_whether_this_frame_match_frame_expression, :string, :string
+    
+    assert_raise ActionView::TemplateError do
+      assert_command_works :store_whether_this_window_match_window_expression, :string, :string, :variable
+    end
+    assert_command_works :assert_whether_this_window_match_window_expression, :string, :string
+    assert_command_works :assert_not_whether_this_window_match_window_expression, :string, :string
+    assert_command_works :verify_whether_this_window_match_window_expression, :string, :string
+    assert_command_works :verify_not_whether_this_window_match_window_expression, :string, :string
+    assert_command_works :wait_for_whether_this_window_match_window_expression, :string, :string
+    assert_command_works :wait_for_not_whether_this_window_match_window_expression, :string, :string
+    
+  end
+
+  def test_partial_support
+    expected = &lt;&lt;END
+&lt;table&gt;
+&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Partial support&lt;/th&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;partial&lt;/td&gt;&lt;td&gt;RSelenese partial&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+END
+    input = &quot;include_partial 'override'&quot;
+    partial = &quot;type 'partial', 'RSelenese partial'&quot;
+    assert_rselenese expected, 'Partial support', input, partial, 'rsel'
+  end
+  
+  def test_partial_support_with_local_assigns
+    expected = &lt;&lt;END_EXPECTED
+&lt;table&gt;
+&lt;tr&gt;&lt;th colspan=&quot;3&quot;&gt;Partial support with local variables&lt;/th&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;partial&lt;/td&gt;&lt;td&gt;RSelenese partial&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;local&lt;/td&gt;&lt;td&gt;par&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;local&lt;/td&gt;&lt;td&gt;tial&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+END_EXPECTED
+    input = &quot;include_partial 'override', :locator =&gt; 'local', :input =&gt; ['par', 'tial']&quot;
+    partial = &lt;&lt;END_PARTIAL
+type 'partial', 'RSelenese partial'
+input.each do |i|
+  type locator, i
+end
+END_PARTIAL
+    assert_rselenese expected, 'Partial support with local variables', input, partial, 'rsel'
+  end
+
+end</diff>
      <filename>test/rselenese_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,16 @@
 require File.dirname(__FILE__) + '/test_helper'
 
 class SeleneseTest &lt; Test::Unit::TestCase
-
+  
   def selenese name, input, partial = nil, type = nil
-    view = TestView.new
+    view = TestView.new(File.dirname(__FILE__))
     view.override_partial partial, type do
       view.assigns['page_title'] = name
-      view.render_template 'sel', input
+      path = File.dirname(__FILE__) + &quot;html.sel&quot;
+      File.open(path, 'w+') do |index_file|
+        index_file &lt;&lt; input
+      end
+      view.render_template ActionView::Template.new(view, path, false, locals = {})
     end
   end
   
@@ -203,13 +207,13 @@ END_PARTIAL
   end
     
   def test_raised_when_more_than_three_columns
-    assert_raise RuntimeError, 'There might only be a maximum of three cells!' do
+    assert_raise ActionView::TemplateError, 'There might only be a maximum of three cells!' do
       selenese 'name', '|col1|col2|col3|col4|'
     end
   end
 
   def test_raised_when_more_than_one_set_of_commands
-    assert_raise RuntimeError, 'You cannot have comments in the middle of commands!' do
+    assert_raise ActionView::TemplateError, 'You cannot have comments in the middle of commands!' do
       input = &lt;&lt;END
 comment
 |command|
@@ -221,7 +225,7 @@ END
   end
   
   def test_raised_when_incorrect_partial_format
-    assert_raise RuntimeError, &quot;Invalid format 'invalid'. Should be '|includePartial|partial|var1=value|var2=value|.&quot; do
+    assert_raise ActionView::TemplateError, &quot;Invalid format 'invalid'. Should be '|includePartial|partial|var1=value|var2=value|.&quot; do
       selenese 'name', '|includePartial|partial|a=valid|invalid|'
     end
   end</diff>
      <filename>test/selenese_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,48 +1,48 @@
-require File.dirname(__FILE__) + '/test_helper'
-require &quot;selenium_controller&quot;
-
-class SeleniumControllerTest &lt; Test::Unit::TestCase
-
-  def setup
-    @controller = SeleniumController.new
-    @request    = ActionController::TestRequest.new
-    @response   = ActionController::TestResponse.new
-    @result_dir = File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;test_result&quot;)
-  end
-
-  def teardown
-    FileUtils.rm_rf @result_dir
-  end
-  
-  def test_record_with_result
-    SeleniumOnRailsConfig.configs[&quot;result_dir&quot;] = @result_dir
-    suite = &lt;&lt;EOS
-&lt;script&gt;
-&lt;/script&gt;
-&lt;table&gt;
-  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;/selenium/tests/foo.sel&quot;&gt;Foo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;/selenium/tests/bar.sel&quot;&gt;Bar&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-EOS
-    post :record, :suite =&gt; suite,
-      &quot;testTable.1&quot; =&gt; &quot;&lt;table&gt;&lt;/table&gt;&quot;,
-      &quot;testTable.2&quot; =&gt; &quot;&lt;table&gt;&lt;/table&gt;&quot;
-    cur_result_dir = File.join(@result_dir, &quot;default&quot;)
-    assert File.directory?(cur_result_dir)
-    assert_equal [&quot;blank.html&quot;, &quot;index.html&quot;, &quot;suite.html&quot;, &quot;test1.html&quot;, &quot;test2.html&quot;], 
-      Dir.glob(&quot;#{cur_result_dir}/*.html&quot;).map{|path| File.basename(path)}.sort
-    expected = &lt;&lt;EOS
-&lt;html&gt;
-&lt;head&gt;
-&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;selenium-test.css&quot;&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;table&gt;
-  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;test1.html&quot; target=&quot;testcase&quot;&gt;Foo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;test2.html&quot; target=&quot;testcase&quot;&gt;Bar&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-&lt;/body&gt;&lt;/html&gt;
-EOS
-    assert_equal expected, File.read(&quot;#{cur_result_dir}/suite.html&quot;)
-  end
-end
+require File.dirname(__FILE__) + '/test_helper'
+require &quot;selenium_controller&quot;
+
+class SeleniumControllerTest &lt; Test::Unit::TestCase
+
+  def setup
+    @controller = SeleniumController.new
+    @request    = ActionController::TestRequest.new
+    @response   = ActionController::TestResponse.new
+    @result_dir = File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;test_result&quot;)
+  end
+
+  def teardown
+    FileUtils.rm_rf @result_dir
+  end
+  
+  def test_record_with_result
+    SeleniumOnRailsConfig.configs[&quot;result_dir&quot;] = @result_dir
+    suite = &lt;&lt;EOS
+&lt;script&gt;
+&lt;/script&gt;
+&lt;table&gt;
+  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;/selenium/tests/foo.sel&quot;&gt;Foo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;/selenium/tests/bar.sel&quot;&gt;Bar&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+EOS
+    post :record, :suite =&gt; suite,
+      &quot;testTable.1&quot; =&gt; &quot;&lt;table&gt;&lt;/table&gt;&quot;,
+      &quot;testTable.2&quot; =&gt; &quot;&lt;table&gt;&lt;/table&gt;&quot;
+    cur_result_dir = File.join(@result_dir, &quot;default&quot;)
+    assert File.directory?(cur_result_dir)
+    assert_equal [&quot;blank.html&quot;, &quot;index.html&quot;, &quot;suite.html&quot;, &quot;test1.html&quot;, &quot;test2.html&quot;], 
+      Dir.glob(&quot;#{cur_result_dir}/*.html&quot;).map{|path| File.basename(path)}.sort
+    expected = &lt;&lt;EOS
+&lt;html&gt;
+&lt;head&gt;
+&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;selenium-test.css&quot;&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;table&gt;
+  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;test1.html&quot; target=&quot;testcase&quot;&gt;Foo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td bgcolor=&quot;#ccffcc&quot;&gt;&lt;a href=&quot;test2.html&quot; target=&quot;testcase&quot;&gt;Bar&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;
+EOS
+    assert_equal expected, File.read(&quot;#{cur_result_dir}/suite.html&quot;)
+  end
+end</diff>
      <filename>test/selenium_controller_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,29 @@
-require File.dirname(__FILE__) + '/test_helper'
-
-class SetupTest &lt; Test::Unit::TestCase
-  def setup
-    @controller = SeleniumController.new
-    @request    = ActionController::TestRequest.new
-    @response   = ActionController::TestResponse.new
-  end
-
-  def test_session_reset
-    @request.session['key'] = 'value'
-    get :setup
-    assert_nil session['key']
-    assert_response :success
-    assert_tag :content =&gt; 'The session is wiped clean.'
-  end
-  
-  def test_session_no_reset
-    @request.session['key'] = 'value'
-    get :setup, :keep_session =&gt; true
-    assert_equal 'value', session['key']
-    assert_response :success
-    assert_no_tag :content =&gt; 'The session is wiped clean.'
-  end
-  
-  #
-  # Don't have the nerve to test fixtures since this is a plugin
-  #
-end
+require File.dirname(__FILE__) + '/test_helper'
+
+class SetupTest &lt; Test::Unit::TestCase
+  def setup
+    @controller = SeleniumController.new
+    @request    = ActionController::TestRequest.new
+    @response   = ActionController::TestResponse.new
+  end
+
+  def test_session_reset
+    @request.session['key'] = 'value'
+    get :setup
+    assert_nil session['key']
+    assert_response :success
+    assert_tag :content =&gt; 'The session is wiped clean.'
+  end
+  
+  def test_session_no_reset
+    @request.session['key'] = 'value'
+    get :setup, :keep_session =&gt; true
+    assert_equal 'value', session['key']
+    assert_response :success
+    assert_no_tag :content =&gt; 'The session is wiped clean.'
+  end
+  
+  #
+  # Don't have the nerve to test fixtures since this is a plugin
+  #
+end</diff>
      <filename>test/setup_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,173 +1,173 @@
-require File.dirname(__FILE__) + '/test_helper'
-
-class SuiteRendererTest &lt; Test::Unit::TestCase
-  def setup
-    @controller = SeleniumController.new
-    @request    = ActionController::TestRequest.new
-    @response   = ActionController::TestResponse.new
-    @controller.layout_override =&lt;&lt;END
-&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
-@content_for_layout
-&lt;/body&gt;&lt;/html&gt;
-END
-  end
-  
-  def test_empty_suite
-    get :test_file, :testname =&gt; 'empty_suite'
-    assert_response :success
-    expected =&lt;&lt;END
-&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
-&lt;script type=&quot;text/javascript&quot;&gt;
-&lt;!--
-function openSuite(selector) {
-  var suite = selector.options[selector.selectedIndex].value;
-  if(suite == &quot;header&quot;) return;
-  if(top.location.href != location.href) //inside a frame
-    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
-  else
-    window.location = &quot;/selenium/tests&quot; + suite
-}
-//--&gt;
-&lt;/script&gt;
-&lt;select onchange=&quot;openSuite(this)&quot;&gt;
-  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
-  &lt;option value=&quot;&quot;&gt;..&lt;/option&gt;
-&lt;/select&gt;
-
-&lt;table&gt;
-  &lt;tr&gt;&lt;th&gt;Empty suite&lt;/th&gt;&lt;/tr&gt;
-&lt;/table&gt;
-&lt;/body&gt;&lt;/html&gt;
-END
-    assert_text_equal expected, @response.body
-  end
-
-  
-  def test_root_suite
-    _test_root_suite ''
-  end
-  
-  def test_test_suite_html
-    #TestSuite.html is the default name the Selenium Runner tries to run
-    _test_root_suite 'TestSuite.html'
-  end
-  
-  def _test_root_suite testname
-    get :test_file, :testname =&gt; testname
-    assert_response :success
-    expected =&lt;&lt;END
-&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
-&lt;script type=&quot;text/javascript&quot;&gt;
-&lt;!--
-function openSuite(selector) {
-  var suite = selector.options[selector.selectedIndex].value;
-  if(suite == &quot;header&quot;) return;
-  if(top.location.href != location.href) //inside a frame
-    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
-  else
-    window.location = &quot;/selenium/tests&quot; + suite
-}
-//--&gt;
-&lt;/script&gt;
-&lt;select onchange=&quot;openSuite(this)&quot;&gt;
-  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
-  &lt;option value=&quot;/empty_suite&quot;&gt;Empty suite&lt;/option&gt;
-  &lt;option value=&quot;/partials&quot;&gt;Partials&lt;/option&gt;
-  &lt;option value=&quot;/suite_one&quot;&gt;Suite one&lt;/option&gt;
-  &lt;option value=&quot;/suite_two&quot;&gt;Suite two&lt;/option&gt;
-  &lt;option value=&quot;/suite_one/subsuite&quot;&gt;Suite one.Subsuite&lt;/option&gt;
-&lt;/select&gt;
-
-&lt;table&gt;
-  &lt;tr&gt;&lt;th&gt;All test cases&lt;/th&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/html.html&quot;&gt;Html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/own_layout.html&quot;&gt;Own layout&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/rhtml.rhtml&quot;&gt;Rhtml&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/rselenese.rsel&quot;&gt;Rselenese&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/selenese.sel&quot;&gt;Selenese&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/partials/all_partials.rsel&quot;&gt;Partials.All partials&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase1.sel&quot;&gt;Suite one.Suite one testcase1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase2.sel&quot;&gt;Suite one.Suite one testcase2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/subsuite/suite_one_subsuite_testcase.sel&quot;&gt;Suite one.Subsuite.Suite one subsuite testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_two/suite_two_testcase.sel&quot;&gt;Suite two.Suite two testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-&lt;/body&gt;&lt;/html&gt;
-END
-    assert_text_equal expected, @response.body
-  end
-
-  def test_suite_one
-    get :test_file, :testname =&gt; 'suite_one'
-    assert_response :success
-    expected =&lt;&lt;END
-&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
-&lt;script type=&quot;text/javascript&quot;&gt;
-&lt;!--
-function openSuite(selector) {
-  var suite = selector.options[selector.selectedIndex].value;
-  if(suite == &quot;header&quot;) return;
-  if(top.location.href != location.href) //inside a frame
-    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
-  else
-    window.location = &quot;/selenium/tests&quot; + suite
-}
-//--&gt;
-&lt;/script&gt;
-&lt;select onchange=&quot;openSuite(this)&quot;&gt;
-  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
-  &lt;option value=&quot;&quot;&gt;..&lt;/option&gt;
-  &lt;option value=&quot;/suite_one/subsuite&quot;&gt;Subsuite&lt;/option&gt;
-&lt;/select&gt;
-
-&lt;table&gt;
-  &lt;tr&gt;&lt;th&gt;Suite one&lt;/th&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase1.sel&quot;&gt;Suite one testcase1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase2.sel&quot;&gt;Suite one testcase2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/subsuite/suite_one_subsuite_testcase.sel&quot;&gt;Subsuite.Suite one subsuite testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-&lt;/body&gt;&lt;/html&gt;
-END
-    assert_text_equal expected, @response.body
-  end
-  
-  def test_sub_suite
-    get :test_file, :testname =&gt; 'suite_one/subsuite'
-    assert_response :success
-    expected =&lt;&lt;END
-&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
-&lt;script type=&quot;text/javascript&quot;&gt;
-&lt;!--
-function openSuite(selector) {
-  var suite = selector.options[selector.selectedIndex].value;
-  if(suite == &quot;header&quot;) return;
-  if(top.location.href != location.href) //inside a frame
-    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
-  else
-    window.location = &quot;/selenium/tests&quot; + suite
-}
-//--&gt;
-&lt;/script&gt;
-&lt;select onchange=&quot;openSuite(this)&quot;&gt;
-  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
-  &lt;option value=&quot;/suite_one&quot;&gt;..&lt;/option&gt;
-&lt;/select&gt;
-
-&lt;table&gt;
-  &lt;tr&gt;&lt;th&gt;Subsuite&lt;/th&gt;&lt;/tr&gt;
-  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/subsuite/suite_one_subsuite_testcase.sel&quot;&gt;Suite one subsuite testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
-&lt;/body&gt;&lt;/html&gt;
-END
-    assert_text_equal expected, @response.body
-  end
-  
-  def test_missing_tests_directory
-    def @controller.selenium_tests_path
-      File.join(File.dirname(__FILE__), 'invalid')
-    end
-    get :test_file, :testname =&gt; ''
-    assert_response 404
-    assert_equal &quot;Did not find the Selenium tests path (#{File.join(File.dirname(__FILE__), 'invalid')}). Run script/generate selenium&quot;,  @response.body
-  end
-  
-end
+require File.dirname(__FILE__) + '/test_helper'
+
+class SuiteRendererTest &lt; Test::Unit::TestCase
+  def setup
+    @controller = SeleniumController.new
+    @request    = ActionController::TestRequest.new
+    @response   = ActionController::TestResponse.new
+    @controller.layout_override =&lt;&lt;END
+&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
+@content_for_layout
+&lt;/body&gt;&lt;/html&gt;
+END
+  end
+  
+  def test_empty_suite
+    get :test_file, :testname =&gt; 'empty_suite'
+    assert_response :success
+    expected =&lt;&lt;END
+&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
+&lt;script type=&quot;text/javascript&quot;&gt;
+&lt;!--
+function openSuite(selector) {
+  var suite = selector.options[selector.selectedIndex].value;
+  if(suite == &quot;header&quot;) return;
+  if(top.location.href != location.href) //inside a frame
+    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
+  else
+    window.location = &quot;/selenium/tests&quot; + suite
+}
+//--&gt;
+&lt;/script&gt;
+&lt;select onchange=&quot;openSuite(this)&quot;&gt;
+  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
+  &lt;option value=&quot;&quot;&gt;..&lt;/option&gt;
+&lt;/select&gt;
+
+&lt;table&gt;
+  &lt;tr&gt;&lt;th&gt;Empty suite&lt;/th&gt;&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;
+END
+    assert_text_equal expected, @response.body
+  end
+
+  
+  def test_root_suite
+    _test_root_suite ''
+  end
+  
+  def test_test_suite_html
+    #TestSuite.html is the default name the Selenium Runner tries to run
+    _test_root_suite 'TestSuite.html'
+  end
+  
+  def _test_root_suite testname
+    get :test_file, :testname =&gt; testname
+    assert_response :success
+    expected =&lt;&lt;END
+&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
+&lt;script type=&quot;text/javascript&quot;&gt;
+&lt;!--
+function openSuite(selector) {
+  var suite = selector.options[selector.selectedIndex].value;
+  if(suite == &quot;header&quot;) return;
+  if(top.location.href != location.href) //inside a frame
+    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
+  else
+    window.location = &quot;/selenium/tests&quot; + suite
+}
+//--&gt;
+&lt;/script&gt;
+&lt;select onchange=&quot;openSuite(this)&quot;&gt;
+  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
+  &lt;option value=&quot;/empty_suite&quot;&gt;Empty suite&lt;/option&gt;
+  &lt;option value=&quot;/partials&quot;&gt;Partials&lt;/option&gt;
+  &lt;option value=&quot;/suite_one&quot;&gt;Suite one&lt;/option&gt;
+  &lt;option value=&quot;/suite_two&quot;&gt;Suite two&lt;/option&gt;
+  &lt;option value=&quot;/suite_one/subsuite&quot;&gt;Suite one.Subsuite&lt;/option&gt;
+&lt;/select&gt;
+
+&lt;table&gt;
+  &lt;tr&gt;&lt;th&gt;All test cases&lt;/th&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/html.html&quot;&gt;Html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/own_layout.html&quot;&gt;Own layout&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/rhtml.rhtml&quot;&gt;Rhtml&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/rselenese.rsel&quot;&gt;Rselenese&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/selenese.sel&quot;&gt;Selenese&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/partials/all_partials.rsel&quot;&gt;Partials.All partials&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase1.sel&quot;&gt;Suite one.Suite one testcase1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase2.sel&quot;&gt;Suite one.Suite one testcase2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/subsuite/suite_one_subsuite_testcase.sel&quot;&gt;Suite one.Subsuite.Suite one subsuite testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_two/suite_two_testcase.sel&quot;&gt;Suite two.Suite two testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;
+END
+    assert_text_equal expected, @response.body
+  end
+
+  def test_suite_one
+    get :test_file, :testname =&gt; 'suite_one'
+    assert_response :success
+    expected =&lt;&lt;END
+&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
+&lt;script type=&quot;text/javascript&quot;&gt;
+&lt;!--
+function openSuite(selector) {
+  var suite = selector.options[selector.selectedIndex].value;
+  if(suite == &quot;header&quot;) return;
+  if(top.location.href != location.href) //inside a frame
+    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
+  else
+    window.location = &quot;/selenium/tests&quot; + suite
+}
+//--&gt;
+&lt;/script&gt;
+&lt;select onchange=&quot;openSuite(this)&quot;&gt;
+  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
+  &lt;option value=&quot;&quot;&gt;..&lt;/option&gt;
+  &lt;option value=&quot;/suite_one/subsuite&quot;&gt;Subsuite&lt;/option&gt;
+&lt;/select&gt;
+
+&lt;table&gt;
+  &lt;tr&gt;&lt;th&gt;Suite one&lt;/th&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase1.sel&quot;&gt;Suite one testcase1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/suite_one_testcase2.sel&quot;&gt;Suite one testcase2&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/subsuite/suite_one_subsuite_testcase.sel&quot;&gt;Subsuite.Suite one subsuite testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;
+END
+    assert_text_equal expected, @response.body
+  end
+  
+  def test_sub_suite
+    get :test_file, :testname =&gt; 'suite_one/subsuite'
+    assert_response :success
+    expected =&lt;&lt;END
+&lt;html&gt;&lt;head&gt;&lt;title&gt;test layout&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
+&lt;script type=&quot;text/javascript&quot;&gt;
+&lt;!--
+function openSuite(selector) {
+  var suite = selector.options[selector.selectedIndex].value;
+  if(suite == &quot;header&quot;) return;
+  if(top.location.href != location.href) //inside a frame
+    top.location =  &quot;/selenium/TestRunner.html?test=tests&quot; + suite
+  else
+    window.location = &quot;/selenium/tests&quot; + suite
+}
+//--&gt;
+&lt;/script&gt;
+&lt;select onchange=&quot;openSuite(this)&quot;&gt;
+  &lt;option value=&quot;header&quot;&gt;Suites:&lt;/option&gt;
+  &lt;option value=&quot;/suite_one&quot;&gt;..&lt;/option&gt;
+&lt;/select&gt;
+
+&lt;table&gt;
+  &lt;tr&gt;&lt;th&gt;Subsuite&lt;/th&gt;&lt;/tr&gt;
+  &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;/selenium/tests/suite_one/subsuite/suite_one_subsuite_testcase.sel&quot;&gt;Suite one subsuite testcase&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/body&gt;&lt;/html&gt;
+END
+    assert_text_equal expected, @response.body
+  end
+  
+  def test_missing_tests_directory
+    def @controller.selenium_tests_path
+      File.join(File.dirname(__FILE__), 'invalid')
+    end
+    get :test_file, :testname =&gt; ''
+    assert_response 404
+    assert_equal &quot;Did not find the Selenium tests path (#{File.join(File.dirname(__FILE__), 'invalid')}). Run script/generate selenium&quot;,  @response.body
+  end
+  
+end</diff>
      <filename>test/suite_renderer_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,8 @@ require File.expand_path(File.dirname(__FILE__) + &quot;/../../../../config/environme
 require 'test_help'
 require 'controllers/selenium_controller'
 
+SeleniumController.append_view_path File.expand_path(File.dirname(__FILE__))
+
 module SeleniumOnRails::Paths
   def selenium_tests_path
     File.expand_path(File.dirname(__FILE__) + '/../test_data')
@@ -16,13 +18,13 @@ class SeleniumController
     raise e
   end
       
-  def render options = nil, deprecated_status = nil
+  def render options = nil
     if override_layout? options
       options[:layout] = false
-      super options, deprecated_status
+      super options
       return response.body = @layout_override.gsub('@content_for_layout', response.body)
     end
-    super options, deprecated_status
+    super options
   end
   
   private
@@ -67,4 +69,5 @@ class TestView &lt; ActionView::Base
     @override, @override_type = nil, nil
     result
   end
+  
 end
\ No newline at end of file</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>75b79fd1ee15c21ae87ab008c9ca65229aaf2196</id>
    </parent>
  </parents>
  <author>
    <name>Tapaj&#243;s</name>
    <email>tapajos@gmail.com</email>
  </author>
  <url>http://github.com/ryanb/selenium-on-rails/commit/ec4bff688bb15f6f3ba05da266c99152e8e0b551</url>
  <id>ec4bff688bb15f6f3ba05da266c99152e8e0b551</id>
  <committed-date>2008-07-01T18:04:45-07:00</committed-date>
  <authored-date>2008-07-01T18:04:45-07:00</authored-date>
  <message>Fixing some tests.</message>
  <tree>48635b7bf12597369d313830727076a0bc272157</tree>
  <committer>
    <name>Tapaj&#243;s</name>
    <email>tapajos@gmail.com</email>
  </committer>
</commit>
