class Capybara::Node::Base

def synchronize(seconds = nil, errors: nil)

Raises:
  • (Capybara::FrozenInTime) - If the return value of `Time.now` appears stuck

Returns:
  • (Object) - The result of the given block

Parameters:
  • errors (Array) -- (driver.invalid_element_errors +
  • seconds (Integer) -- (current sessions default_max_wait_time) Maximum number of seconds to retry this block
def synchronize(seconds = nil, errors: nil)
  return yield if session.synchronized
  seconds = session_options.default_max_wait_time if [nil, true].include? seconds
  interval = session_options.default_retry_interval
  session.synchronized = true
  timer = Capybara::Helpers.timer(expire_in: seconds)
  begin
    yield
  rescue StandardError => e
    session.raise_server_error!
    raise e unless catch_error?(e, errors)
    if driver.wait?
      raise e if timer.expired?
      sleep interval
      reload if session_options.automatic_reload
    else
      old_base = @base
      reload if session_options.automatic_reload
      raise e if old_base == @base
    end
    retry
  ensure
    session.synchronized = false
  end
end