Skip to content

Commit

Permalink
update spec guards
Browse files Browse the repository at this point in the history
  • Loading branch information
titusfortner committed Jan 8, 2019
1 parent de9079f commit 24aea94
Show file tree
Hide file tree
Showing 4 changed files with 179 additions and 206 deletions.
142 changes: 64 additions & 78 deletions spec/watirspec/after_hooks_spec.rb
Expand Up @@ -83,7 +83,7 @@
expect(@yield).to be true
end

not_compliant_on :safari do
bug 'https://gist.github.com/titusfortner/bd32f27ec2458b3a733d83374d156940', :safari do
it 'runs after_hooks after Element#submit' do
browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
@page_after_hook = proc { @yield = browser.div(id: 'messages').text == 'submit' }
Expand All @@ -93,24 +93,24 @@
end
end

bug 'MoveTargetOutOfBoundsError', :firefox do
it 'runs after_hooks after Element#double_click' do
browser.goto(WatirSpec.url_for('non_control_elements.html'))
@page_after_hook = proc { @yield = browser.title == 'Non-control elements' }
browser.after_hooks.add @page_after_hook
browser.div(id: 'html_test').double_click
expect(@yield).to be true
end
it 'runs after_hooks after Element#double_click' do
browser.goto(WatirSpec.url_for('non_control_elements.html'))
@page_after_hook = proc { @yield = browser.title == 'Non-control elements' }
browser.after_hooks.add @page_after_hook
div = browser.div(id: 'html_test')
div.scroll.to
div.double_click
expect(@yield).to be true
end

not_compliant_on %i[remote firefox] do
it 'runs after_hooks after Element#right_click' do
browser.goto(WatirSpec.url_for('right_click.html'))
@page_after_hook = proc { @yield = browser.title == 'Right Click Test' }
browser.after_hooks.add @page_after_hook
browser.div(id: 'click').right_click
expect(@yield).to be true
end
it 'runs after_hooks after Element#right_click' do
browser.goto(WatirSpec.url_for('right_click.html'))
@page_after_hook = proc { @yield = browser.title == 'Right Click Test' }
browser.after_hooks.add @page_after_hook
div = browser.div(id: 'click')
div.scroll.to
div.right_click
expect(@yield).to be true
end

it 'runs after_hooks after FramedDriver#switch!' do
Expand All @@ -135,82 +135,68 @@
expect(@yield).to be true
end

not_compliant_on :headless do
it 'runs after_hooks after Alert#ok' do
browser.goto(WatirSpec.url_for('alerts.html'))
@page_after_hook = proc { @yield = browser.title == 'Alerts' }
browser.after_hooks.add @page_after_hook
browser.after_hooks.without { browser.button(id: 'alert').click }
browser.alert.ok
expect(@yield).to be true
end
it 'runs after_hooks after Alert#ok' do
browser.goto(WatirSpec.url_for('alerts.html'))
@page_after_hook = proc { @yield = browser.title == 'Alerts' }
browser.after_hooks.add @page_after_hook
browser.after_hooks.without { browser.button(id: 'alert').click }
browser.alert.ok
expect(@yield).to be true
end

not_compliant_on :headless do
bug 'https://code.google.com/p/chromedriver/issues/detail?id=26', [:chrome, :macosx] do
it 'runs after_hooks after Alert#close' do
browser.goto(WatirSpec.url_for('alerts.html'))
@page_after_hook = proc { @yield = browser.title == 'Alerts' }
browser.after_hooks.add @page_after_hook
browser.after_hooks.without { browser.button(id: 'alert').click }
browser.alert.close
expect(@yield).to be true
end
end
it 'runs after_hooks after Alert#close' do
browser.goto(WatirSpec.url_for('alerts.html'))
@page_after_hook = proc { @yield = browser.title == 'Alerts' }
browser.after_hooks.add @page_after_hook
browser.after_hooks.without { browser.button(id: 'alert').click }
browser.alert.close
expect(@yield).to be true
end

