# feature tests for Forms $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED require 'unittests/setup' class TC_Forms2 < Test::Unit::TestCase # Note: there is no TC_Forms1 def setup uses_page "forms2.html" end def test_form_exists assert(browser.form(:name, "test2").exists?) assert_false(browser.form(:name, "missing").exists?) assert(browser.form(:index, 0).exists?) assert_false(browser.form(:index, 87).exists?) assert(browser.form(:method, "get").exists?) assert_false(browser.form(:method, "missing").exists?) assert(browser.form(:id, 'f2').exists?) assert_false(browser.form(:id, 'missing').exists?) assert(browser.form(:action, /pass.html/).exists?) assert_false(browser.form(:action, "missing").exists?) end def test_multiple_attribute assert_true(browser.form(:name => 'test2', :id => 'f2').exists?) assert_true(browser.form(:name => 'test2', :method => 'get', :action => 'pass2.html')) end def test_button_in_form assert(browser.form(:name, "test2").button(:caption, "Submit").exists?) end def test_form_sub_element assert_equal('Click Me', browser.form(:index, 0).button(:name, 'b1').value) end # The following tests form bug 2261 tag_method :test_form_outer_html, :fails_on_firefox def test_form_outer_html expected = "\r\n

" actual = browser.form(:name, 'test2').html actual.sub!('style=""','') # ie9 adds in a style tag so just strip it out #ie9 also has som additional formatting so remove that too actual.gsub!('"','') actual.gsub!(/\n/,'') # ignore attributes order by sorting them sorted_expected, sorted_actual = [expected, actual].map! do |html| html.strip.downcase.scan(%r{

