|
| 1 | +require 'rubygems' |
| 2 | +require 'appium_lib' |
| 3 | +require 'selenium-webdriver' |
| 4 | +require 'browserstack/local' |
| 5 | + |
| 6 | +username = 'BROWSERSTACK_USERNAME' |
| 7 | +access_key = 'BROWSERSTACK_ACCESS_KEY' |
| 8 | + |
| 9 | +caps = {} |
| 10 | +caps['build'] = 'Ruby Appium Sample' |
| 11 | +caps['name'] = 'local_test' |
| 12 | +caps['device'] = 'Google Pixel' |
| 13 | +caps['realMobile'] = true |
| 14 | +caps['browserstack.local'] = true |
| 15 | +caps['browserstack.debug'] = true |
| 16 | +caps['app'] = 'bs://<hashed app-id>' |
| 17 | + |
| 18 | +bs_local = BrowserStack::Local.new |
| 19 | +bs_local_args = { "key" => access_key } |
| 20 | +bs_local.start(bs_local_args) |
| 21 | + |
| 22 | +appium_driver = Appium::Driver.new({ |
| 23 | + 'caps' => caps, |
| 24 | + 'appium_lib' => { |
| 25 | + :server_url => "http://#{username}:#{access_key}@hub.browserstack.com/wd/hub" |
| 26 | + }}, true) |
| 27 | +driver = appium_driver.start_driver |
| 28 | + |
| 29 | +wait = Selenium::WebDriver::Wait.new(:timeout => 30) |
| 30 | +wait.until { driver.find_element(:id, "com.example.android.basicnetworking:id/test_action").displayed? } |
| 31 | +element = driver.find_element(:id, "com.example.android.basicnetworking:id/test_action") |
| 32 | +element.click |
| 33 | + |
| 34 | +wait.until { driver.find_element(:class, "android.widget.TextView").displayed? } |
| 35 | +text_elements = driver.find_elements(:class, "android.widget.TextView") |
| 36 | + |
| 37 | +if text_elements.map(&:text).any?{|x| x.match('Up and running')} |
| 38 | + puts "Up and Running - Test Passed" |
| 39 | +else |
| 40 | + puts "Local Testing setup not working - Test Failed" |
| 41 | +end |
| 42 | + |
| 43 | +driver.quit |
| 44 | +bs_local.stop |
0 commit comments