capybara-box 1.0.1 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6ae5faa0c5219a25e34453918b753bddea201ef08844b2f481513c0e2f1ca1d
4
- data.tar.gz: 36942efdfcd848547b6829c87b8cf7e25209d2b87feb384a0a1063d17ba0b040
3
+ metadata.gz: fe208d8f8fb951f498d76fe53640da096df8c4d4e32c44e065b3e6eb240d1265
4
+ data.tar.gz: 99fcc0e8620c7d44f11783a36509781bd4ebb08da0565948dcd3972fab0af89b
5
5
  SHA512:
6
- metadata.gz: 22839b971f457d7d83def0575baa4497ff6fcdda3ebf376e54a56947c262dd5c998cf513a1a0b7338a39478d46c003edf1042c54df4acd04c696ebf455eaf7ae
7
- data.tar.gz: 7e8cda883f1456c5acef378d86e4309e40a00c6e7d0b2f53b0a407b47d94f56b6266442e3c4b774c4be3fbcd15f8e6f9e62cf973aacc89f0bf22c8b808114e0f
6
+ metadata.gz: 05dc1e17050c6d4790914138d39cf0199824ca854ab8efbebf7f48a34206dd7c61894d2a5a94989605fe8e8172ac9f61519ce050b3791e34eb5cc8fb4ed6cadb
7
+ data.tar.gz: 82ee9c9d6a1a7cef8d80c9a3711c187d09365bf3c20e2039660c31fc79411c8070e933a984942932471cf8834fac816fee6e11b0608f755c93983a601ece4f33
data/CHANGELOG.md CHANGED
@@ -1,41 +1,80 @@
1
- ## v1.0.1
1
+ # v1.2.0
2
2
 
3
- - Fixes
4
- - Registers driver name as symbol;
3
+ ## Updates
5
4
 
6
- ## v1.0.0
5
+ - Avoids deprecated Selenium `:options`;
7
6
 
8
- - Updates
9
- - Updated default arguments;
10
- - Spec files now is excluded from gem pack;
7
+ # v1.1.2
11
8
 
12
- - Features
13
- - Capybara `load_selenium` is called before startup;
14
- - Screenshot S3 feature now is configure only via ENV;
15
- - Using new gem `webdrivers`;
9
+ ## Fixes
16
10
 
17
- - Fixes
18
- - Fix screenshot upload;
11
+ - Avoid apply blank bin path;
12
+ - Avoid apply blank version;
19
13
 
20
- ## v0.4.0
14
+ # v1.1.1
21
15
 
22
- - Updates Selenium WebDriver deprecated message;
16
+ ## Fixes
23
17
 
24
- ## v0.3.0
18
+ - Removes default args that was avoiding screen render.
19
+
20
+ # v1.1.0
21
+
22
+ ## Fixes
23
+
24
+ - S3 config activation;
25
+
26
+ ## Updates
27
+
28
+ - Adds more default arguments;
29
+
30
+ # v1.0.1
31
+
32
+ ## Fixes
33
+
34
+ - Registers driver name as symbol;
35
+
36
+ # v1.0.0
37
+
38
+ ## Updates
39
+
40
+ - Updated default arguments;
41
+ - Spec files now is excluded from gem pack;
42
+
43
+ ## Features
44
+
45
+ - Capybara `load_selenium` is called before startup;
46
+ - Screenshot S3 feature now is configure only via ENV;
47
+ - Using new gem `webdrivers`;
48
+
49
+ ## Fixes
50
+
51
+ - Fix screenshot upload;
52
+
53
+ # v0.4.0
54
+
55
+ ## Updates
56
+
57
+ - Selenium WebDriver deprecated message;
58
+
59
+ # v0.3.0
60
+
61
+ ## Updates
25
62
 
26
63
  - Drops Rack Session Access internal require;
27
64
  - Makes `chromedriver-helper` optional.
28
65
 
29
- ## v0.2.1
66
+ # v0.2.1
67
+
68
+ ## Fixes
69
+
70
+ - `chrome_headless` was being registered with wrong name.
30
71
 
31
- - Fixes
32
- - `chrome_headless` was being registered with wrong name.
72
+ # v0.2.0
33
73
 
34
- ## v0.2.0
74
+ ## Features
35
75
 
36
- - Features
37
- - Add log feature for Chrome and Chrome Headless.
76
+ - Add log feature for Chrome and Chrome Headless.
38
77
 
39
- ## v0.1.0
78
+ # v0.1.0
40
79
 
41
- First release.
80
+ - First release.
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Capybara Box
2
2
 
