1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00

rewrite #maximize and #resize_to specs to not use #size

This commit is contained in:
Thomas Walpole 2015-05-22 13:18:08 -07:00
parent 6b89b9be30
commit 5bb3ab86c5

View file

@ -86,10 +86,14 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
describe '#size' do describe '#size' do
it 'should return size of whole window', requires: [:windows, :js] do it 'should return size of whole window', requires: [:windows, :js] do
skip "Chromedriver returns a size larger than outerWidth, outerHeight???" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_chrome)
expect(@session.current_window.size).to eq @session.evaluate_script("[window.outerWidth, window.outerHeight];") expect(@session.current_window.size).to eq @session.evaluate_script("[window.outerWidth, window.outerHeight];")
end end
it 'should switch to original window if invoked not for current window' do it 'should switch to original window if invoked not for current window' do
skip "Chromedriver returns a size larger than outerWidth, outerHeight???" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_chrome)
@other_window = @session.window_opened_by do @other_window = @session.window_opened_by do
@session.find(:css, '#openWindow').click @session.find(:css, '#openWindow').click
end end
@ -104,24 +108,32 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
describe '#resize_to' do describe '#resize_to' do
it 'should be able to resize window', requires: [:windows, :js] do it 'should be able to resize window', requires: [:windows, :js] do
width, height = @session.evaluate_script("[window.outerWidth, window.outerHeight];") width, height = @session.evaluate_script("[window.outerWidth, window.outerHeight];")
@session.current_window.resize_to(width-10, height-10) @session.current_window.resize_to(width-10, height-10)
expect(@session.evaluate_script("[window.outerWidth, window.outerHeight];")).to eq([width-10, height-10]) expect(@session.evaluate_script("[window.outerWidth, window.outerHeight];")).to eq([width-10, height-10])
end end
it 'should switch to original window if invoked not for current window' do it 'should stay on current window if invoked not for current window' do
@other_window = @session.window_opened_by do @other_window = @session.window_opened_by do
@session.find(:css, '#openWindow').click @session.find(:css, '#openWindow').click
end end
@other_window.resize_to(400, 300) @other_window.resize_to(400, 300)
expect(@session.current_window).to eq(@window) expect(@session.current_window).to eq(@window)
expect(@other_window.size).to eq([400, 300])
# #size returns values larger than availWidth, availHeight with Chromedriver
# expect(@other_window.size).to eq([400, 300])
@session.within_window(@other_window) do
expect(@session.evaluate_script("[window.outerWidth, window.outerHeight]")).to eq([400,300])
end
end end
end end
describe '#maximize' do describe '#maximize' do
it 'should be able to maximize window', requires: [:windows, :js] do it 'should be able to maximize window', requires: [:windows, :js] do
skip "This test fails when run with Firefox on Travis - see issue #1493 - skipping for now" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_focus) skip "This test fails when run with Firefox on Travis - see issue #1493 - skipping for now" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_focus)
screen_width, screen_height = @session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];") screen_width, screen_height = @session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];")
window = @session.current_window window = @session.current_window
window.resize_to(screen_width-100, screen_height-100) window.resize_to(screen_width-100, screen_height-100)
@ -131,14 +143,20 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
expect(@session.evaluate_script("[window.outerWidth, window.outerHeight];")).to eq([screen_width, screen_height]) expect(@session.evaluate_script("[window.outerWidth, window.outerHeight];")).to eq([screen_width, screen_height])
end end
it 'should switch to original window if invoked not for current window', requires: [:windows, :js] do it 'should stay on current window if invoked not for current window', requires: [:windows, :js] do
skip "This test fails when run with Firefox on Travis - see issue #1493 - skipping for now" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_focus) skip "This test fails when run with Firefox on Travis - see issue #1493 - skipping for now" if ENV['TRAVIS'] && @session.respond_to?(:mode) && (@session.mode == :selenium_focus)
@other_window = @session.window_opened_by do @other_window = @session.window_opened_by do
@session.find(:css, '#openWindow').click @session.find(:css, '#openWindow').click
end end
@other_window.maximize @other_window.maximize
sleep 0.5 # The timing on maximize is finicky on Travis -- wait a bit for maximize to occur
expect(@session.current_window).to eq(@window) expect(@session.current_window).to eq(@window)
expect(@other_window.size).to eq(@session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];")) # #size returns values larger than availWidth, availHeight with Chromedriver
# expect(@other_window.size).to eq(@session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];"))
@session.within_window(@other_window) do
expect(@session.evaluate_script("[window.outerWidth, window.outerHeight]")).to eq(@session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];"))
end
end end
end end
end end