Skip to content

Commit

Permalink
[rb] screenshot size is apparently different on mac and linux
Browse files Browse the repository at this point in the history
  • Loading branch information
titusfortner committed May 7, 2022
1 parent 469970f commit 03098e0
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 8 deletions.
13 changes: 12 additions & 1 deletion rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,20 @@ module Firefox
end

it 'should print full page' do
viewport_width = driver.execute_script("return window.innerWidth;")
viewport_height = driver.execute_script("return window.innerHeight;")

path = "#{Dir.tmpdir}/test#{SecureRandom.urlsafe_base64}.png"
screenshot = driver.save_full_page_screenshot(path)
expect(File.read(screenshot)[0x10..0x18].unpack('NN').last).to be > 2600

if Platform.linux?
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).first.to be >= viewport_width
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).last.to be > viewport_height
else
expect((File.read(screenshot)[0x10..0x18].unpack('NN')).first/2).to be >= viewport_width
expect((File.read(screenshot)[0x10..0x18].unpack('NN')).last/2).to be > viewport_height
end

ensure
File.delete(path) if File.exist?(path)
end
Expand Down
26 changes: 19 additions & 7 deletions rb/spec/integration/selenium/webdriver/takes_screenshot_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,20 +81,32 @@ def save_screenshot_and_assert(source, path)
end

it 'takes viewport screenshot by default' do
viewport_width = driver.execute_script("return window.innerWidth;") * 2
viewport_height = driver.execute_script("return window.innerHeight;") * 2
viewport_width = driver.execute_script("return window.innerWidth;")
viewport_height = driver.execute_script("return window.innerHeight;")

screenshot = driver.save_screenshot path
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).to eq([viewport_width, viewport_height])

if Platform.linux?
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).first.to be <= viewport_width
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).last.to be <= viewport_height
else
expect((File.read(screenshot)[0x10..0x18].unpack('NN')).first/2).to be <= viewport_width
expect((File.read(screenshot)[0x10..0x18].unpack('NN')).last/2).to be <= viewport_height
end
end

it 'takes full page screenshot', exclusive: {browser: :firefox} do
viewport_width = driver.execute_script("return window.innerWidth;") * 2
viewport_height = driver.execute_script("return window.innerHeight;") * 2
viewport_width = driver.execute_script("return window.innerWidth;")
viewport_height = driver.execute_script("return window.innerHeight;")

screenshot = driver.save_screenshot path, full_page: true
expect(File.read(screenshot)[0x10..0x18].unpack1('NN')).to eq viewport_width
expect(File.read(screenshot)[0x10..0x18].unpack('NN').last).to be > viewport_height
if Platform.linux?
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).first.to be >= viewport_width
expect(File.read(screenshot)[0x10..0x18].unpack('NN')).last.to be > viewport_height
else
expect((File.read(screenshot)[0x10..0x18].unpack('NN')).first/2).to be >= viewport_width
expect((File.read(screenshot)[0x10..0x18].unpack('NN')).last/2).to be > viewport_height
end
end

it 'does not take full page screenshot', exclude: {browser: :firefox} do
Expand Down

0 comments on commit 03098e0

Please sign in to comment.