puppeteer-ruby 0.34.3 → 0.37.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +69 -43
- data/README.md +78 -11
- data/docs/api_coverage.md +27 -6
- data/lib/puppeteer/browser.rb +2 -8
- data/lib/puppeteer/browser_context.rb +1 -0
- data/lib/puppeteer/concurrent_ruby_utils.rb +2 -2
- data/lib/puppeteer/coverage.rb +11 -2
- data/lib/puppeteer/define_async_method.rb +1 -1
- data/lib/puppeteer/devices.rb +132 -0
- data/lib/puppeteer/dom_world.rb +10 -9
- data/lib/puppeteer/element_handle/offset.rb +28 -0
- data/lib/puppeteer/element_handle/point.rb +11 -0
- data/lib/puppeteer/element_handle.rb +68 -7
- data/lib/puppeteer/frame.rb +3 -2
- data/lib/puppeteer/js_coverage.rb +28 -7
- data/lib/puppeteer/launcher/chrome.rb +64 -4
- data/lib/puppeteer/launcher/firefox.rb +48 -4
- data/lib/puppeteer/launcher/launch_options.rb +2 -1
- data/lib/puppeteer/launcher.rb +0 -1
- data/lib/puppeteer/mouse.rb +54 -1
- data/lib/puppeteer/network_condition.rb +12 -0
- data/lib/puppeteer/network_conditions.rb +24 -0
- data/lib/puppeteer/network_manager.rb +47 -11
- data/lib/puppeteer/page/metrics.rb +49 -0
- data/lib/puppeteer/page/screenshot_options.rb +3 -1
- data/lib/puppeteer/page.rb +147 -93
- data/lib/puppeteer/puppeteer.rb +10 -2
- data/lib/puppeteer/timeout_helper.rb +22 -0
- data/lib/puppeteer/tracing.rb +6 -1
- data/lib/puppeteer/version.rb +1 -1
- data/lib/puppeteer/web_socket.rb +1 -0
- data/lib/puppeteer-ruby.rb +2 -0
- data/lib/puppeteer.rb +15 -12
- data/puppeteer-ruby.gemspec +1 -1
- metadata +10 -7
- data/Dockerfile +0 -9
- data/docker-compose.yml +0 -34
- data/lib/puppeteer/launcher/base.rb +0 -66
data/lib/puppeteer/tracing.rb
CHANGED
@@ -27,11 +27,16 @@ class Puppeteer::Tracing
|
|
27
27
|
option_categories << 'disabled-by-default-devtools.screenshot'
|
28
28
|
end
|
29
29
|
|
30
|
+
ex_cat = option_categories.select { |cat| cat.start_with?('-') }.map { |cat| cat[1..-1] }
|
31
|
+
in_cat = option_categories.reject { |cat| cat.start_with?('-') }
|
30
32
|
@path = path
|
31
33
|
@recording = true
|
32
34
|
@client.send_message('Tracing.start',
|
33
35
|
transferMode: 'ReturnAsStream',
|
34
|
-
|
36
|
+
traceConfig: {
|
37
|
+
excludedCategories: ex_cat,
|
38
|
+
includedCategories: in_cat,
|
39
|
+
},
|
35
40
|
)
|
36
41
|
end
|
37
42
|
|
data/lib/puppeteer/version.rb
CHANGED
data/lib/puppeteer/web_socket.rb
CHANGED
@@ -55,6 +55,7 @@ class Puppeteer::WebSocket
|
|
55
55
|
def initialize(url:, max_payload_size:)
|
56
56
|
@impl = DriverImpl.new(url)
|
57
57
|
@driver = ::WebSocket::Driver.client(@impl, max_length: max_payload_size)
|
58
|
+
@driver.set_header('User-Agent', "Puppeteer #{Puppeteer::VERSION}")
|
58
59
|
|
59
60
|
setup
|
60
61
|
@driver.start
|
data/lib/puppeteer.rb
CHANGED
@@ -5,7 +5,6 @@ module Puppeteer; end
|
|
5
5
|
require 'puppeteer/env'
|
6
6
|
|
7
7
|
# Custom data types.
|
8
|
-
require 'puppeteer/device'
|
9
8
|
require 'puppeteer/events'
|
10
9
|
require 'puppeteer/errors'
|
11
10
|
require 'puppeteer/geolocation'
|
@@ -44,6 +43,7 @@ require 'puppeteer/keyboard'
|
|
44
43
|
require 'puppeteer/launcher'
|
45
44
|
require 'puppeteer/lifecycle_watcher'
|
46
45
|
require 'puppeteer/mouse'
|
46
|
+
require 'puppeteer/network_conditions'
|
47
47
|
require 'puppeteer/network_manager'
|
48
48
|
require 'puppeteer/page'
|
49
49
|
require 'puppeteer/protocol_stream_reader'
|
@@ -54,6 +54,7 @@ require 'puppeteer/request'
|
|
54
54
|
require 'puppeteer/response'
|
55
55
|
require 'puppeteer/target'
|
56
56
|
require 'puppeteer/tracing'
|
57
|
+
require 'puppeteer/timeout_helper'
|
57
58
|
require 'puppeteer/timeout_settings'
|
58
59
|
require 'puppeteer/touch_screen'
|
59
60
|
require 'puppeteer/version'
|
@@ -66,17 +67,19 @@ require 'puppeteer/element_handle'
|
|
66
67
|
|
67
68
|
# ref: https://github.com/puppeteer/puppeteer/blob/master/lib/Puppeteer.js
|
68
69
|
module Puppeteer
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
)
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
70
|
+
@puppeteer ||= ::Puppeteer::Puppeteer.new(
|
71
|
+
project_root: __dir__,
|
72
|
+
preferred_revision: '706915',
|
73
|
+
is_puppeteer_core: true,
|
74
|
+
).tap do |instance|
|
75
|
+
instance.public_methods(false).each do |method_name|
|
76
|
+
define_singleton_method(method_name) do |*args, **kwargs, &block|
|
77
|
+
if kwargs.empty? # for Ruby < 2.7
|
78
|
+
@puppeteer.public_send(method_name, *args, &block)
|
79
|
+
else
|
80
|
+
@puppeteer.public_send(method_name, *args, **kwargs, &block)
|
81
|
+
end
|
82
|
+
end
|
80
83
|
end
|
81
84
|
end
|
82
85
|
end
|
data/puppeteer-ruby.gemspec
CHANGED
@@ -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.
|
35
|
+
spec.add_development_dependency 'rubocop', '~> 1.21.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.
|
4
|
+
version: 0.37.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
|
+
date: 2021-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.
|
173
|
+
version: 1.21.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.
|
180
|
+
version: 1.21.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: rubocop-rspec
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -244,15 +244,14 @@ files:
|
|
244
244
|
- ".rspec"
|
245
245
|
- ".rubocop.yml"
|
246
246
|
- CHANGELOG.md
|
247
|
-
- Dockerfile
|
248
247
|
- Gemfile
|
249
248
|
- LICENSE
|
250
249
|
- README.md
|
251
250
|
- Rakefile
|
252
251
|
- bin/console
|
253
252
|
- bin/setup
|
254
|
-
- docker-compose.yml
|
255
253
|
- docs/api_coverage.md
|
254
|
+
- lib/puppeteer-ruby.rb
|
256
255
|
- lib/puppeteer.rb
|
257
256
|
- lib/puppeteer/aria_query_handler.rb
|
258
257
|
- lib/puppeteer/browser.rb
|
@@ -275,6 +274,7 @@ files:
|
|
275
274
|
- lib/puppeteer/element_handle.rb
|
276
275
|
- lib/puppeteer/element_handle/bounding_box.rb
|
277
276
|
- lib/puppeteer/element_handle/box_model.rb
|
277
|
+
- lib/puppeteer/element_handle/offset.rb
|
278
278
|
- lib/puppeteer/element_handle/point.rb
|
279
279
|
- lib/puppeteer/emulation_manager.rb
|
280
280
|
- lib/puppeteer/env.rb
|
@@ -294,7 +294,6 @@ files:
|
|
294
294
|
- lib/puppeteer/keyboard/key_description.rb
|
295
295
|
- lib/puppeteer/keyboard/us_keyboard_layout.rb
|
296
296
|
- lib/puppeteer/launcher.rb
|
297
|
-
- lib/puppeteer/launcher/base.rb
|
298
297
|
- lib/puppeteer/launcher/browser_options.rb
|
299
298
|
- lib/puppeteer/launcher/chrome.rb
|
300
299
|
- lib/puppeteer/launcher/chrome_arg_options.rb
|
@@ -302,8 +301,11 @@ files:
|
|
302
301
|
- lib/puppeteer/launcher/launch_options.rb
|
303
302
|
- lib/puppeteer/lifecycle_watcher.rb
|
304
303
|
- lib/puppeteer/mouse.rb
|
304
|
+
- lib/puppeteer/network_condition.rb
|
305
|
+
- lib/puppeteer/network_conditions.rb
|
305
306
|
- lib/puppeteer/network_manager.rb
|
306
307
|
- lib/puppeteer/page.rb
|
308
|
+
- lib/puppeteer/page/metrics.rb
|
307
309
|
- lib/puppeteer/page/pdf_options.rb
|
308
310
|
- lib/puppeteer/page/screenshot_options.rb
|
309
311
|
- lib/puppeteer/page/screenshot_task_queue.rb
|
@@ -314,6 +316,7 @@ files:
|
|
314
316
|
- lib/puppeteer/request.rb
|
315
317
|
- lib/puppeteer/response.rb
|
316
318
|
- lib/puppeteer/target.rb
|
319
|
+
- lib/puppeteer/timeout_helper.rb
|
317
320
|
- lib/puppeteer/timeout_settings.rb
|
318
321
|
- lib/puppeteer/touch_screen.rb
|
319
322
|
- lib/puppeteer/tracing.rb
|
data/Dockerfile
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
FROM circleci/ruby:3.0.0-rc1-buster-node-browsers
|
2
|
-
|
3
|
-
USER root
|
4
|
-
|
5
|
-
RUN wget -O nightly.tar.bz2 "https://download.mozilla.org/?product=firefox-nightly-latest-ssl&os=linux64&lang=en-US" \
|
6
|
-
&& tar xf nightly.tar.bz2 \
|
7
|
-
&& ln -s $(pwd)/firefox/firefox /usr/bin/firefox
|
8
|
-
|
9
|
-
USER circleci
|
data/docker-compose.yml
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
version: "3"
|
2
|
-
services:
|
3
|
-
chrome:
|
4
|
-
tty: true
|
5
|
-
stdin_open: true
|
6
|
-
build: .
|
7
|
-
environment:
|
8
|
-
BUNDLE_PATH: /usr/local/bundle
|
9
|
-
DEBUG: 1
|
10
|
-
CI: 1
|
11
|
-
volumes:
|
12
|
-
- .:/puppeteer-ruby
|
13
|
-
- bundle-data:/usr/local/bundle
|
14
|
-
working_dir: /puppeteer-ruby
|
15
|
-
command: bundle exec rspec
|
16
|
-
|
17
|
-
firefox:
|
18
|
-
tty: true
|
19
|
-
stdin_open: true
|
20
|
-
build: .
|
21
|
-
environment:
|
22
|
-
BUNDLE_PATH: /usr/local/bundle
|
23
|
-
PUPPETEER_PRODUCT_RSPEC: firefox
|
24
|
-
DEBUG: 1
|
25
|
-
CI: 1
|
26
|
-
volumes:
|
27
|
-
- .:/puppeteer-ruby
|
28
|
-
- bundle-data:/usr/local/bundle
|
29
|
-
working_dir: /puppeteer-ruby
|
30
|
-
command: bundle exec rspec spec/integration/
|
31
|
-
|
32
|
-
volumes:
|
33
|
-
bundle-data:
|
34
|
-
driver: local
|
@@ -1,66 +0,0 @@
|
|
1
|
-
module Puppeteer::Launcher
|
2
|
-
class Base
|
3
|
-
# @param {string} projectRoot
|
4
|
-
# @param {string} preferredRevision
|
5
|
-
def initialize(project_root:, preferred_revision:, is_puppeteer_core:)
|
6
|
-
@project_root = project_root
|
7
|
-
@preferred_revision = preferred_revision
|
8
|
-
@is_puppeteer_core = is_puppeteer_core
|
9
|
-
end
|
10
|
-
|
11
|
-
class ExecutablePathNotFound < StandardError; end
|
12
|
-
|
13
|
-
# @returns [String] Chrome Executable file path.
|
14
|
-
# @raise [ExecutablePathNotFound]
|
15
|
-
def resolve_executable_path
|
16
|
-
if !@is_puppeteer_core
|
17
|
-
# puppeteer-core doesn't take into account PUPPETEER_* env variables.
|
18
|
-
executable_path = ENV['PUPPETEER_EXECUTABLE_PATH']
|
19
|
-
if FileTest.exist?(executable_path)
|
20
|
-
return executable_path
|
21
|
-
end
|
22
|
-
raise ExecutablePathNotFound.new(
|
23
|
-
"Tried to use PUPPETEER_EXECUTABLE_PATH env variable to launch browser but did not find any executable at: #{executable_path}",
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
# temporal logic.
|
28
|
-
if Puppeteer.env.darwin?
|
29
|
-
case self
|
30
|
-
when Chrome
|
31
|
-
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
|
32
|
-
when Firefox
|
33
|
-
'/Applications/Firefox Nightly.app/Contents/MacOS/firefox'
|
34
|
-
end
|
35
|
-
elsif Puppeteer.env.windows?
|
36
|
-
case self
|
37
|
-
when Chrome
|
38
|
-
'C:\Program Files\Google\Chrome\Application\chrome.exe'
|
39
|
-
# 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
|
40
|
-
when Firefox
|
41
|
-
'C:\Program Files\Firefox Nightly\firefox.exe'
|
42
|
-
end
|
43
|
-
else
|
44
|
-
case self
|
45
|
-
when Chrome
|
46
|
-
'/usr/bin/google-chrome'
|
47
|
-
when Firefox
|
48
|
-
'/usr/bin/firefox'
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# const browserFetcher = new BrowserFetcher(launcher._projectRoot);
|
53
|
-
# if (!launcher._isPuppeteerCore) {
|
54
|
-
# const revision = process.env['PUPPETEER_CHROMIUM_REVISION'];
|
55
|
-
# if (revision) {
|
56
|
-
# const revisionInfo = browserFetcher.revisionInfo(revision);
|
57
|
-
# const missingText = !revisionInfo.local ? 'Tried to use PUPPETEER_CHROMIUM_REVISION env variable to launch browser but did not find executable at: ' + revisionInfo.executablePath : null;
|
58
|
-
# return {executablePath: revisionInfo.executablePath, missingText};
|
59
|
-
# }
|
60
|
-
# }
|
61
|
-
# const revisionInfo = browserFetcher.revisionInfo(launcher._preferredRevision);
|
62
|
-
# const missingText = !revisionInfo.local ? `Browser is not downloaded. Run "npm install" or "yarn install"` : null;
|
63
|
-
# return {executablePath: revisionInfo.executablePath, missingText};
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|