not_compliant_on :safari, :headless do
it 'does not run error checks with alert present' do
browser.goto WatirSpec.url_for('alerts.html')
it 'does not run error checks with alert present' do
browser.goto WatirSpec.url_for('alerts.html')

@page_after_hook = proc { @yield = browser.title == 'Alerts' }
browser.after_hooks.add @page_after_hook
@page_after_hook = proc { @yield = browser.title == 'Alerts' }
browser.after_hooks.add @page_after_hook

browser.button(id: 'alert').click
expect(@yield).to be_nil
browser.button(id: 'alert').click
expect(@yield).to be_nil

browser.alert.ok
expect(@yield).to eq true
end
browser.alert.ok
expect(@yield).to eq true
end

not_compliant_on :headless do
it 'does not raise error when running error checks using #after_hooks#without with alert present' do
url = WatirSpec.url_for('alerts.html')
@page_after_hook = proc { browser.url }
browser.after_hooks.add @page_after_hook
browser.goto url
expect { browser.after_hooks.without { browser.button(id: 'alert').click } }.to_not raise_error
browser.alert.ok
end
it 'does not raise error when running error checks using #after_hooks#without with alert present' do
url = WatirSpec.url_for('alerts.html')
@page_after_hook = proc { browser.url }
browser.after_hooks.add @page_after_hook
browser.goto url
expect { browser.after_hooks.without { browser.button(id: 'alert').click } }.to_not raise_error
browser.alert.ok
end

it 'does not raise error if no error checks are defined with alert present' do
url = WatirSpec.url_for('alerts.html')
@page_after_hook = proc { browser.url }
browser.after_hooks.add @page_after_hook
browser.goto url
browser.after_hooks.delete @page_after_hook
expect { browser.button(id: 'alert').click }.to_not raise_error
browser.alert.ok
end

not_compliant_on :headless do
it 'does not raise error if no error checks are defined with alert present' do
url = WatirSpec.url_for('alerts.html')
bug 'Clicking an Element that Closes a Window is returning NoMatchingWindowFoundException', :safari do
it 'does not raise error when running error checks on closed window' do
url = WatirSpec.url_for('window_switching.html')
@page_after_hook = proc { browser.url }
browser.after_hooks.add @page_after_hook
browser.goto url
browser.after_hooks.delete @page_after_hook
expect { browser.button(id: 'alert').click }.to_not raise_error
browser.alert.ok
end
end
browser.a(id: 'open').click

bug 'https://bugzilla.mozilla.org/show_bug.cgi?id=1223277', :firefox do
not_compliant_on :headless do
it 'does not raise error when running error checks on closed window' do
url = WatirSpec.url_for('window_switching.html')
@page_after_hook = proc { browser.url }
browser.after_hooks.add @page_after_hook
browser.goto url
browser.a(id: 'open').click

window = browser.window(title: 'closeable window')
window.use
expect { browser.a(id: 'close').click }.to_not raise_error
browser.original_window.use
end
window = browser.window(title: 'closeable window')
window.use
expect { browser.a(id: 'close').click }.to_not raise_error
browser.original_window.use
end
end
end
Expand Down
148 changes: 69 additions & 79 deletions spec/watirspec/alert_spec.rb
@@ -1,110 +1,100 @@
require 'watirspec_helper'

not_compliant_on :headless do
describe 'Alert API' do
before do
browser.goto WatirSpec.url_for('alerts.html')
end
describe 'Alert API' do
before do
browser.goto WatirSpec.url_for('alerts.html')
end

after do
browser.alert.ok if browser.alert.exists?
end
after do
browser.alert.ok if browser.alert.exists?
end

compliant_on :relaxed_locate do
context 'Relaxed Waits' do
context 'when acting on an alert' do
it 'raises exception after timing out' do
expect { browser.alert.text }.to wait_and_raise_unknown_object_exception
end
compliant_on :relaxed_locate do
context 'Relaxed Waits' do
context 'when acting on an alert' do
it 'raises exception after timing out' do
expect { browser.alert.text }.to wait_and_raise_unknown_object_exception
end
end
end
end

