class Capybara::Vue::Waiter
Attributes
page[RW]
Public Class Methods
new(page)
click to toggle source
# File lib/capybara/vue/waiter.rb, line 6 def initialize(page) @page = page end
Public Instance Methods
wait_until_ready()
click to toggle source
# File lib/capybara/vue/waiter.rb, line 10 def wait_until_ready return unless vue_loaded? setup_ready start = Time.now until ready? timeout! if timeout?(start) setup_ready if page_reloaded_on_wait? sleep(0.01) end end
Private Instance Methods
page_reloaded_on_wait?()
click to toggle source
# File lib/capybara/vue/waiter.rb, line 54 def page_reloaded_on_wait? page.evaluate_script("window.vueReady === undefined") end
ready?()
click to toggle source
# File lib/capybara/vue/waiter.rb, line 33 def ready? page.evaluate_script("window.vueReady") end
setup_ready()
click to toggle source
# File lib/capybara/vue/waiter.rb, line 45 def setup_ready page.execute_script <<-JS window.vueReady = false; Vue.nextTick(function() { window.vueReady = true; }); JS end
timeout!()
click to toggle source
# File lib/capybara/vue/waiter.rb, line 29 def timeout! raise TimeoutError.new("timeout while waiting for vue") end
timeout?(start)
click to toggle source
# File lib/capybara/vue/waiter.rb, line 25 def timeout?(start) Time.now - start > Capybara.default_wait_time end
vue_loaded?()
click to toggle source
# File lib/capybara/vue/waiter.rb, line 37 def vue_loaded? begin page.evaluate_script "(typeof Vue !== 'undefined')" rescue Capybara::NotSupportedByDriverError false end end