ferrum 0.8 → 0.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -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