context 'alert' do
describe '#text' do
it 'returns text of alert' do
browser.button(id: 'alert').click
expect(browser.alert.text).to include('ok')
end
context 'alert' do
describe '#text' do
it 'returns text of alert' do
browser.button(id: 'alert').click
expect(browser.alert.text).to include('ok')
end
end

describe '#exists?' do
it 'returns false if alert is not present' do
expect(browser.alert).to_not exist
end
describe '#exists?' do
it 'returns false if alert is not present' do
expect(browser.alert).to_not exist
end

bug 'Alert exception not thrown, so Browser#inspect hangs', :safari do
it 'returns true if alert is present' do
browser.button(id: 'alert').click
browser.wait_until(timeout: 10) { browser.alert.exists? }
end
end
it 'returns true if alert is present' do
browser.button(id: 'alert').click
browser.wait_until(timeout: 10) { browser.alert.exists? }
end
end

describe '#ok' do
not_compliant_on :safari do
it 'closes alert' do
browser.button(id: 'alert').click
browser.alert.ok
expect(browser.alert).to_not exist
end
end
describe '#ok' do
it 'closes alert' do
browser.button(id: 'alert').click
browser.alert.ok
expect(browser.alert).to_not exist
end
end

bug 'https://code.google.com/p/chromedriver/issues/detail?id=26', [:chrome, :macosx] do
not_compliant_on :safari do
describe '#close' do
it 'closes alert' do
browser.button(id: 'alert').click
browser.alert.close
expect(browser.alert).to_not exist
end
end
end
describe '#close' do
it 'closes alert' do
browser.button(id: 'alert').click
browser.alert.close
expect(browser.alert).to_not exist
end
end

not_compliant_on :relaxed_locate do
describe 'wait_until_present' do
it 'waits until alert is present and goes on' do
browser.button(id: 'timeout-alert').click
browser.alert.wait_until_present.ok
not_compliant_on :relaxed_locate do
describe 'wait_until_present' do
it 'waits until alert is present and goes on' do
browser.button(id: 'timeout-alert').click
browser.alert.wait_until_present.ok

expect(browser.alert).to_not exist
end
expect(browser.alert).to_not exist
end

it 'raises error if alert is not present after timeout' do
expect { browser.alert.wait_until_present.ok }.to raise_timeout_exception
end
it 'raises error if alert is not present after timeout' do
expect { browser.alert.wait_until_present.ok }.to raise_timeout_exception
end
end
end
end

context 'confirm' do
describe '#ok' do
it 'accepts confirm' do
browser.button(id: 'confirm').click
browser.alert.ok
expect(browser.button(id: 'confirm').value).to eq 'true'
end
context 'confirm' do
describe '#ok' do
it 'accepts confirm' do
browser.button(id: 'confirm').click
browser.alert.ok
expect(browser.button(id: 'confirm').value).to eq 'true'
end
end

describe '#close' do
it 'cancels confirm' do
browser.button(id: 'confirm').click
browser.alert.close
expect(browser.button(id: 'confirm').value).to eq 'false'
end
describe '#close' do
it 'cancels confirm' do
browser.button(id: 'confirm').click
browser.alert.close
expect(browser.button(id: 'confirm').value).to eq 'false'
end
end
end

context 'prompt' do
describe '#set' do
it 'enters text to prompt' do
browser.button(id: 'prompt').click
browser.alert.set 'My Name'
browser.alert.ok
expect(browser.button(id: 'prompt').value).to eq 'My Name'
end
context 'prompt' do
describe '#set' do
it 'enters text to prompt' do
browser.button(id: 'prompt').click
browser.alert.set 'My Name'
browser.alert.ok
expect(browser.button(id: 'prompt').value).to eq 'My Name'
end
end
end
Expand Down

0 comments on commit 24aea94

Please sign in to comment.