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