spec/watirspec/elements/frame_spec.rb in watir-6.10.1 vs spec/watirspec/elements/frame_spec.rb in watir-6.10.2

- old
+ new

@@ -1,123 +1,123 @@ -require "watirspec_helper" - -# -# TODO: fix duplication with iframe_spec -# - -describe "Frame" do - - before :each do - browser.goto(WatirSpec.url_for("frames.html")) - end - - not_compliant_on :safari do - it "handles crossframe javascript" do - browser.goto WatirSpec.url_for("frames.html") - - expect(browser.frame(id: "frame_1").text_field(name: 'senderElement').value).to eq 'send_this_value' - expect(browser.frame(id: "frame_2").text_field(name: 'recieverElement').value).to eq 'old_value' - browser.frame(id: "frame_1").button(id: 'send').click - expect(browser.frame(id: "frame_2").text_field(name: 'recieverElement').value).to eq 'send_this_value' - end - end - - describe "#exist?" do - it "returns true if the frame exists" do - expect(browser.frame(id: "frame_1")).to exist - expect(browser.frame(name: "frame1")).to exist - expect(browser.frame(index: 0)).to exist - expect(browser.frame(class: "half")).to exist - expect(browser.frame(xpath: "//frame[@id='frame_1']")).to exist - expect(browser.frame(src: "frame_1.html")).to exist - expect(browser.frame(id: /frame/)).to exist - expect(browser.frame(name: /frame/)).to exist - expect(browser.frame(src: /frame_1/)).to exist - expect(browser.frame(class: /half/)).to exist - end - - it "returns the first frame if given no args" do - expect(browser.frame).to exist - end - - it "returns false if the frame doesn't exist" do - expect(browser.frame(id: "no_such_id")).to_not exist - expect(browser.frame(name: "no_such_text")).to_not exist - expect(browser.frame(index: 1337)).to_not exist - expect(browser.frame(src: "no_such_src")).to_not exist - expect(browser.frame(class: "no_such_class")).to_not exist - expect(browser.frame(id: /no_such_id/)).to_not exist - expect(browser.frame(name: /no_such_text/)).to_not exist - expect(browser.frame(src: /no_such_src/)).to_not exist - expect(browser.frame(class: /no_such_class/)).to_not exist - expect(browser.frame(xpath: "//frame[@id='no_such_id']")).to_not exist - end - - bug "https://bugzilla.mozilla.org/show_bug.cgi?id=1255946", :firefox do - not_compliant_on :safari do - it "handles nested frames" do - browser.goto(WatirSpec.url_for("nested_frames.html")) - - browser.frame(id: "two").frame(id: "three").link(id: "four").click - - Watir::Wait.until { browser.title == "definition_lists" } - end - end - end - - it "raises TypeError when 'what' argument is invalid" do - expect { browser.frame(id: 3.14).exists? }.to raise_error(TypeError) - end - end - - it "raises UnknownFrameException when accessing elements inside non-existing frame" do - expect { browser.frame(name: "no_such_name").p(index: 0).id }.to raise_unknown_frame_exception - end - - it "raises UnknownFrameException when accessing a non-existing frame" do - expect { browser.frame(name: "no_such_name").id }.to raise_unknown_frame_exception - end - - it "raises UnknownFrameException when accessing a non-existing subframe" do - expect { browser.frame(name: "frame1").frame(name: "no_such_name").id }.to raise_unknown_frame_exception - end - - it "raises UnknownObjectException when accessing a non-existing element inside an existing frame" do - expect { browser.frame(index: 0).p(index: 1337).id }.to raise_unknown_object_exception - end - - it "raises NoMethodError when trying to access attributes it doesn't have" do - expect { browser.frame(index: 0).foo }.to raise_error(NoMethodError) - end - - it "is able to set a field" do - browser.frame(index: 0).text_field(name: 'senderElement').set("new value") - expect(browser.frame(index: 0).text_field(name: 'senderElement').value).to eq "new value" - end - - bug "Safari does not strip text", :safari do - it "can access the frame's parent element after use" do - el = browser.frameset - el.frame.text_field.value - expect(el.attribute_value("cols")).to be_kind_of(String) - end - end - - describe "#execute_script" do - bug "Safari does not strip text", :safari do - it "executes the given javascript in the specified frame" do - frame = browser.frame(index: 0) - expect(frame.div(id: 'set_by_js').text).to eq "" - frame.execute_script(%Q{document.getElementById('set_by_js').innerHTML = 'Art consists of limitation. The most beautiful part of every picture is the frame.'}) - expect(frame.div(id: 'set_by_js').text).to eq "Art consists of limitation. The most beautiful part of every picture is the frame." - end - end - end - - describe "#html" do - it "returns the full HTML source of the frame" do - browser.goto WatirSpec.url_for("frames.html") - expect(browser.frame.html.downcase).to include("<title>frame 1</title>") - end - end - -end +require "watirspec_helper" + +# +# TODO: fix duplication with iframe_spec +# + +describe "Frame" do + + before :each do + browser.goto(WatirSpec.url_for("frames.html")) + end + + not_compliant_on :safari do + it "handles crossframe javascript" do + browser.goto WatirSpec.url_for("frames.html") + + expect(browser.frame(id: "frame_1").text_field(name: 'senderElement').value).to eq 'send_this_value' + expect(browser.frame(id: "frame_2").text_field(name: 'recieverElement').value).to eq 'old_value' + browser.frame(id: "frame_1").button(id: 'send').click + expect(browser.frame(id: "frame_2").text_field(name: 'recieverElement').value).to eq 'send_this_value' + end + end + + describe "#exist?" do + it "returns true if the frame exists" do + expect(browser.frame(id: "frame_1")).to exist + expect(browser.frame(name: "frame1")).to exist + expect(browser.frame(index: 0)).to exist + expect(browser.frame(class: "half")).to exist + expect(browser.frame(xpath: "//frame[@id='frame_1']")).to exist + expect(browser.frame(src: "frame_1.html")).to exist + expect(browser.frame(id: /frame/)).to exist + expect(browser.frame(name: /frame/)).to exist + expect(browser.frame(src: /frame_1/)).to exist + expect(browser.frame(class: /half/)).to exist + end + + it "returns the first frame if given no args" do + expect(browser.frame).to exist + end + + it "returns false if the frame doesn't exist" do + expect(browser.frame(id: "no_such_id")).to_not exist + expect(browser.frame(name: "no_such_text")).to_not exist + expect(browser.frame(index: 1337)).to_not exist + expect(browser.frame(src: "no_such_src")).to_not exist + expect(browser.frame(class: "no_such_class")).to_not exist + expect(browser.frame(id: /no_such_id/)).to_not exist + expect(browser.frame(name: /no_such_text/)).to_not exist + expect(browser.frame(src: /no_such_src/)).to_not exist + expect(browser.frame(class: /no_such_class/)).to_not exist + expect(browser.frame(xpath: "//frame[@id='no_such_id']")).to_not exist + end + + bug "https://bugzilla.mozilla.org/show_bug.cgi?id=1255946", :firefox do + not_compliant_on :safari do + it "handles nested frames" do + browser.goto(WatirSpec.url_for("nested_frames.html")) + + browser.frame(id: "two").frame(id: "three").link(id: "four").click + + Watir::Wait.until { browser.title == "definition_lists" } + end + end + end + + it "raises TypeError when 'what' argument is invalid" do + expect { browser.frame(id: 3.14).exists? }.to raise_error(TypeError) + end + end + + it "raises UnknownFrameException when accessing elements inside non-existing frame" do + expect { browser.frame(name: "no_such_name").p(index: 0).id }.to raise_unknown_frame_exception + end + + it "raises UnknownFrameException when accessing a non-existing frame" do + expect { browser.frame(name: "no_such_name").id }.to raise_unknown_frame_exception + end + + it "raises UnknownFrameException when accessing a non-existing subframe" do + expect { browser.frame(name: "frame1").frame(name: "no_such_name").id }.to raise_unknown_frame_exception + end + + it "raises UnknownObjectException when accessing a non-existing element inside an existing frame" do + expect { browser.frame(index: 0).p(index: 1337).id }.to raise_unknown_object_exception + end + + it "raises NoMethodError when trying to access attributes it doesn't have" do + expect { browser.frame(index: 0).foo }.to raise_error(NoMethodError) + end + + it "is able to set a field" do + browser.frame(index: 0).text_field(name: 'senderElement').set("new value") + expect(browser.frame(index: 0).text_field(name: 'senderElement').value).to eq "new value" + end + + bug "Safari does not strip text", :safari do + it "can access the frame's parent element after use" do + el = browser.frameset + el.frame.text_field.value + expect(el.attribute_value("cols")).to be_kind_of(String) + end + end + + describe "#execute_script" do + bug "Safari does not strip text", :safari do + it "executes the given javascript in the specified frame" do + frame = browser.frame(index: 0) + expect(frame.div(id: 'set_by_js').text).to eq "" + frame.execute_script(%Q{document.getElementById('set_by_js').innerHTML = 'Art consists of limitation. The most beautiful part of every picture is the frame.'}) + expect(frame.div(id: 'set_by_js').text).to eq "Art consists of limitation. The most beautiful part of every picture is the frame." + end + end + end + + describe "#html" do + it "returns the full HTML source of the frame" do + browser.goto WatirSpec.url_for("frames.html") + expect(browser.frame.html.downcase).to include("<title>frame 1</title>") + end + end + +end