class Playwright::WaitHelper

def cleanup

def cleanup
tered_listeners.each do |emitter, event, listener|
ter.off(event, listener)
tered_listeners.clear

def fulfill(*args)

def fulfill(*args)
p
 @promise.resolved?
mise.fulfill(args.first)

def initialize

def initialize
  @promise = Concurrent::Promises.resolvable_future
  @registered_listeners = Set.new
end

def reject(error)

def reject(error)
p
 @promise.resolved?
mise.reject(error)

def reject_on_event(emitter, event, error, predicate: nil)

def reject_on_event(emitter, event, error, predicate: nil)
  listener = -> (*args) {
    if !predicate || predicate.call(*args)
      reject(error)
    end
  }
  emitter.on(event, listener)
  @registered_listeners << [emitter, event, listener]
  self
end

def reject_on_timeout(timeout_ms, message)

def reject_on_timeout(timeout_ms, message)
  return if timeout_ms <= 0
  Concurrent::Promises.schedule(timeout_ms / 1000.0) do
    reject(TimeoutError.new(message: message))
  end
  self
end

def wait_for_event(emitter, event, predicate: nil)

Parameters:
  • () --
  • (Playwright::EventEmitter) --
def wait_for_event(emitter, event, predicate: nil)
  listener = -> (*args) {
    begin
      if !predicate || predicate.call(*args)
        fulfill(*args)
      end
    rescue => err
      reject(err)
    end
  }
  emitter.on(event, listener)
  @registered_listeners << [emitter, event, listener]
  self
end