Sha256: 981e414fec2e78c764f9e1b93fa284dcf4a8f266a746b1cba4b459e3f00aa909

Contents?: true

Size: 1.66 KB

Versions: 13

Compression:

Stored size: 1.66 KB

Contents

require 'childprocess'

#
# This class is designed to start and stop the Appium Server process.  In order to use it you must have Appium
# and node installed on your computer.  You can pass parameters to Appium at startup via the constructor.
#
module TestCentricity
  class AppiumServer
    attr_accessor :process

    def initialize(params = {})
      @params = params
    end

    #
    # Start the Appium Server
    #
    def start
      # terminate any currently running Appium Server
      if running?
        system('killall -9 node')
        puts 'Terminating existing Appium Server'
        sleep(5)
        puts 'Appium Server is being restarted'
      else
        puts 'Appium Server is starting'
      end
      # start new Appium Server
      @process = ChildProcess.build(*parameters)
      process.start
      # wait until confirmation that Appium Server is running
      wait = Selenium::WebDriver::Wait.new(timeout: 30)
      wait.until { running? }
      puts "Appium Server is running - PID = #{process.pid}"
    end

    #
    # Check to see if Appium Server is running
    #
    def running?
      response = false
      begin
        response = Net::HTTP.get_response(URI('http://0.0.0.0:4723/wd/hub/sessions'))
      rescue
      end
      response && response.code_type == Net::HTTPOK
    end

    #
    # Stop the Appium Server
    #
    def stop
      process.stop
      puts 'Appium Server has been terminated'
    end

    private

    # :nocov:
    def parameters
      cmd = ['appium']
      @params.each do |key, value|
        cmd << '--' + key.to_s
        cmd << value.to_s if not value.nil? and value.size > 0
      end
      cmd
    end
    # :nocov:
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
testcentricity_web-4.5.5 lib/testcentricity_web/appium_server.rb
testcentricity_mobile-4.0.2 lib/testcentricity_mobile/appium_server.rb
testcentricity_mobile-4.0.1 lib/testcentricity_mobile/appium_server.rb
testcentricity_mobile-4.0.0 lib/testcentricity_mobile/appium_server.rb
testcentricity_web-4.5.4 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.5.3 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.5.2 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.5.1 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.5.0 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.4.7 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.4.6 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.4.5 lib/testcentricity_web/appium_server.rb
testcentricity_web-4.4.4 lib/testcentricity_web/appium_server.rb