<(.*)>\s*
}).flatten. map {|part| part.split(" ").sort.join(" ")}.join(">
<") end assert_not_equal("", sorted_expected) assert_not_equal("", sorted_actual) assert_equal(sorted_expected, sorted_actual) end tag_method :test_form_inner_html, :fails_on_ie def test_form_inner_html expected = "\n
\n" assert_equal(expected, browser.form(:name, 'test2').html) end def test_form_flash assert_nothing_raised{ browser.form(:name, 'test2').flash } end end class TC_Forms_Collection < Test::Unit::TestCase def setup goto_page "forms2.html" end def test_forms_collection forms = browser.forms assert_equal(4, forms.length) assert(forms.first.action =~ /pass.html$/) assert_equal('test2', forms.last.name) end end class TC_Forms3 < Test::Unit::TestCase def setup goto_page "forms3.html" end # The following tests form bug 2261 def test_p_in_form assert_equal "This form has a submit button that is an image", browser.form(:name, 'buttonsubmit').p(:index, 0).text end # test for bug reported by Scott Pack, http://rubyforge.org/pipermail/wtr-general/2005-June/002223.html def test_index_other_element_before_it assert_equal("check1" , browser.checkbox(:index,0).name) end tag_method :test_reset, :fails_on_firefox def test_reset browser.text_field(:id, "t1").set("Hello, reset test!") assert_equal(browser.text_field(:id, 't1').value, 'Hello, reset test!') browser.button(:id, "reset_button").click assert_equal("" , browser.text_field(:id, 't1').value) # also verify it works under a form browser.text_field(:id, "t1").set("reset test - using a form") assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form') browser.form(:index,1).button(:index,1).click assert_equal("" , browser.text_field(:id, 't1').value) # also verify it works under a form, this time using the :id attribute browser.text_field(:id, "t1").set("reset test - using a form") assert_equal(browser.text_field(:id, 't1').value, 'reset test - using a form') browser.form(:index,1).button(:id,'reset_button').click assert_equal("" , browser.text_field(:id, 't1').value) end def test_flash1 assert_nothing_raised do browser.form(:name, "test2").button(:caption , "Submit").flash end end def test_objects_with_same_name assert_equal('textfield' ,browser.text_field( :name, 'g1').value ) assert_equal('button' ,browser.button( :name, 'g1').value ) assert_equal('1' ,browser.checkbox( :name, 'g1').value ) assert_equal('2' ,browser.radio( :name, 'g1').value ) assert_equal('textfield' ,browser.text_field( :name, /g1/).value ) assert_equal('button' ,browser.button( :name, /g1/).value ) assert_equal('1' ,browser.checkbox( :name, /g1/).value ) assert_equal('2' ,browser.radio( :name, /g1/).value ) assert_equal('textfield_id' ,browser.text_field( :id, 'g1').value ) assert_equal('button_id' ,browser.button( :id, 'g1').value ) assert_equal('1_id' ,browser.checkbox( :id, 'g1').value ) assert_equal('2_id' ,browser.radio( :id, 'g1').value ) assert_equal('textfield_id' ,browser.text_field( :id, /g1/).value ) assert_equal('button_id' ,browser.button( :id, /g1/).value ) assert_equal('1_id' ,browser.checkbox( :id, /g1/).value ) assert_equal('2_id' ,browser.radio( :id, /g1/).value ) end def test_flash2 browser.button(:value, 'Click Me').flash assert_raises(UnknownObjectException) { browser.text_field( :name , 'g177').flash } end def test_submitWithImage assert( browser.button(:alt, "submit").exists? ) assert( browser.button(:alt, /sub/).exists? ) assert_false( browser.button(:alt, "missing").exists? ) assert_false( browser.button(:alt, /missing/).exists? ) #assert( browser.button(:src , "file:///#{$myDir}/html/images/button.jpg").exists? ) # this doesnt work for everybody assert( browser.button(:src, /button/).exists? ) assert_false( browser.button(:src, "missing").exists? ) assert_false( browser.button(:src, /missing/).exists? ) assert_nothing_raised("raised an exception when it shouldnt have") { browser.button(:src , /button/).click } assert( browser.text.include?("PASS") ) end end class TC_Forms4 < Test::Unit::TestCase def setup uses_page "forms4.html" end def test_find_text_field_ignoring_form assert_equal(browser.text_field(:name, 'name').value, 'apple') end def test_correct_form_field_is_found_using_form_name assert_equal(browser.form(:name, 'apple_form').text_field(:name, 'name').value, 'apple') assert_equal(browser.form(:name, 'banana_form').text_field(:name, 'name').value, 'banana') end def test_correct_form_field_is_found_using_form_index assert_equal(browser.form(:index, 0).text_field(:name, 'name').value, 'apple') assert_equal(browser.form(:index, 1).text_field(:name, 'name').value, 'banana') end def test_using_text_on_form browser.form(:name, 'apple_form').text_field(:name, 'name').set('strudel') assert_equal(browser.form(:index, 0).text_field(:name, 'name').value, 'strudel') end def test_submit browser.form(:name, 'apple_form').submit assert(browser.text.include?("PASS")) end end class TC_Hidden_Fields < Test::Unit::TestCase def setup goto_page "forms3.html" end def test_hidden # test using index assert( browser.hidden(:index, 0).exists? ) assert( browser.hidden(:index, 1).exists? ) assert_false( browser.hidden(:index, 2).exists? ) browser.hidden(:index, 0).value = 44 browser.hidden(:index, 1).value = 55 browser.button(:value, "Show Hidden").click assert_equal("44", browser.text_field(:name, "vis1").value ) assert_equal("55", browser.text_field(:name, "vis2").value ) # test using name and ID assert( browser.hidden(:name, "hid1").exists? ) assert( browser.hidden(:id, "hidden_1").exists? ) assert_false( browser.hidden(:name, "hidden_44").exists? ) assert_false( browser.hidden(:id, "hidden_55").exists? ) browser.hidden(:name, "hid1").value = 444 browser.hidden(:id, "hidden_1").value = 555 browser.button(:value, "Show Hidden").click assert_equal("444", browser.text_field(:name, "vis1").value) assert_equal("555", browser.text_field(:name, "vis2").value) # test the over-ridden append method browser.hidden(:name, "hid1").append("a") browser.button(:value, "Show Hidden").click assert_equal("444a", browser.text_field(:name, "vis1").value ) assert_equal("555", browser.text_field(:name, "vis2").value ) # test the over-ridden clear method browser.hidden(:name, "hid1").clear browser.button(:value, "Show Hidden").click assert_equal("", browser.text_field(:name, "vis1").value) assert_equal("555", browser.text_field(:name, "vis2").value) # test using a form assert( browser.form(:name, "has_a_hidden").hidden(:name, "hid1").exists? ) assert( browser.form(:name, "has_a_hidden").hidden(:id, "hidden_1").exists? ) assert_false( browser.form(:name, "has_a_hidden").hidden(:name, "hidden_44").exists? ) assert_false( browser.form(:name, "has_a_hidden").hidden(:id, "hidden_55").exists? ) browser.form(:name, "has_a_hidden").hidden(:name, "hid1").value = 222 browser.form(:name, "has_a_hidden").hidden(:id, "hidden_1").value = 333 browser.button(:value, "Show Hidden").click assert_equal("222", browser.text_field(:name, "vis1").value) assert_equal("333", browser.text_field(:name, "vis2").value) # iterators assert_equal(2, browser.hiddens.length) count = 1 browser.hiddens.each do |h| case count when 1 assert_equal("", h.id) assert_equal("hid1", h.name) when 2 assert_equal("", h.name) assert_equal("hidden_1", h.id) end count += 1 end assert_equal("hid1", browser.hiddens[0].name) assert_equal("hidden_1", browser.hiddens[1].id) end end