From 5bb3ab86c58693e413131120ff52e28aa7af47d2 Mon Sep 17 00:00:00 2001 From: Thomas Walpole Date: Fri, 22 May 2015 13:18:08 -0700 Subject: [PATCH] rewrite #maximize and #resize_to specs to not use #size --- .../spec/session/window/window_spec.rb | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/capybara/spec/session/window/window_spec.rb b/lib/capybara/spec/session/window/window_spec.rb index 227db254..f4fbb721 100644 --- a/lib/capybara/spec/session/window/window_spec.rb +++ b/lib/capybara/spec/session/window/window_spec.rb @@ -86,10 +86,14 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do describe '#size' 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];") end 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 @session.find(:css, '#openWindow').click end @@ -104,24 +108,32 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do describe '#resize_to' do it 'should be able to resize window', requires: [:windows, :js] do + width, height = @session.evaluate_script("[window.outerWidth, window.outerHeight];") @session.current_window.resize_to(width-10, height-10) expect(@session.evaluate_script("[window.outerWidth, window.outerHeight];")).to eq([width-10, height-10]) 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 @session.find(:css, '#openWindow').click end @other_window.resize_to(400, 300) 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 describe '#maximize' 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) + screen_width, screen_height = @session.evaluate_script("[window.screen.availWidth, window.screen.availHeight];") window = @session.current_window 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]) 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) + @other_window = @session.window_opened_by do @session.find(:css, '#openWindow').click end @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(@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