ferrum 0.8 → 0.11

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.
@@ -0,0 +1,38 @@
1
+ module Ferrum
2
+ class RGBA
3
+ def initialize(red, green, blue, alpha)
4
+ self.red = red
5
+ self.green = green
6
+ self.blue = blue
7
+ self.alpha = alpha
8
+
9
+ validate
10
+ end
11
+
12
+ def to_h
13
+ { r: red, g: green, b: blue, a: alpha }
14
+ end
15
+
16
+ private
17
+
18
+ attr_accessor :red, :green, :blue, :alpha
19
+
20
+ def validate
21
+ [red, green, blue].each(&method(:validate_color))
22
+ validate_alpha
23
+ end
24
+
25
+ def validate_color(value)
26
+ return if value && value.is_a?(Integer) && Range.new(0, 255).include?(value)
27
+
28
+ raise ArgumentError, "Wrong value of #{value} should be Integer from 0 to 255"
29
+ end
30
+
31
+ def validate_alpha
32
+ return if alpha && alpha.is_a?(Float) && Range.new(0.0, 1.0).include?(alpha)
33
+
34
+ raise ArgumentError,
35
+ "Wrong alpha value #{alpha} should be Float between 0.0 (fully transparent) and 1.0 (fully opaque)"
36
+ end
37
+ end
38
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ferrum
4
- VERSION = "0.8"
4
+ VERSION = "0.11"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ferrum
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.8'
4
+ version: '0.11'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Vorotilin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2021-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-driver
@@ -64,28 +64,28 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '2.6'
67
+ version: '2.5'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '2.6'
74
+ version: '2.5'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '12.3'
81
+ version: '13.0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '12.3'
88
+ version: '13.0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rspec
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -181,13 +181,15 @@ files:
181
181
  - README.md
182
182
  - lib/ferrum.rb
183
183
  - lib/ferrum/browser.rb
184
- - lib/ferrum/browser/chrome.rb
185
184
  - lib/ferrum/browser/client.rb
186
185
  - lib/ferrum/browser/command.rb
187
- - lib/ferrum/browser/firefox.rb
186
+ - lib/ferrum/browser/options/base.rb
187
+ - lib/ferrum/browser/options/chrome.rb
188
+ - lib/ferrum/browser/options/firefox.rb
188
189
  - lib/ferrum/browser/process.rb
189
190
  - lib/ferrum/browser/subscriber.rb
190
191
  - lib/ferrum/browser/web_socket.rb
192
+ - lib/ferrum/browser/xvfb.rb
191
193
  - lib/ferrum/context.rb
192
194
  - lib/ferrum/contexts.rb
193
195
  - lib/ferrum/cookies.rb
@@ -208,14 +210,21 @@ files:
208
210
  - lib/ferrum/network/response.rb
209
211
  - lib/ferrum/node.rb
210
212
  - lib/ferrum/page.rb
213
+ - lib/ferrum/page/animation.rb
211
214
  - lib/ferrum/page/frames.rb
212
215
  - lib/ferrum/page/screenshot.rb
216
+ - lib/ferrum/rbga.rb
213
217
  - lib/ferrum/target.rb
214
218
  - lib/ferrum/version.rb
215
219
  homepage: https://github.com/route/ferrum
216
220
  licenses:
217
221
  - MIT
218
- metadata: {}
222
+ metadata:
223
+ homepage_uri: https://ferrum.rubycdp.com/
224
+ bug_tracker_uri: https://github.com/rubycdp/ferrum/issues
225
+ documentation_uri: https://github.com/rubycdp/ferrum/blob/master/README.md
226
+ changelog_uri: https://github.com/rubycdp/ferrum/blob/master/CHANGELOG.md
227
+ source_code_uri: https://github.com/rubycdp/ferrum
219
228
  post_install_message:
220
229
  rdoc_options: []
221
230
  require_paths:
@@ -231,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
240
  - !ruby/object:Gem::Version
232
241
  version: '0'
233
242
  requirements: []
234
- rubygems_version: 3.1.2
243
+ rubygems_version: 3.1.4
235
244
  signing_key:
236
245
  specification_version: 4
