diff --git a/examples/tests/cases/case_av_example.yaml b/examples/tests/cases/case_av_example.yaml index 9a33c219..febaf643 100644 --- a/examples/tests/cases/case_av_example.yaml +++ b/examples/tests/cases/case_av_example.yaml @@ -46,11 +46,11 @@ TestBrowserChromeAV: TestBrowserSafariAV: Roles: - Role: desktopSafari - Capabilities: - safariOptions: - prefs: - media.navigator.streams.fake: true - media.navigator.permission.disabled: true + # TODO: Safari options are not yet implemented in selenium + # Capabilities: + # safariOptions: + # media.navigator.streams.fake: true + # media.navigator.permission.disabled: true App: desktop Actions: - Type: navigate diff --git a/lib/core/device_drivers.rb b/lib/core/device_drivers.rb index 0b517e1d..2ca9c767 100644 --- a/lib/core/device_drivers.rb +++ b/lib/core/device_drivers.rb @@ -179,23 +179,14 @@ def merge_chrome_ops(config_caps, case_caps) # build the Chrome driver, given a set of options def build_chrome_driver(chrome_ops) + # local selenium instance + ops = Selenium::WebDriver::Chrome::Options.new(**chrome_ops) if @url.nil? - # local selenium instance - localChromeOptions = Selenium::WebDriver::Chrome::Options.new( - options: chrome_ops, - ) driver = Selenium::WebDriver.for( - :chrome, options: localChromeOptions + :chrome, options: ops ) else - # remote selenium grid - log_debug("Selenium Server URL: #{@url}") - remoteChromeOptions = Selenium::WebDriver::Remote::Capabilities.chrome( - "goog:chromeOptions": chrome_ops, - ) - driver = Selenium::WebDriver.for( - :remote, url: @url, desired_capabilities: remoteChromeOptions, - ) + driver = build_remote_driver(ops) end return driver end @@ -207,22 +198,15 @@ def merge_firefox_ops(config_caps, case_caps) # build the Firefox driver, given a set of options def build_firefox_driver(firefox_ops) + firefoxOptions = Selenium::WebDriver::Firefox::Options.new( + **firefox_ops + ) if @url.nil? - localFirefoxOptions = Selenium::WebDriver::Firefox::Options.new( - options: firefox_ops, - ) driver = Selenium::WebDriver.for( - :firefox, options: localFirefoxOptions + :firefox, options: firefoxOptions ) else - # remote selenium grid - log_debug("Selenium Server URL: #{@url}") - remoteFirefoxOptions = Selenium::WebDriver::Remote::Capabilities.firefox( - "moz:firefoxOptions" => firefox_ops, - ) - driver = Selenium::WebDriver.for( - :remote, url: @url, desired_capabilities: remoteFirefoxOptions, - ) + driver = build_remote_driver(firefoxOptions) end return driver end @@ -232,22 +216,17 @@ def merge_safari_ops(config_caps, case_caps) end def build_safari_driver(safari_ops) + # TODO: Check how to add safari options, this code does not work + # But it does not break the creation of safari webdriver + safariOptions = Selenium::WebDriver::Safari::Options.new( + **safari_ops + ) if @url.nil? - localSafariOptions = Selenium::WebDriver::Safari::Options.new( - options: safari_ops, - ) driver = Selenium::WebDriver.for( - :safari, options: localSafariOptions + :safari, options: safariOptions ) else - # remote selenium grid - log_debug("Selenium Server URL: #{@url}") - remoteSafariOptions = Selenium::WebDriver::Remote::Capabilities.safari( - safari_ops, - ) - driver = Selenium::WebDriver.for( - :remote, url: @url, desired_capabilities: remoteSafariOptions, - ) + driver = build_remote_driver(safariOptions) end return driver end @@ -257,22 +236,13 @@ def merge_ie_ops(config_caps, case_caps) end def build_ie_driver(ie_ops) + iEOptions = Selenium::WebDriver::IE::Options.new(**ie_ops) if @url.nil? - localIEOptions = Selenium::WebDriver::IE::Options.new( - options: ie_ops, - ) driver = Selenium::WebDriver.for( - :ie, options: localIEOptions + :ie, options: iEOptions ) else - # remote selenium grid - log_debug("Selenium Server URL: #{@url}") - remoteIEOptions = Selenium::WebDriver::Remote::Capabilities.ie( - "se:ieOptions" => ie_ops, - ) - driver = Selenium::WebDriver.for( - :remote, url: @url, desired_capabilities: remoteIEOptions, - ) + driver = build_remote_driver(iEOptions) end return driver end @@ -282,23 +252,24 @@ def merge_edge_ops(config_caps, case_caps) end def build_edge_driver(edge_ops) + edgeOptions = Selenium::WebDriver::Edge::Options.new( + **edge_ops + ) if @url.nil? - localEdgeOptions = Selenium::WebDriver::Edge::Options.new( - options: edge_ops, - ) driver = Selenium::WebDriver.for( - :edge, options: localEdgeOptions + :edge, options: edgeOptions ) else - # remote selenium grid - log_debug("Selenium Server URL: #{@url}") - remoteEdgeOptions = Selenium::WebDriver::Remote::Capabilities.edge( - "ms:edgeOptions" => edge_ops, - ) - driver = Selenium::WebDriver.for( - :remote, url: @url, desired_capabilities: remoteEdgeOptions, - ) + driver = build_remote_driver(edgeOptions) end return driver end + + def build_remote_driver(options) + # remote selenium grid + log_debug("Selenium Server URL: #{@url}") + return Selenium::WebDriver.for( + :remote, url: @url, options: options, + ) + end end \ No newline at end of file diff --git a/testray.gemspec b/testray.gemspec index 110715cd..8ce69cb7 100644 --- a/testray.gemspec +++ b/testray.gemspec @@ -27,7 +27,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency "httparty" spec.add_runtime_dependency "json" spec.add_runtime_dependency "rest-client" - spec.add_runtime_dependency "selenium-webdriver", "3.142.7" + spec.add_runtime_dependency "selenium-webdriver", "4.4.0" spec.add_runtime_dependency 'screen-recorder', "1.4.0" spec.add_runtime_dependency "colorize" spec.add_runtime_dependency "keisan"