require 'rspec/expectations' require 'appium_lib' require 'cucumber/ast' require 'Ifd_Mobile' # Define global variables $current_dir = File.expand_path(File.dirname(__FILE__)) $base_dir = File.expand_path(File.dirname(__FILE__) + '/../..') $_CONFIG = Hash.new # ################################################################### # # SYSTEM CONFIGURATION # # ################################################################### $_CONFIG['Print Log'] = true $_CONFIG['Wait Time'] = 20 $_CONFIG['DeviceName'] = 'ios' # require "#{$current_dir}/PolyClaim_env.rb" # Create a custom World class so we don't pollute `Object` with Appium methods class AppiumWorld end def server_url 'http://127.0.0.1:4723/wd/hub' end IOS_APP_PATH = File.join(File.dirname(__FILE__), '../../apps/TestApp/build/release-iphonesimulator/TestApp.app') ANDROID_APP_PATH = File.join(File.dirname(__FILE__), '../../apps/polyclaim.cordova.android.201510083238.apk') def capabilities_ios { 'platformName' => 'ios', 'deviceName' => 'iPad Air', 'platformVersion' => '8.3', 'app' => IOS_APP_PATH, 'rotatable' => true } end def capabilities_android { 'platformName' => 'android', # 'deviceName' => 'emulator-5554', 'deviceName' => '4d0079394a1e2129', 'fullReset' => 'fullReset', 'noReset' => 'true', 'platformVersion' => '4.4.2', 'app' => ANDROID_APP_PATH } end case $_CONFIG['DeviceName'].upcase.to_sym when :IOS Appium::Driver.new({caps: capabilities_ios, appium_lib: {server_url: server_url}}).start_driver when :ANDROID Appium::Driver.new({caps: capabilities_android, appium_lib: {server_url: server_url}}).start_driver else raise "\nERROR: *** Invalid Device Name!. Please check the config from $_CONFIG['DeviceName'] = #{$_CONFIG['DeviceName']}" end Appium.promote_appium_methods AppiumWorld World do AppiumWorld.new end def selenium return $driver end Before { $driver.start_driver } After do $driver.driver_quit end