237
246
  summary: Ruby headless Chrome driver
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ferrum
4
- class Browser
5
- class Chrome < Command
6
- DEFAULT_OPTIONS = {
7
- "headless" => nil,
8
- "disable-gpu" => nil,
9
- "hide-scrollbars" => nil,
10
- "mute-audio" => nil,
11
- "enable-automation" => nil,
12
- "disable-web-security" => nil,
13
- "disable-session-crashed-bubble" => nil,
14
- "disable-breakpad" => nil,
15
- "disable-sync" => nil,
16
- "no-first-run" => nil,
17
- "use-mock-keychain" => nil,
18
- "keep-alive-for-test" => nil,
19
- "disable-popup-blocking" => nil,
20
- "disable-extensions" => nil,
21
- "disable-hang-monitor" => nil,
22
- "disable-features" => "site-per-process,TranslateUI",
23
- "disable-translate" => nil,
24
- "disable-background-networking" => nil,
25
- "enable-features" => "NetworkService,NetworkServiceInProcess",
26
- "disable-background-timer-throttling" => nil,
27
- "disable-backgrounding-occluded-windows" => nil,
28
- "disable-client-side-phishing-detection" => nil,
29
- "disable-default-apps" => nil,
30
- "disable-dev-shm-usage" => nil,
31
- "disable-ipc-flooding-protection" => nil,
32
- "disable-prompt-on-repost" => nil,
33
- "disable-renderer-backgrounding" => nil,
34
- "force-color-profile" => "srgb",
35
- "metrics-recording-only" => nil,
36
- "safebrowsing-disable-auto-update" => nil,
37
- "password-store" => "basic",
38
- # Note: --no-sandbox is not needed if you properly setup a user in the container.
39
- # https://github.com/ebidel/lighthouse-ci/blob/master/builder/Dockerfile#L35-L40
40
- # "no-sandbox" => nil,
41
- }.freeze
42
-
43
- MAC_BIN_PATH = [
44
- "/Applications/Chromium.app/Contents/MacOS/Chromium",
45
- "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
46
- ].freeze
47
- LINUX_BIN_PATH = %w[chromium google-chrome-unstable google-chrome-beta
48
- google-chrome chrome chromium-browser
49
- google-chrome-stable].freeze
50
-
51
- private
52
-
53
- def combine_flags
54
- # Doesn't work on MacOS, so we need to set it by CDP as well
55
- @flags.merge!("window-size" => options[:window_size].join(","))
56
-
57
- port = options.fetch(:port, BROWSER_PORT)
58
- @flags.merge!("remote-debugging-port" => port)
59
-
60
- host = options.fetch(:host, BROWSER_HOST)
61
- @flags.merge!("remote-debugging-address" => host)
62
-
63
- @flags.merge!("user-data-dir" => @user_data_dir)
64
-
65
- @flags = DEFAULT_OPTIONS.merge(@flags)
66
-
67
- unless options.fetch(:headless, true)
68
- @flags.delete("headless")
69
- @flags.delete("disable-gpu")
70
- end
71
-
72
- @flags.merge!(options.fetch(:browser_options, {}))
73
- end
74
- end
75
- end
76
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ferrum
4
- class Browser
5
- class Firefox < Command
6
- DEFAULT_OPTIONS = {
7
- "headless" => nil,
8
- }.freeze
9
-
10
- MAC_BIN_PATH = [
11
- "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
12
- ].freeze
13
- LINUX_BIN_PATH = %w[firefox].freeze
14
-
15
- private
16
-
17
- def combine_flags
18
- port = options.fetch(:port, BROWSER_PORT)
19
- host = options.fetch(:host, BROWSER_HOST)
20
- @flags.merge!("remote-debugger" => "#{host}:#{port}")
21
-
22
- @flags.merge!("profile" => @user_data_dir)
23
-
24
- @flags = DEFAULT_OPTIONS.merge(@flags)
25
-
26
- unless options.fetch(:headless, true)
27
- @flags.delete("headless")
28
- end
29
-
30
- @flags.merge!(options.fetch(:browser_options, {}))
31
- end
32
- end
33
- end
34
- end