spec/watirspec/elements/button_spec.rb in watir-6.10.1 vs spec/watirspec/elements/button_spec.rb in watir-6.10.2
- old
+ new
@@ -1,277 +1,277 @@
-require "watirspec_helper"
-
-describe "Button" do
-
- before :each do
- browser.goto(WatirSpec.url_for("forms_with_input_elements.html"))
- end
-
- # Exists method
- describe "#exists?" do
- it "returns true if the button exists (tag = :input)" do
- expect(browser.button(id: "new_user_submit")).to exist
- expect(browser.button(id: /new_user_submit/)).to exist
- expect(browser.button(name: "new_user_reset")).to exist
- expect(browser.button(name: /new_user_reset/)).to exist
- expect(browser.button(value: "Button")).to exist
- expect(browser.button(value: /Button/)).to exist
- not_compliant_on :internet_explorer do
- expect(browser.button(src: "images/button.png")).to exist
- end
- expect(browser.button(src: /button\.png/)).to exist
- expect(browser.button(text: "Button 2")).to exist
- expect(browser.button(text: /Button 2/)).to exist
- expect(browser.button(class: "image")).to exist
- expect(browser.button(class: /image/)).to exist
- expect(browser.button(index: 0)).to exist
- expect(browser.button(xpath: "//input[@id='new_user_submit']")).to exist
- expect(browser.button(alt: "Create a new user")).to exist
- expect(browser.button(alt: /Create a/)).to exist
- end
-
- it "returns true if the button exists (tag = :button)" do
- expect(browser.button(name: "new_user_button_2")).to exist
- expect(browser.button(name: /new_user_button_2/)).to exist
- expect(browser.button(value: "button_2")).to exist
- expect(browser.button(value: /button_2/)).to exist
- expect(browser.button(text: 'Button 2')).to exist
- expect(browser.button(text: /Button 2/)).to exist
- expect(browser.button(value: 'Button 2')).to exist
- expect(browser.button(value: /Button 2/)).to exist
- end
-
- it "returns true if the button exists (how = :caption)" do
- expect(browser.button(caption: "Button 2")).to exist
- expect(browser.button(caption: /Button 2/)).to exist
- end
-
- it "returns the first button if given no args" do
- expect(browser.button).to exist
- end
-
- it "returns true for element with upper case type" do
- expect(browser.button(id: "new_user_button_preview")).to exist
- end
-
- it "returns false if the button doesn't exist" do
- expect(browser.button(id: "no_such_id")).to_not exist
- expect(browser.button(id: /no_such_id/)).to_not exist
- expect(browser.button(name: "no_such_name")).to_not exist
- expect(browser.button(name: /no_such_name/)).to_not exist
- expect(browser.button(value: "no_such_value")).to_not exist
- expect(browser.button(value: /no_such_value/)).to_not exist
- expect(browser.button(src: "no_such_src")).to_not exist
- expect(browser.button(src: /no_such_src/)).to_not exist
- expect(browser.button(text: "no_such_text")).to_not exist
- expect(browser.button(text: /no_such_text/)).to_not exist
- expect(browser.button(class: "no_such_class")).to_not exist
- expect(browser.button(class: /no_such_class/)).to_not exist
- expect(browser.button(index: 1337)).to_not exist
- expect(browser.button(xpath: "//input[@id='no_such_id']")).to_not exist
- end
-
- it "checks the tag name and type attribute when locating by xpath" do
- expect(browser.button(xpath: "//input[@type='text']")).to_not exist
- expect(browser.button(xpath: "//input[@type='button']")).to exist
- end
-
- it "matches the specific type when locating by type" do
- expect(browser.button(type: "button").type).to eq "button"
- expect(browser.button(type: "reset").type).to eq "reset"
- expect(browser.button(type: "submit").type).to eq "submit"
- expect(browser.button(type: "image").type).to eq "image"
- end
-
- it "matches valid input types when type is boolean" do
- expect(browser.buttons(type: false).map(&:tag_name)).to all eq("button")
-
- input_buttons = browser.buttons(type: true).select { |e| e.tag_name == "input" }
- expect(input_buttons.map(&:type).uniq).to match_array(Watir::Button::VALID_TYPES)
- end
-
- it "raises TypeError when 'what' argument is invalid" do
- expect { browser.button(id: 3.14).exists? }.to raise_error(TypeError)
- end
- end
-
- # Attribute methods
- describe "#class_name" do
- it "returns the class name of the button" do
- expect(browser.button(name: "new_user_image").class_name).to eq "image"
- end
-
- it "returns an empty string if the button has no class name" do
- expect(browser.button(name: "new_user_submit").class_name).to eq ""
- end
- end
-
- describe "#id" do
- it "returns the id if the button exists" do
- expect(browser.button(index: 0).id).to eq 'new_user_submit'
- expect(browser.button(index: 1).id).to eq 'new_user_reset'
- expect(browser.button(index: 2).id).to eq 'new_user_button'
- end
-
- it "raises UnknownObjectException if button does not exist" do
- expect { browser.button(index: 1337).id }.to raise_unknown_object_exception
- end
- end
-
- describe "#name" do
- it "returns the name if button exists" do
- expect(browser.button(index: 0).name).to eq 'new_user_submit'
- expect(browser.button(index: 1).name).to eq 'new_user_reset'
- expect(browser.button(index: 2).name).to eq 'new_user_button'
- end
-
- it "raises UnknownObjectException if the button does not exist" do
- expect { browser.button(name: "no_such_name").name }.to raise_unknown_object_exception
- end
- end
-
- describe "#src" do
- it "returns the src attribute for the button image" do
- # varies between browsers
- expect(browser.button(name: "new_user_image").src).to include("images/button.png")
- end
-
- it "raises UnknownObjectException if the button does not exist" do
- expect { browser.button(name: "no_such_name").src }.to raise_unknown_object_exception
- end
- end
-
- describe "#style" do
- not_compliant_on :internet_explorer do
- it "returns the style attribute if the button exists" do
- expect(browser.button(id: 'delete_user_submit').style).to eq "border: 4px solid red;"
- end
- end
-
- it "returns an empty string if the element exists and the attribute doesn't exist" do
- expect(browser.button(id: 'new_user_submit').style).to eq ""
- end
-
- it "raises UnknownObjectException if the button does not exist" do
- expect { browser.button(name: "no_such_name").style }.to raise_unknown_object_exception
- end
- end
-
- describe "#title" do
- it "returns the title of the button" do
- expect(browser.button(index: 0).title).to eq 'Submit the form'
- end
-
- it "returns an empty string for button without title" do
- expect(browser.button(index: 1).title).to eq ''
- end
- end
-
- describe "#type" do
- it "returns the type if button exists" do
- expect(browser.button(index: 0).type).to eq 'submit'
- expect(browser.button(index: 1).type).to eq 'reset'
- expect(browser.button(index: 2).type).to eq 'button'
- end
-
- it "raises UnknownObjectException if button does not exist" do
- expect { browser.button(name: "no_such_name").type }.to raise_unknown_object_exception
- end
- end
-
- describe "#value" do
- it "returns the value if button exists" do
- expect(browser.button(index: 0).value).to eq 'Submit'
- expect(browser.button(index: 1).value).to eq 'Reset'
- expect(browser.button(index: 2).value).to eq 'Button'
- end
-
- it "raises UnknownObjectException if button does not exist" do
- expect { browser.button(name: "no_such_name").value }.to raise_unknown_object_exception
- end
- end
-
- describe "#text" do
- it "returns the text of the button" do
- expect(browser.button(index: 0).text).to eq 'Submit'
- expect(browser.button(index: 1).text).to eq 'Reset'
- expect(browser.button(index: 2).text).to eq 'Button'
- expect(browser.button(index: 3).text).to eq 'Preview'
- end
-
- it "raises UnknownObjectException if the element does not exist" do
- expect { browser.button(id: "no_such_id").text }.to raise_unknown_object_exception
- end
- end
-
- describe "#respond_to?" do
- it "returns true for all attribute methods" do
- expect(browser.button(index: 0)).to respond_to(:class_name)
- expect(browser.button(index: 0)).to respond_to(:id)
- expect(browser.button(index: 0)).to respond_to(:name)
- expect(browser.button(index: 0)).to respond_to(:src)
- expect(browser.button(index: 0)).to respond_to(:style)
- expect(browser.button(index: 0)).to respond_to(:title)
- expect(browser.button(index: 0)).to respond_to(:type)
- expect(browser.button(index: 0)).to respond_to(:value)
- end
- end
-
- # Access methods
- describe "#enabled?" do
- it "returns true if the button is enabled" do
- expect(browser.button(name: 'new_user_submit')).to be_enabled
- end
-
- it "returns false if the button is disabled" do
- expect(browser.button(name: 'new_user_submit_disabled')).to_not be_enabled
- end
-
- it "raises UnknownObjectException if the button doesn't exist" do
- expect { browser.button(name: "no_such_name").enabled? }.to raise_unknown_object_exception
- end
-
- it "raises ObjectDisabledException if disabled button is clicked" do
- expect { browser.button(name: "new_user_submit_disabled").click }.to raise_object_disabled_exception
- end
- end
-
- describe "#disabled?" do
- it "returns false when button is enabled" do
- expect(browser.button(name: 'new_user_submit')).to_not be_disabled
- end
-
- it "returns true when button is disabled" do
- expect(browser.button(name: 'new_user_submit_disabled')).to be_disabled
- end
-
- it "raises UnknownObjectException if button does not exist" do
- expect { browser.button(name: "no_such_name").disabled? }.to raise_unknown_object_exception
- end
- end
-
- # Manipulation methods
- describe "#click" do
- it "clicks the button if it exists" do
- browser.goto(WatirSpec.url_for("forms_with_input_elements.html"))
- browser.button(id: 'delete_user_submit').click
- Watir::Wait.until { !browser.url.include? 'forms_with_input_elements.html'}
- expect(browser.text).to include("Semantic table")
- end
-
- it "fires events" do
- browser.button(id: 'new_user_button').click
- expect(browser.button(id: 'new_user_button').value).to eq 'new_value_set_by_onclick_event'
- end
-
- it "raises UnknownObjectException when clicking a button that doesn't exist" do
- expect { browser.button(value: "no_such_value").click }.to raise_unknown_object_exception
- expect { browser.button(id: "no_such_id").click }.to raise_unknown_object_exception
- end
-
- it "raises ObjectDisabledException when clicking a disabled button" do
- expect { browser.button(value: "Disabled").click }.to raise_object_disabled_exception
- end
- end
-
-
-end
+require "watirspec_helper"
+
+describe "Button" do
+
+ before :each do
+ browser.goto(WatirSpec.url_for("forms_with_input_elements.html"))
+ end
+
+ # Exists method
+ describe "#exists?" do
+ it "returns true if the button exists (tag = :input)" do
+ expect(browser.button(id: "new_user_submit")).to exist
+ expect(browser.button(id: /new_user_submit/)).to exist
+ expect(browser.button(name: "new_user_reset")).to exist
+ expect(browser.button(name: /new_user_reset/)).to exist
+ expect(browser.button(value: "Button")).to exist
+ expect(browser.button(value: /Button/)).to exist
+ not_compliant_on :internet_explorer do
+ expect(browser.button(src: "images/button.png")).to exist
+ end
+ expect(browser.button(src: /button\.png/)).to exist
+ expect(browser.button(text: "Button 2")).to exist
+ expect(browser.button(text: /Button 2/)).to exist
+ expect(browser.button(class: "image")).to exist
+ expect(browser.button(class: /image/)).to exist
+ expect(browser.button(index: 0)).to exist
+ expect(browser.button(xpath: "//input[@id='new_user_submit']")).to exist
+ expect(browser.button(alt: "Create a new user")).to exist
+ expect(browser.button(alt: /Create a/)).to exist
+ end
+
+ it "returns true if the button exists (tag = :button)" do
+ expect(browser.button(name: "new_user_button_2")).to exist
+ expect(browser.button(name: /new_user_button_2/)).to exist
+ expect(browser.button(value: "button_2")).to exist
+ expect(browser.button(value: /button_2/)).to exist
+ expect(browser.button(text: 'Button 2')).to exist
+ expect(browser.button(text: /Button 2/)).to exist
+ expect(browser.button(value: 'Button 2')).to exist
+ expect(browser.button(value: /Button 2/)).to exist
+ end
+
+ it "returns true if the button exists (how = :caption)" do
+ expect(browser.button(caption: "Button 2")).to exist
+ expect(browser.button(caption: /Button 2/)).to exist
+ end
+
+ it "returns the first button if given no args" do
+ expect(browser.button).to exist
+ end
+
+ it "returns true for element with upper case type" do
+ expect(browser.button(id: "new_user_button_preview")).to exist
+ end
+
+ it "returns false if the button doesn't exist" do
+ expect(browser.button(id: "no_such_id")).to_not exist
+ expect(browser.button(id: /no_such_id/)).to_not exist
+ expect(browser.button(name: "no_such_name")).to_not exist
+ expect(browser.button(name: /no_such_name/)).to_not exist
+ expect(browser.button(value: "no_such_value")).to_not exist
+ expect(browser.button(value: /no_such_value/)).to_not exist
+ expect(browser.button(src: "no_such_src")).to_not exist
+ expect(browser.button(src: /no_such_src/)).to_not exist
+ expect(browser.button(text: "no_such_text")).to_not exist
+ expect(browser.button(text: /no_such_text/)).to_not exist
+ expect(browser.button(class: "no_such_class")).to_not exist
+ expect(browser.button(class: /no_such_class/)).to_not exist
+ expect(browser.button(index: 1337)).to_not exist
+ expect(browser.button(xpath: "//input[@id='no_such_id']")).to_not exist
+ end
+
+ it "checks the tag name and type attribute when locating by xpath" do
+ expect(browser.button(xpath: "//input[@type='text']")).to_not exist
+ expect(browser.button(xpath: "//input[@type='button']")).to exist
+ end
+
+ it "matches the specific type when locating by type" do
+ expect(browser.button(type: "button").type).to eq "button"
+ expect(browser.button(type: "reset").type).to eq "reset"
+ expect(browser.button(type: "submit").type).to eq "submit"
+ expect(browser.button(type: "image").type).to eq "image"
+ end
+
+ it "matches valid input types when type is boolean" do
+ expect(browser.buttons(type: false).map(&:tag_name)).to all eq("button")
+
+ input_buttons = browser.buttons(type: true).select { |e| e.tag_name == "input" }
+ expect(input_buttons.map(&:type).uniq).to match_array(Watir::Button::VALID_TYPES)
+ end
+
+ it "raises TypeError when 'what' argument is invalid" do
+ expect { browser.button(id: 3.14).exists? }.to raise_error(TypeError)
+ end
+ end
+
+ # Attribute methods
+ describe "#class_name" do
+ it "returns the class name of the button" do
+ expect(browser.button(name: "new_user_image").class_name).to eq "image"
+ end
+
+ it "returns an empty string if the button has no class name" do
+ expect(browser.button(name: "new_user_submit").class_name).to eq ""
+ end
+ end
+
+ describe "#id" do
+ it "returns the id if the button exists" do
+ expect(browser.button(index: 0).id).to eq 'new_user_submit'
+ expect(browser.button(index: 1).id).to eq 'new_user_reset'
+ expect(browser.button(index: 2).id).to eq 'new_user_button'
+ end
+
+ it "raises UnknownObjectException if button does not exist" do
+ expect { browser.button(index: 1337).id }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#name" do
+ it "returns the name if button exists" do
+ expect(browser.button(index: 0).name).to eq 'new_user_submit'
+ expect(browser.button(index: 1).name).to eq 'new_user_reset'
+ expect(browser.button(index: 2).name).to eq 'new_user_button'
+ end
+
+ it "raises UnknownObjectException if the button does not exist" do
+ expect { browser.button(name: "no_such_name").name }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#src" do
+ it "returns the src attribute for the button image" do
+ # varies between browsers
+ expect(browser.button(name: "new_user_image").src).to include("images/button.png")
+ end
+
+ it "raises UnknownObjectException if the button does not exist" do
+ expect { browser.button(name: "no_such_name").src }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#style" do
+ not_compliant_on :internet_explorer do
+ it "returns the style attribute if the button exists" do
+ expect(browser.button(id: 'delete_user_submit').style).to eq "border: 4px solid red;"
+ end
+ end
+
+ it "returns an empty string if the element exists and the attribute doesn't exist" do
+ expect(browser.button(id: 'new_user_submit').style).to eq ""
+ end
+
+ it "raises UnknownObjectException if the button does not exist" do
+ expect { browser.button(name: "no_such_name").style }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#title" do
+ it "returns the title of the button" do
+ expect(browser.button(index: 0).title).to eq 'Submit the form'
+ end
+
+ it "returns an empty string for button without title" do
+ expect(browser.button(index: 1).title).to eq ''
+ end
+ end
+
+ describe "#type" do
+ it "returns the type if button exists" do
+ expect(browser.button(index: 0).type).to eq 'submit'
+ expect(browser.button(index: 1).type).to eq 'reset'
+ expect(browser.button(index: 2).type).to eq 'button'
+ end
+
+ it "raises UnknownObjectException if button does not exist" do
+ expect { browser.button(name: "no_such_name").type }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#value" do
+ it "returns the value if button exists" do
+ expect(browser.button(index: 0).value).to eq 'Submit'
+ expect(browser.button(index: 1).value).to eq 'Reset'
+ expect(browser.button(index: 2).value).to eq 'Button'
+ end
+
+ it "raises UnknownObjectException if button does not exist" do
+ expect { browser.button(name: "no_such_name").value }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#text" do
+ it "returns the text of the button" do
+ expect(browser.button(index: 0).text).to eq 'Submit'
+ expect(browser.button(index: 1).text).to eq 'Reset'
+ expect(browser.button(index: 2).text).to eq 'Button'
+ expect(browser.button(index: 3).text).to eq 'Preview'
+ end
+
+ it "raises UnknownObjectException if the element does not exist" do
+ expect { browser.button(id: "no_such_id").text }.to raise_unknown_object_exception
+ end
+ end
+
+ describe "#respond_to?" do
+ it "returns true for all attribute methods" do
+ expect(browser.button(index: 0)).to respond_to(:class_name)
+ expect(browser.button(index: 0)).to respond_to(:id)
+ expect(browser.button(index: 0)).to respond_to(:name)
+ expect(browser.button(index: 0)).to respond_to(:src)
+ expect(browser.button(index: 0)).to respond_to(:style)
+ expect(browser.button(index: 0)).to respond_to(:title)
+ expect(browser.button(index: 0)).to respond_to(:type)
+ expect(browser.button(index: 0)).to respond_to(:value)
+ end
+ end
+
+ # Access methods
+ describe "#enabled?" do
+ it "returns true if the button is enabled" do
+ expect(browser.button(name: 'new_user_submit')).to be_enabled
+ end
+
+ it "returns false if the button is disabled" do
+ expect(browser.button(name: 'new_user_submit_disabled')).to_not be_enabled
+ end
+
+ it "raises UnknownObjectException if the button doesn't exist" do
+ expect { browser.button(name: "no_such_name").enabled? }.to raise_unknown_object_exception
+ end
+
+ it "raises ObjectDisabledException if disabled button is clicked" do
+ expect { browser.button(name: "new_user_submit_disabled").click }.to raise_object_disabled_exception
+ end
+ end
+
+ describe "#disabled?" do
+ it "returns false when button is enabled" do
+ expect(browser.button(name: 'new_user_submit')).to_not be_disabled
+ end
+
+ it "returns true when button is disabled" do
+ expect(browser.button(name: 'new_user_submit_disabled')).to be_disabled
+ end
+
+ it "raises UnknownObjectException if button does not exist" do
+ expect { browser.button(name: "no_such_name").disabled? }.to raise_unknown_object_exception
+ end
+ end
+
+ # Manipulation methods
+ describe "#click" do
+ it "clicks the button if it exists" do
+ browser.goto(WatirSpec.url_for("forms_with_input_elements.html"))
+ browser.button(id: 'delete_user_submit').click
+ Watir::Wait.until { !browser.url.include? 'forms_with_input_elements.html'}
+ expect(browser.text).to include("Semantic table")
+ end
+
+ it "fires events" do
+ browser.button(id: 'new_user_button').click
+ expect(browser.button(id: 'new_user_button').value).to eq 'new_value_set_by_onclick_event'
+ end
+
+ it "raises UnknownObjectException when clicking a button that doesn't exist" do
+ expect { browser.button(value: "no_such_value").click }.to raise_unknown_object_exception
+ expect { browser.button(id: "no_such_id").click }.to raise_unknown_object_exception
+ end
+
+ it "raises ObjectDisabledException when clicking a disabled button" do
+ expect { browser.button(value: "Disabled").click }.to raise_object_disabled_exception
+ end
+ end
+
+
+end