class Playwright::WaitHelper

ref: github.com/microsoft/playwright-python/blob/30946ae3099d51f9b7f355f9ae7e8c04d748ce36/playwright/_impl/_wait_helper.py ref: github.com/microsoft/playwright/blob/01fb3a6045cbdb4b5bcba0809faed85bd917ab87/src/client/waiter.ts#L21

Attributes

promise[R]

Public Class Methods

new() click to toggle source
# File lib/playwright/wait_helper.rb, line 5
def initialize
  @promise = Concurrent::Promises.resolvable_future
  @registered_listeners = Set.new
end

Public Instance Methods

reject_on_event(emitter, event, error, predicate: nil) click to toggle source
# File lib/playwright/wait_helper.rb, line 10
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
reject_on_timeout(timeout_ms, message) click to toggle source
# File lib/playwright/wait_helper.rb, line 22
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
wait_for_event(emitter, event, predicate: nil) click to toggle source

@param [Playwright::EventEmitter] @param

# File lib/playwright/wait_helper.rb, line 34
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

Private Instance Methods

cleanup() click to toggle source
# File lib/playwright/wait_helper.rb, line 52
        def cleanup
  @registered_listeners.each do |emitter, event, listener|
    emitter.off(event, listener)
  end
  @registered_listeners.clear
end
fulfill(*args) click to toggle source
# File lib/playwright/wait_helper.rb, line 59
        def fulfill(*args)
  cleanup
  unless @promise.resolved?
    @promise.fulfill(args.first)
  end
end
reject(error) click to toggle source
# File lib/playwright/wait_helper.rb, line 66
        def reject(error)
  cleanup
  unless @promise.resolved?
    @promise.reject(error)
  end
end