generators/config/templates/drivers/browserstack.rb in howitzer-2.3.0 vs generators/config/templates/drivers/browserstack.rb in howitzer-2.4.0

- old
+ new

@@ -1,21 +1,48 @@ -Capybara.register_driver :browserstack do |app| +def w3c_selenium_browserstack_caps # rubocop:disable Metrics/AbcSize + caps = CapybaraHelpers.required_w3c_cloud_caps + bstack_options = { + sessionName: "#{(Howitzer.current_rake_task || 'ALL').upcase} #{Howitzer.cloud_browser_name}", + projectName: Howitzer.cloud_bstack_project, + buildName: Howitzer.cloud_bstack_build + } + bstack_options['resolution'] = Howitzer.cloud_bstack_resolution if Howitzer.cloud_bstack_resolution.present? + bstack_options['os'] = Howitzer.cloud_bstack_os if Howitzer.cloud_bstack_os.present? + caps['bstack:options'] = bstack_options + if Howitzer.user_agent.present? + if CapybaraHelpers.chrome_browser? + caps['goog:chromeOptions'] = { 'args' => ["--user-agent=#{Howitzer.user_agent}"] } + elsif CapybaraHelpers.ff_browser? + profile = Selenium::WebDriver::Firefox::Profile.new + profile['general.useragent.override'] = Howitzer.user_agent + caps['moz:firefoxOptions'] = { profile: profile.as_json['zip'] } + end + end + caps +end + +def classic_selenium_browserstack_caps # rubocop:disable Metrics/AbcSize caps = CapybaraHelpers.required_cloud_caps.merge( project: Howitzer.cloud_bstack_project, build: Howitzer.cloud_bstack_build ) - caps[:resolution] = Howitzer.cloud_bstack_resolution if Howitzer.cloud_bstack_resolution.present? - caps[:device] = Howitzer.cloud_bstack_mobile_device if Howitzer.cloud_bstack_mobile_device.present? + caps['resolution'] = Howitzer.cloud_bstack_resolution if Howitzer.cloud_bstack_resolution.present? + caps['os'] = Howitzer.cloud_bstack_os if Howitzer.cloud_bstack_os.present? if Howitzer.user_agent.present? if CapybaraHelpers.chrome_browser? caps['chromeOptions'] = { 'args' => ["--user-agent=#{Howitzer.user_agent}"] } elsif CapybaraHelpers.ff_browser? profile = Selenium::WebDriver::Firefox::Profile.new profile['general.useragent.override'] = Howitzer.user_agent caps[:firefox_profile] = profile end end + caps +end + +Capybara.register_driver :browserstack do |app| url = "https://#{Howitzer.cloud_auth_login}:#{Howitzer.cloud_auth_pass}@hub.browserstack.com/wd/hub" + caps = CapybaraHelpers.w3c_selenium? ? w3c_selenium_browserstack_caps : classic_selenium_browserstack_caps CapybaraHelpers.cloud_driver(app, caps, url) end Capybara::Screenshot.class_eval do register_driver :browserstack, &registered_drivers[:selenium]