class Capybara::Angular::Waiter

Constants

WAITER_JS

Attributes

page[RW]

Public Class Methods

new(page) click to toggle source
# File lib/capybara/angular/waiter.rb, line 8
def initialize(page)
  @page = page
end

Public Instance Methods

wait_until_ready() click to toggle source
# File lib/capybara/angular/waiter.rb, line 12
def wait_until_ready
  return unless driver_supports_js?
  start = Time.now

  until ready?
    inject_waiter
    timeout! if timeout?(start)
    sleep(0.01)
  end
end

Private Instance Methods

driver_supports_js?() click to toggle source
# File lib/capybara/angular/waiter.rb, line 25
def driver_supports_js?
  page.evaluate_script "true"
rescue Capybara::NotSupportedByDriverError
  false
end
inject_waiter() click to toggle source
# File lib/capybara/angular/waiter.rb, line 39
def inject_waiter
  return if page.evaluate_script("window.capybaraAngularReady !== undefined")
  page.execute_script WAITER_JS
end
ready?() click to toggle source
# File lib/capybara/angular/waiter.rb, line 44
def ready?
  page.evaluate_script("window.capybaraAngularReady === true")
end
timeout!() click to toggle source
# File lib/capybara/angular/waiter.rb, line 35
def timeout!
  raise Timeout::Error.new("timeout while waiting for angular")
end
timeout?(start) click to toggle source
# File lib/capybara/angular/waiter.rb, line 31
def timeout?(start)
  Time.now - start > Capybara::Angular.default_max_wait_time
end