3
- [![Build Status](https://travis-ci.org/wbotelhos/capybara-box.svg?branch=master)](https://travis-ci.org/wbotelhos/capybara-box)
4
- [![Maintainability](https://api.codeclimate.com/v1/badges/1b13dc12b03be63baaed/maintainability)](https://codeclimate.com/github/wbotelhos/capybara-box/maintainability)
3
+ [![CI](https://github.com/wbotelhos/capybara-box/workflows/CI/badge.svg)](https://github.com/wbotelhos/capybara-box/actions)
5
4
  [![Gem Version](https://badge.fury.io/rb/capybara-box.svg)](https://badge.fury.io/rb/capybara-box)
6
- [![Patreon](https://img.shields.io/badge/donate-%3C3-brightgreen.svg)](https://www.patreon.com/wbotelhos)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/f312587b4f126bb13e85/maintainability)](https://codeclimate.com/github/wbotelhos/capybara-box/maintainability)
6
+ [![Coverage](https://codecov.io/gh/wbotelhos/capybara-box/branch/main/graph/badge.svg)](https://codecov.io/gh/wbotelhos/capybara-box)
7
+ [![Sponsor](https://img.shields.io/badge/sponsor-%3C3-green)](https://www.patreon.com/wbotelhos)
7
8
 
8
9
  Configure Capybara with **Chrome**, **Chrome Headless**, **Firefox** and **Firefox Headless** with *Screenshot* feature without losing your mind.
9
10
 
@@ -30,6 +31,10 @@ CapybaraBox::Base.configure
30
31
 
31
32
  By default, `selenium_chrome` is the driver, but you can use `selenium_chrome_headless` and `selenium_firefox` or `selenium_firefox_headless` too.
32
33
 
34
+ ```ruby
35
+ CapybaraBox::Base.configure(browser: :selenium_firefox)
36
+ ```
37
+
33
38
  ## Version
34
39
 
35
40
  The version is setted via `webdrivers`. You can specify the version:
@@ -9,17 +9,29 @@ module CapybaraBox
9
9
  end
10
10
 
11
11
  def add_argument(value)
12
- options&.add_argument(value)
12
+ capabilities&.add_argument(value)
13
13
  end
14
14
 
15
15
  def add_preference(key, value)
16
- options&.add_preference(key, value)
16
+ capabilities&.add_preference(key, value)
17
17
  end
18
18
 
19
19
  def apply_arguments
20
20
  arguments.each { |argument| add_argument(argument) }
21
21
 
22
- add_argument('--headless') if chrome_headless?
22
+ if chrome_headless?
23
+ add_argument('--headless')
24
+ add_argument('--no-sandbox')
25
+ add_argument('--disable-gpu')
26
+ end
27
+ end
28
+
29
+ def apply_bin_path(path)
30
+ if firefox?
31
+ ::Selenium::WebDriver::Firefox.path = path
32
+
33
+ ::Selenium::WebDriver::Firefox.path
34
+ end
23
35
  end
24
36
 
25
37
  def apply_preferences
@@ -39,7 +51,9 @@ module CapybaraBox
39
51
  return [] unless chrome_family?
40
52
 
41
53
  %w[
54
+ --disable-background-networking
42
55
  --disable-default-apps
56
+ --disable-dev-shm-usage
43
57
  --disable-extensions
44
58
  --disable-infobars
45
59
  --disable-notifications
@@ -49,11 +63,17 @@ module CapybaraBox
49
63
  --disable-popup-blocking
50
64
  --disable-save-password-bubble
51
65
  --disable-site-isolation-trials
66
+ --disable-sync
52
67
  --disable-translate
68
+ --hide-scrollbars
53
69
  --incognito
70
+ --metrics-recording-only
54
71
  --mute-audio
55
72
  --no-default-browser-check
73
+ --no-first-run
74
+ --safebrowsing-disable-auto-update
56
75
  --start-fullscreen
76
+ --window-size=1920,1080
57
77
  ]
58
78
  end
59
79
 
@@ -74,20 +94,16 @@ module CapybaraBox
74
94
  Capybara.default_max_wait_time = @max_wait_time if @max_wait_time
75
95
  end
76
96
 
77
- def apply_bin_path(path)
78
- if firefox?
79
- ::Selenium::WebDriver::Firefox::Binary.path = path
80
-
81
- ::Selenium::WebDriver::Firefox::Binary.path
82
- end
97
+ def capabilities
98
+ @capabilities ||= ::Selenium::WebDriver::Chrome::Options.new if chrome_family?
83
99
  end
84
100
 
85
101
  def create
86
102
  apply_arguments
87
103
  apply_preferences
88
104
 
89
- apply_bin_path(@parameters[:bin_path]) if @parameters[:bin_path]
90
- apply_version(@parameters[:version]) if !!@parameters[:version]
105
+ apply_bin_path(@parameters[:bin_path]) if ::CapybaraBox::Helper.present?(@parameters[:bin_path])
106
+ apply_version(@parameters[:version]) if ::CapybaraBox::Helper.present?(@parameters[:version])
91
107
 
92
108
  ::CapybaraBox::Screenshot.configure(@parameters[:screenshot], @browser) if @parameters[:screenshot]
93
109
 
@@ -97,8 +113,8 @@ module CapybaraBox
97
113
  end
98
114
 
99
115
  def driver(app)
100
- opts = {}
101
- opts[:options] = options if chrome_family?
116
+ opts = {}
117
+ opts[:capabilities] = capabilities if chrome_family?
102
118
 
103
119
  Capybara::Selenium::Driver.load_selenium
104
120
 
@@ -142,10 +158,6 @@ module CapybaraBox
142
158
  @http_client ||= ::Selenium::WebDriver::Remote::Http::Default.new(**http_client_options)
143
159
  end
144
160
 
145
- def options
146
- @options ||= ::Selenium::WebDriver::Chrome::Options.new if chrome_family?
147
- end
148
-
149
161
  def preferences
150
162
  return @parameters[:preferences] if @parameters[:preferences]
151
163
  return {} unless chrome_family?
@@ -163,7 +175,7 @@ module CapybaraBox
163
175
  Capybara.register_driver(name.to_sym) { |app| driver(app) }
164
176
  end
165
177
 
166
- def self.configure(parameters)
178
+ def self.configure(parameters = {})
167
179
  new(parameters).tap(&:create)
168
180
  end
169
181
 
@@ -4,6 +4,14 @@ module CapybaraBox
4
4
  module Helper
5
5
  module_function
6
6
 
7
+ def blank?(value)
8
+ [''].include?(value.to_s.strip)
9
+ end
10
+
11
+ def present?(value)
12
+ !blank?(value)
13
+ end
14
+
7
15
  def true?(value)
8
16
  ['true', true].include?(value)
9
17
  end
@@ -17,11 +17,11 @@ module CapybaraBox
17
17
  example.full_description.downcase.gsub('#', '--').tr ' ', '-'
18
18
  end
19
19
 
20
- if options[:s3]
20
+ if ::CapybaraBox::Helper.true?(options[:s3])
21
21
  bucket_name = ENV['CAPYBARA_BOX__S3_BUCKET_NAME']
22
22
  region = ENV['CAPYBARA_BOX__S3_REGION']
23
23
 
24
- Capybara::Screenshot.s3_configuration = {
24
+ s3_configuration = {
25
25
  bucket_name: bucket_name,
26
26
  bucket_host: "#{bucket_name}.#{region}.amazonaws.com",
27
27
 
@@ -31,8 +31,12 @@ module CapybaraBox
31
31
  secret_access_key: ENV['CAPYBARA_BOX__S3_SECRET_ACCESS_KEY']
32
32
  },
33
33
  }
34
+ else
35
+ s3_configuration = {}
34
36
  end
35
37
 
38
+ Capybara::Screenshot.s3_configuration = s3_configuration
39
+
36
40
  Capybara::Screenshot.register_driver(browser_name) do |driver, path|
37
41
  driver.browser.save_screenshot(path)
38
42
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CapybaraBox
4
- VERSION = '1.0.1'
4
+ VERSION = '1.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-box
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Washington Botelho
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-21 00:00:00.000000000 Z
11
+ date: 2021-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara-screenshot
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: codecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: pry-byebug
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -157,7 +171,7 @@ homepage: https://github.com/wbotelhos/capybara-box
157
171
  licenses:
158
172
  - MIT
159
173
  metadata: {}
160
- post_install_message:
174
+ post_install_message:
161
175
  rdoc_options: []
162
176
  require_paths:
163
177
  - lib
@@ -172,8 +186,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
186
  - !ruby/object:Gem::Version
173
187
  version: '0'
174
188
  requirements: []
175
- rubygems_version: 3.1.2
176
- signing_key:
189
+ rubygems_version: 3.2.22
190
+ signing_key:
177
191
  specification_version: 4
178
192
  summary: A Tool Box for Capybara.
179
193
  test_files: []