module Appium::Core::Wait

def message_for(timeout, message)

def message_for(timeout, message)
  msg = "timed out after #{timeout} seconds"
  msg += ", #{message}" if message
  msg
end

def until(timeout: DEFAULT_TIMEOUT, interval: DEFAULT_INTERVAL, message: nil, ignored: nil, object: nil)

Parameters:
  • object (Object, NilClass) -- Object to evaluate block against
  • ignored (Array, Exception) -- Exceptions to ignore while polling (default: Exception)
  • message (String) -- Exception message if timed out.
  • interval (Integer) -- Seconds to sleep between polls. Set default by +appium_wait_interval+ (0.5).
  • timeout (Integer) -- Seconds to wait before timing out. Set default by +appium_wait_timeout+ (30).
def until(timeout: DEFAULT_TIMEOUT, interval: DEFAULT_INTERVAL, message: nil, ignored: nil, object: nil)
  ignored = Array(ignored || ::Exception)
  last_error = nil
  timer = Wait::Timer.new(timeout)
  until timer.timeout?
    begin
      return yield(object)
    rescue ::Errno::ECONNREFUSED => e
      raise e
    rescue *ignored => last_error
      # swallowed
    end
    sleep interval
  end
  msg = message_for timeout, message
  msg += " (#{last_error.message})" if last_error
  raise TimeoutError, msg
end

def until_true(timeout: DEFAULT_TIMEOUT, interval: DEFAULT_INTERVAL, message: nil, ignored: nil, object: nil)

Parameters:
  • object (Object, NilClass) -- Object to evaluate block against
  • ignored (Array, Exception) -- Exceptions to ignore while polling (default: Exception)
  • message (String) -- Exception message if timed out.
  • interval (Integer) -- Seconds to sleep between polls. Set default by +appium_wait_interval+ (0.5).
  • timeout (Integer) -- Seconds to wait before timing out. Set default by +appium_wait_timeout+ (30).
def until_true(timeout: DEFAULT_TIMEOUT, interval: DEFAULT_INTERVAL, message: nil, ignored: nil, object: nil)
  ignored = Array(ignored || ::Exception)
  last_error = nil
  timer = Wait::Timer.new(timeout)
  until timer.timeout?
    begin
      result = yield(object)
      return result if result
    rescue ::Errno::ECONNREFUSED => e
      raise e
    rescue *ignored => last_error
      # swallowed
    end
    sleep interval
  end
  msg = message_for timeout, message
  msg += " (#{last_error.message})" if last_error
  raise TimeoutError, msg
end