diff --git a/rb/lib/selenium/webdriver/chromium/driver.rb b/rb/lib/selenium/webdriver/chromium/driver.rb index aa6af16aa0433..dfc972ea8c02a 100644 --- a/rb/lib/selenium/webdriver/chromium/driver.rb +++ b/rb/lib/selenium/webdriver/chromium/driver.rb @@ -40,6 +40,7 @@ class Driver < WebDriver::Driver DriverExtensions::HasLogs, DriverExtensions::HasLogEvents, DriverExtensions::HasPinnedScripts, + DriverExtensions::FullPageScreenshot, DriverExtensions::PrintsPage].freeze protected diff --git a/rb/lib/selenium/webdriver/chromium/features.rb b/rb/lib/selenium/webdriver/chromium/features.rb index 5333c6e21a16b..fed6cbfee91ca 100644 --- a/rb/lib/selenium/webdriver/chromium/features.rb +++ b/rb/lib/selenium/webdriver/chromium/features.rb @@ -28,7 +28,8 @@ module Features delete_network_conditions: [:delete, 'session/:session_id/chromium/network_conditions'], set_permission: [:post, 'session/:session_id/permissions'], get_available_log_types: [:get, 'session/:session_id/se/log/types'], - get_log: [:post, 'session/:session_id/se/log'] + get_log: [:post, 'session/:session_id/se/log'], + full_page_screenshot: [:get, 'session/:session_id/screenshot/full'] }.freeze def launch_app(id) @@ -93,6 +94,10 @@ def log(type) next end end + + def full_screenshot + execute :full_page_screenshot + end end # Bridge end # Chromium end # WebDriver diff --git a/rb/spec/integration/selenium/webdriver/takes_screenshot_spec.rb b/rb/spec/integration/selenium/webdriver/takes_screenshot_spec.rb index c242a19534a65..91c5be06ad431 100644 --- a/rb/spec/integration/selenium/webdriver/takes_screenshot_spec.rb +++ b/rb/spec/integration/selenium/webdriver/takes_screenshot_spec.rb @@ -95,18 +95,18 @@ def save_screenshot_and_assert(source, path) it 'takes full page screenshot', except: [{platform: :macosx, reason: 'showing half resolution of what expected'}], - exclusive: {browser: :firefox} do + exclusive: {browser: %i[firefox chrome edge]} do viewport_width = driver.execute_script('return window.innerWidth;') viewport_height = driver.execute_script('return window.innerHeight;') screenshot = driver.save_screenshot path, full_page: true width, height = png_size(screenshot) - expect(width).to be >= viewport_width + expect(width).to be <= viewport_width expect(height).to be > viewport_height end - it 'does not take full page screenshot', only: {browser: %i[chrome edge safari safari_preview], + it 'does not take full page screenshot', only: {browser: %i[safari safari_preview], reason: 'these browsers do not implement this feature'} do expect { driver.save_screenshot path, full_page: true