spec/element_spec.rb in watir-6.10.3 vs spec/element_spec.rb in watir-6.11.0.beta1

- old
+ new

@@ -18,17 +18,16 @@ it 'returns false if the element does not exist' do expect(browser.div(:id, 'should-not-exist')).to_not be_present end it "returns false if the element is stale" do - wd_element = browser.div(id: "foo").wd + element = browser.div(id: "foo").tap(&:exists?) - # simulate element going stale during lookup - allow(browser.driver).to receive(:find_element).with(:id, 'foo') { wd_element } browser.refresh - expect(browser.div(:id, 'foo')).to_not be_present + expect(element).to be_stale + expect(element).to_not be_present end end describe "#enabled?" do @@ -52,42 +51,35 @@ describe "#exists?" do before do browser.goto WatirSpec.url_for('removed_element.html') end - it "relocates element from a collection when it becomes stale" do - watir_element = browser.divs(id: "text").first - expect(watir_element).to exist + it "element from a collection returns false when it becomes stale" do + element = browser.divs(id: "text").first.tap(&:exists?) browser.refresh - expect(watir_element).to exist + expect(element).to be_stale + expect(element).to_not exist end it "returns false when tag name does not match id" do watir_element = browser.span(id: "text") expect(watir_element).to_not exist end end describe "#element_call" do - it 'handles exceptions when taking an action on an element that goes stale during execution' do + it 'handles exceptions when taking an action on a stale element' do browser.goto WatirSpec.url_for('removed_element.html') - watir_element = browser.div(id: "text") + element = browser.div(id: "text").tap(&:exists?) - # simulate element going stale after assert_exists and before action taken, but not when block retried - allow(watir_element).to receive(:text) do - watir_element.send(:element_call) do - @already_stale ||= false - browser.refresh unless @already_stale - @already_stale = true - watir_element.instance_variable_get('@element').text - end - end + browser.refresh - expect { watir_element.text }.to_not raise_error + expect(element).to be_stale + expect { element.text }.to_not raise_error end end describe "#hover" do