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