Class: Playwright::Waiter

Inherits:
Object
  • Object
show all
Defined in:
lib/playwright/waiter.rb

Overview

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(channel_owner, wait_name:) ⇒ Waiter

Returns a new instance of Waiter.



7
8
9
10
11
12
13
14
15
16
# File 'lib/playwright/waiter.rb', line 7

def initialize(channel_owner, wait_name:)
  @result = Concurrent::Promises.resolvable_future
  @wait_id = SecureRandom.hex(16)
  @event = wait_name
  @channel = channel_owner.channel
  @registered_listeners = Set.new
  @listeners_mutex = Mutex.new
  @logs = []
  send_wait_info(waitId: @wait_id, phase: 'before', event: @event)
end

Instance Attribute Details

#resultObject (readonly)

Returns the value of attribute result.



115
116
117
# File 'lib/playwright/waiter.rb', line 115

def result
  @result
end

Instance Method Details

#force_fulfill(result) ⇒ Object



61
62
63
# File 'lib/playwright/waiter.rb', line 61

def force_fulfill(result)
  fulfill(result)
end

#force_reject(error) ⇒ Object



65
66
67
# File 'lib/playwright/waiter.rb', line 65

def force_reject(error)
  reject(error)
end

#log(message) ⇒ Object



117
118
119
120
# File 'lib/playwright/waiter.rb', line 117

def log(message)
  @logs << message
  send_wait_info(waitId: @wait_id, phase: 'log', message: message)
end

#reject_on_event(emitter, event, error_or_proc, predicate: nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/playwright/waiter.rb', line 25

def reject_on_event(emitter, event, error_or_proc, predicate: nil)
  listener = -> (*args) {
    if !predicate || predicate.call(*args)
      if error_or_proc.respond_to?(:call)
        reject(error_or_proc.call)
      else
        reject(error_or_proc)
      end
    end
  }
  register_listener(emitter, event, listener)

  self
end

#reject_on_timeout(timeout_ms, message) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/playwright/waiter.rb', line 40

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.rescue do |err|
    puts err, err.backtrace
  end

  self
end

#wait_for_event(emitter, event, predicate: nil) ⇒ Object

Parameters:



87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/playwright/waiter.rb', line 87

def wait_for_event(emitter, event, predicate: nil)
  listener = -> (*args) {
    begin
      if !predicate || predicate.call(*args)
        fulfill(args.first)
      end
    rescue => err
      reject(err)
    end
  }
  register_listener(emitter, event, listener)

  self
end