puppeteer-ruby 0.37.3 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,7 +9,7 @@ class Puppeteer::WaitTask
9
9
  end
10
10
  end
11
11
 
12
- def initialize(dom_world:, predicate_body:, title:, polling:, timeout:, args: [], binding_function: nil)
12
+ def initialize(dom_world:, predicate_body:, title:, polling:, timeout:, args: [], binding_function: nil, root: nil)
13
13
  if polling.is_a?(String)
14
14
  if polling != 'raf' && polling != 'mutation'
15
15
  raise ArgumentError.new("Unknown polling option: #{polling}")
@@ -25,6 +25,7 @@ class Puppeteer::WaitTask
25
25
  @dom_world = dom_world
26
26
  @polling = polling
27
27
  @timeout = timeout
28
+ @root = root
28
29
  @predicate_body = "return (#{predicate_body})(...args);"
29
30
  @args = args
30
31
  @binding_function = binding_function
@@ -68,6 +69,7 @@ class Puppeteer::WaitTask
68
69
  begin
69
70
  success = context.evaluate_handle(
70
71
  WAIT_FOR_PREDICATE_PAGE_FUNCTION,
72
+ @root,
71
73
  @predicate_body,
72
74
  @polling,
73
75
  @timeout,
@@ -121,8 +123,9 @@ class Puppeteer::WaitTask
121
123
  private define_async_method :async_rerun
122
124
 
123
125
  WAIT_FOR_PREDICATE_PAGE_FUNCTION = <<~JAVASCRIPT
124
- async function _(predicateBody, polling, timeout, ...args) {
126
+ async function _(root, predicateBody, polling, timeout, ...args) {
125
127
  const predicate = new Function('...args', predicateBody);
128
+ root = root || document
126
129
  let timedOut = false;
127
130
  if (timeout)
128
131
  setTimeout(() => (timedOut = true), timeout);
@@ -136,7 +139,7 @@ class Puppeteer::WaitTask
136
139
  * @return {!Promise<*>}
137
140
  */
138
141
  async function pollMutation() {
139
- const success = await predicate(...args);
142
+ const success = await predicate(root, ...args);
140
143
  if (success) return Promise.resolve(success);
141
144
  let fulfill;
142
145
  const result = new Promise((x) => (fulfill = x));
@@ -145,13 +148,13 @@ class Puppeteer::WaitTask
145
148
  observer.disconnect();
146
149
  fulfill();
147
150
  }
148
- const success = await predicate(...args);
151
+ const success = await predicate(root, ...args);
149
152
  if (success) {
150
153
  observer.disconnect();
151
154
  fulfill(success);
152
155
  }
153
156
  });
154
- observer.observe(document, {
157
+ observer.observe(root, {
155
158
  childList: true,
156
159
  subtree: true,
157
160
  attributes: true,
@@ -168,7 +171,7 @@ class Puppeteer::WaitTask
168
171
  fulfill();
169
172
  return;
170
173
  }
171
- const success = await predicate(...args);
174
+ const success = await predicate(root, ...args);
172
175
  if (success) fulfill(success);
173
176
  else requestAnimationFrame(onRaf);
174
177
  }
@@ -183,7 +186,7 @@ class Puppeteer::WaitTask
183
186
  fulfill();
184
187
  return;
185
188
  }
186
- const success = await predicate(...args);
189
+ const success = await predicate(root, ...args);
187
190
  if (success) fulfill(success);
188
191
  else setTimeout(onTimeout, pollInterval);
189
192
  }
data/lib/puppeteer.rb CHANGED
@@ -47,6 +47,7 @@ require 'puppeteer/launcher'
47
47
  require 'puppeteer/lifecycle_watcher'
48
48
  require 'puppeteer/mouse'
49
49
  require 'puppeteer/network_conditions'
50
+ require 'puppeteer/network_event_manager'
50
51
  require 'puppeteer/network_manager'
51
52
  require 'puppeteer/page'
52
53
  require 'puppeteer/protocol_stream_reader'
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'concurrent-ruby', '~> 1.1.0'
25
25
  spec.add_dependency 'websocket-driver', '>= 0.6.0'
26
26
  spec.add_dependency 'mime-types', '>= 3.0'
27
- spec.add_development_dependency 'bundler', '~> 2.2.3'
27
+ spec.add_development_dependency 'bundler', '~> 2.3.4'
28
28
  spec.add_development_dependency 'chunky_png'
29
29
  spec.add_development_dependency 'dry-inflector'
30
30
  spec.add_development_dependency 'pry-byebug'
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'rollbar'
33
33
  spec.add_development_dependency 'rspec', '~> 3.10.0 '
34
34
  spec.add_development_dependency 'rspec_junit_formatter' # for CircleCI.
35
- spec.add_development_dependency 'rubocop', '~> 1.23.0'
35
+ spec.add_development_dependency 'rubocop', '~> 1.24.0'
36
36
  spec.add_development_dependency 'rubocop-rspec'
37
37
  spec.add_development_dependency 'sinatra'
38
38
  spec.add_development_dependency 'webrick'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppeteer-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.37.3
4
+ version: 0.40.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-28 00:00:00.000000000 Z
11
+ date: 2022-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.2.3
61
+ version: 2.3.4
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.2.3
68
+ version: 2.3.4
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: chunky_png
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 1.23.0
173
+ version: 1.24.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 1.23.0
180
+ version: 1.24.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rubocop-rspec
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -306,6 +306,7 @@ files:
306
306
  - lib/puppeteer/mouse.rb
307
307
  - lib/puppeteer/network_condition.rb
308
308
  - lib/puppeteer/network_conditions.rb
309
+ - lib/puppeteer/network_event_manager.rb
309
310
  - lib/puppeteer/network_manager.rb
310
311
  - lib/puppeteer/page.rb
311
312
  - lib/puppeteer/page/metrics.rb
@@ -346,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
346
347
  - !ruby/object:Gem::Version
347
348
  version: '0'
348
349
  requirements: []
349
- rubygems_version: 3.1.6
350
+ rubygems_version: 3.3.3
350
351
  signing_key:
351
352
  specification_version: 4
352
353
  summary: A ruby port of puppeteer