<% if axe? -%> def create_driver(browser, js_path, skip_iframes) AxeSelenium.configure(browser) do |config| config.jslib_path = js_path if js_path config.skip_iframes = skip_iframes if skip_iframes end.page end <% elsif selenium_based? -%> def create_driver(*opts) @config = YAML.load_file('config/config.yml') browser = @config['browser'].to_sym Selenium::WebDriver.for(browser, options: create_webdriver_options(*opts)) end def browser_arguments(*opts) opts.empty? ? @config['browser_arguments'][@config['browser']] : opts end def driver_options @config['driver_options'] end # :reek:FeatureEnvy def create_webdriver_options(*opts) load_browser = @config['browser'].to_s browser = load_browser == 'ie' ? load_browser.upcase : load_browser.capitalize options = "Selenium::WebDriver::#{browser}::Options".constantize.new browser_arguments(*opts).each { |arg| options.add_argument(arg) } driver_options.each { |opt| options.add_option(opt.first, opt.last) } options end <% elsif cross_platform? -%> def create_driver @driver = configure_driver end def platform @platform ||= YAML.load_file('config/config.yml')['platform'].to_s end def platform_caps @platform_caps ||= YAML.load_file('config/capabilities.yml')[platform] end # :reek:UtilityFunction def parsed_caps platform_caps['appium:options']['app'] = parse_app_path(platform_caps['appium:options']['app']) platform_caps end def parse_app_path(path) File.expand_path(path, Dir.pwd) end def browserstack? ENV['TEST_ENV'] == 'browserstack' end def browserstack_caps @browserstack_caps ||= YAML.load_file('config/capabilities.yml')['browserstack'] end def configure_driver if browserstack? Appium::Driver.new({ caps: browserstack_caps, 'appium_lib': { server_url: parsed_browserstack_url}}, true) else Appium::Driver.new({ caps: parsed_caps }) end end def parsed_browserstack_url username = ENV['BROWSERSTACK_USER'] access_key = ENV['BROWSERSTACK_KEY'] "https://#{username}:#{access_key}@hub-cloud.browserstack.com/wd/hub" end <% else -%> def create_driver @driver = configure_driver end # :reek:UtilityFunction def parsed_caps caps = YAML.load_file('config/capabilities.yml') caps['appium:options']['app'] = app_path(caps['appium:options']['app']) caps end def app_path(path) File.expand_path(path, Dir.pwd) end def browserstack? ENV['TEST_ENV'] == 'browserstack' end def browserstack_caps @browserstack_caps ||= YAML.load_file('config/capabilities.yml')['browserstack'] end def configure_driver if browserstack? Appium::Driver.new({ caps: browserstack_caps, 'appium_lib': { server_url: parsed_browserstack_url}}, true) else Appium::Driver.new({ caps: parsed_caps }) end end def parsed_browserstack_url username = ENV['BROWSERSTACK_USER'] access_key = ENV['BROWSERSTACK_KEY'] "https://#{username}:#{access_key}@hub-cloud.browserstack.com/wd/hub" end <% end -%>