require 'yaml' require 'appium_lib' require_relative '../../utilities'
module Platform
module Capabilities include Utils def setup_ios if ENV['TARGET'] == 'sauce' capabilities = sauce_ios_capabilities else capabilities = {caps: ios_capabilities} end Appium::Driver.new(capabilities).start_driver end def setup_android if ENV['TARGET'] == 'sauce' capabilities = sauce_android_capabilities else capabilities = {caps: android_capabilities} puts 'Setting android package ' + capabilities[:caps][:appPackage] end Appium::Driver.new(capabilities).start_driver end def setup_web browser = ENV['BROWSER'] Selenium::WebDriver.for browser.to_sym end def android_capabilities caps = android_settings capabilities = { platformName: 'Android', app: caps[:apk_path], appPackage: caps[:android_package], appActivity: caps[:app_activity] } if ENV['ANDROID_PHONE'] == 'emulator' capabilities = capabilities.merge(deviceName: 'Android Emulator', avd: ENV['DEVICE']) else capabilities = capabilities.merge(deviceName: ENV['DEVICE']) end capabilities end def sauce_android_capabilities cap = android_settings app = cap[:apk_path].split('/').select{|element| element.include?'.apk'}.first sauce_user = %x[echo $SAUCE_USER].strip sauce_key = %x[echo $SAUCE_KEY].strip { caps: { platformName: 'Android', app: cap[:apk_path], appPackage: cap[:android_package], appActivity: cap[:android_activity], :'appium-version' => '1.3.7', platformVersion: ENV['VERSION'], deviceName: ENV['DEVICE'], app: 'sauce-storage:'+app, name: app, :'access-key' => sauce_key }, appium_lib: { wait: 15, server_url: "http://#{sauce_user}:#{sauce_key}@ondemand.saucelabs.com:80/wd/hub", sauce_username: sauce_user, sauce_access_key: sauce_key } } end def ios_capabilities caps = ios_settings caps[:app_path] = ENV['IOS_DERIVED_DATA_PATH']+ '/' + caps[:app] if caps[:app_path].nil? capabilities = { deviceName: ENV['DEVICE'], platformVersion: ENV['VERSION'], platformName: 'iOS', preLaunch: true, app: caps[:app_path] } if ENV['IOS_PHONE'] == 'device' capabilities.merge!(uiud: ENV['UIUD'], bundleId: caps[:bundle_id]) end capabilities end def sauce_ios_capabilities cap = ios_settings cap[:app_path] = ENV['IOS_DERIVED_DATA_PATH']+'/'+cap[:app] if cap[:app_path].nil? sauce_user = %x[echo $SAUCE_USER].strip sauce_key = %x[echo $SAUCE_KEY].strip app = cap[:app_path].split('/').select{|element| element.include?'.app'}.first.gsub('.app','.zip') { caps: { platformName: 'iOS', :'appium-version' => '1.3.7', platformVersion: ENV['VERSION'], deviceName: 'iPhone 6', app: "sauce-storage:#{app}", :'access-key' => sauce_key, name: app }, appium_lib: { wait: 15, server_url: "http://#{sauce_user}:#{sauce_key}@ondemand.saucelabs.com:80/wd/hub", sauce_username: sauce_user, sauce_access_key: sauce_key } } end def start_selenium_driver self.send("setup_#{ENV['PLATFORM']}") end end
end