capybara-box 0.4.0 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -2
- data/README.md +30 -42
- data/lib/capybara-box.rb +6 -2
- data/lib/capybara-box/base.rb +55 -98
- data/lib/capybara-box/helper.rb +19 -0
- data/lib/capybara-box/screenshot.rb +45 -0
- data/lib/capybara-box/version.rb +1 -1
- metadata +11 -58
- data/spec/lib/capybara_box/base/add_argument_spec.rb +0 -35
- data/spec/lib/capybara_box/base/add_preference_spec.rb +0 -35
- data/spec/lib/capybara_box/base/apply_arguments_spec.rb +0 -33
- data/spec/lib/capybara_box/base/apply_bin_path_spec.rb +0 -34
- data/spec/lib/capybara_box/base/apply_preferences_spec.rb +0 -43
- data/spec/lib/capybara_box/base/apply_version_spec.rb +0 -37
- data/spec/lib/capybara_box/base/arguments_spec.rb +0 -72
- data/spec/lib/capybara_box/base/chrome_family_spec.rb +0 -23
- data/spec/lib/capybara_box/base/chrome_headless_spec.rb +0 -17
- data/spec/lib/capybara_box/base/chrome_spec.rb +0 -17
- data/spec/lib/capybara_box/base/configure_screenshot_spec.rb +0 -83
- data/spec/lib/capybara_box/base/configure_spec.rb +0 -33
- data/spec/lib/capybara_box/base/create_spec.rb +0 -89
- data/spec/lib/capybara_box/base/driver_options_spec.rb +0 -74
- data/spec/lib/capybara_box/base/driver_spec.rb +0 -97
- data/spec/lib/capybara_box/base/firefox_spec.rb +0 -17
- data/spec/lib/capybara_box/base/http_client_options_spec.rb +0 -24
- data/spec/lib/capybara_box/base/http_client_spec.rb +0 -11
- data/spec/lib/capybara_box/base/log_spec.rb +0 -43
- data/spec/lib/capybara_box/base/options_spec.rb +0 -43
- data/spec/lib/capybara_box/base/preferences_spec.rb +0 -63
- data/spec/lib/capybara_box/base/register_spec.rb +0 -17
- data/spec/lib/capybara_box/base/self_configure_spec.rb +0 -22
- data/spec/lib/capybara_box/base/version_spec.rb +0 -33
- data/spec/rails_helper.rb +0 -9
- data/spec/support/common.rb +0 -11
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CapybaraBox
|
4
|
+
module Helper
|
5
|
+
module_function
|
6
|
+
|
7
|
+
def blank?(value)
|
8
|
+
[''].include?(value.to_s.strip)
|
9
|
+
end
|
10
|
+
|
11
|
+
def present?(value)
|
12
|
+
!blank?(value)
|
13
|
+
end
|
14
|
+
|
15
|
+
def true?(value)
|
16
|
+
['true', true].include?(value)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CapybaraBox
|
4
|
+
module Screenshot
|
5
|
+
module_function
|
6
|
+
|
7
|
+
def configure(options, browser_name)
|
8
|
+
return unless ::CapybaraBox::Helper.true?(options[:enabled])
|
9
|
+
|
10
|
+
require 'capybara-screenshot/rspec'
|
11
|
+
|
12
|
+
Capybara::Screenshot.append_timestamp = false
|
13
|
+
Capybara::Screenshot.prune_strategy = :keep_last_run
|
14
|
+
Capybara::Screenshot::RSpec.add_link_to_screenshot_for_failed_examples = false
|
15
|
+
|
16
|
+
Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example|
|
17
|
+
example.full_description.downcase.gsub('#', '--').tr ' ', '-'
|
18
|
+
end
|
19
|
+
|
20
|
+
if ::CapybaraBox::Helper.true?(options[:s3])
|
21
|
+
bucket_name = ENV['CAPYBARA_BOX__S3_BUCKET_NAME']
|
22
|
+
region = ENV['CAPYBARA_BOX__S3_REGION']
|
23
|
+
|
24
|
+
s3_configuration = {
|
25
|
+
bucket_name: bucket_name,
|
26
|
+
bucket_host: "#{bucket_name}.#{region}.amazonaws.com",
|
27
|
+
|
28
|
+
s3_client_credentials: {
|
29
|
+
access_key_id: ENV['CAPYBARA_BOX__S3_ACCESS_KEY_ID'],
|
30
|
+
region: region,
|
31
|
+
secret_access_key: ENV['CAPYBARA_BOX__S3_SECRET_ACCESS_KEY']
|
32
|
+
},
|
33
|
+
}
|
34
|
+
else
|
35
|
+
s3_configuration = {}
|
36
|
+
end
|
37
|
+
|
38
|
+
Capybara::Screenshot.s3_configuration = s3_configuration
|
39
|
+
|
40
|
+
Capybara::Screenshot.register_driver(browser_name) do |driver, path|
|
41
|
+
driver.browser.save_screenshot(path)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/capybara-box/version.rb
CHANGED
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:
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Washington Botelho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara-screenshot
|
@@ -53,13 +53,13 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: webdrivers
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
-
type: :
|
62
|
+
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
@@ -140,40 +140,19 @@ description: A Tool Box for Capybara.
|
|
140
140
|
email: wbotelhos@gmail.com
|
141
141
|
executables: []
|
142
142
|
extensions: []
|
143
|
-
extra_rdoc_files:
|
143
|
+
extra_rdoc_files:
|
144
|
+
- CHANGELOG.md
|
145
|
+
- LICENSE
|
146
|
+
- README.md
|
144
147
|
files:
|
145
148
|
- CHANGELOG.md
|
146
149
|
- LICENSE
|
147
150
|
- README.md
|
148
151
|
- lib/capybara-box.rb
|
149
152
|
- lib/capybara-box/base.rb
|
153
|
+
- lib/capybara-box/helper.rb
|
154
|
+
- lib/capybara-box/screenshot.rb
|
150
155
|
- lib/capybara-box/version.rb
|
151
|
-
- spec/lib/capybara_box/base/add_argument_spec.rb
|
152
|
-
- spec/lib/capybara_box/base/add_preference_spec.rb
|
153
|
-
- spec/lib/capybara_box/base/apply_arguments_spec.rb
|
154
|
-
- spec/lib/capybara_box/base/apply_bin_path_spec.rb
|
155
|
-
- spec/lib/capybara_box/base/apply_preferences_spec.rb
|
156
|
-
- spec/lib/capybara_box/base/apply_version_spec.rb
|
157
|
-
- spec/lib/capybara_box/base/arguments_spec.rb
|
158
|
-
- spec/lib/capybara_box/base/chrome_family_spec.rb
|
159
|
-
- spec/lib/capybara_box/base/chrome_headless_spec.rb
|
160
|
-
- spec/lib/capybara_box/base/chrome_spec.rb
|
161
|
-
- spec/lib/capybara_box/base/configure_screenshot_spec.rb
|
162
|
-
- spec/lib/capybara_box/base/configure_spec.rb
|
163
|
-
- spec/lib/capybara_box/base/create_spec.rb
|
164
|
-
- spec/lib/capybara_box/base/driver_options_spec.rb
|
165
|
-
- spec/lib/capybara_box/base/driver_spec.rb
|
166
|
-
- spec/lib/capybara_box/base/firefox_spec.rb
|
167
|
-
- spec/lib/capybara_box/base/http_client_options_spec.rb
|
168
|
-
- spec/lib/capybara_box/base/http_client_spec.rb
|
169
|
-
- spec/lib/capybara_box/base/log_spec.rb
|
170
|
-
- spec/lib/capybara_box/base/options_spec.rb
|
171
|
-
- spec/lib/capybara_box/base/preferences_spec.rb
|
172
|
-
- spec/lib/capybara_box/base/register_spec.rb
|
173
|
-
- spec/lib/capybara_box/base/self_configure_spec.rb
|
174
|
-
- spec/lib/capybara_box/base/version_spec.rb
|
175
|
-
- spec/rails_helper.rb
|
176
|
-
- spec/support/common.rb
|
177
156
|
homepage: https://github.com/wbotelhos/capybara-box
|
178
157
|
licenses:
|
179
158
|
- MIT
|
@@ -197,30 +176,4 @@ rubygems_version: 3.1.2
|
|
197
176
|
signing_key:
|
198
177
|
specification_version: 4
|
199
178
|
summary: A Tool Box for Capybara.
|
200
|
-
test_files:
|
201
|
-
- spec/support/common.rb
|
202
|
-
- spec/lib/capybara_box/base/http_client_spec.rb
|
203
|
-
- spec/lib/capybara_box/base/apply_preferences_spec.rb
|
204
|
-
- spec/lib/capybara_box/base/firefox_spec.rb
|
205
|
-
- spec/lib/capybara_box/base/apply_arguments_spec.rb
|
206
|
-
- spec/lib/capybara_box/base/driver_spec.rb
|
207
|
-
- spec/lib/capybara_box/base/self_configure_spec.rb
|
208
|
-
- spec/lib/capybara_box/base/add_argument_spec.rb
|
209
|
-
- spec/lib/capybara_box/base/apply_bin_path_spec.rb
|
210
|
-
- spec/lib/capybara_box/base/version_spec.rb
|
211
|
-
- spec/lib/capybara_box/base/options_spec.rb
|
212
|
-
- spec/lib/capybara_box/base/register_spec.rb
|
213
|
-
- spec/lib/capybara_box/base/log_spec.rb
|
214
|
-
- spec/lib/capybara_box/base/add_preference_spec.rb
|
215
|
-
- spec/lib/capybara_box/base/create_spec.rb
|
216
|
-
- spec/lib/capybara_box/base/chrome_headless_spec.rb
|
217
|
-
- spec/lib/capybara_box/base/chrome_family_spec.rb
|
218
|
-
- spec/lib/capybara_box/base/apply_version_spec.rb
|
219
|
-
- spec/lib/capybara_box/base/chrome_spec.rb
|
220
|
-
- spec/lib/capybara_box/base/arguments_spec.rb
|
221
|
-
- spec/lib/capybara_box/base/http_client_options_spec.rb
|
222
|
-
- spec/lib/capybara_box/base/driver_options_spec.rb
|
223
|
-
- spec/lib/capybara_box/base/configure_screenshot_spec.rb
|
224
|
-
- spec/lib/capybara_box/base/preferences_spec.rb
|
225
|
-
- spec/lib/capybara_box/base/configure_spec.rb
|
226
|
-
- spec/rails_helper.rb
|
179
|
+
test_files: []
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe CapybaraBox::Base, '.add_argument' do
|
4
|
-
subject { described_class.new parameters }
|
5
|
-
|
6
|
-
context 'when is chrome' do
|
7
|
-
let!(:parameters) { { browser: :chrome } }
|
8
|
-
|
9
|
-
it 'adds the argument' do
|
10
|
-
subject.add_argument '--argument'
|
11
|
-
|
12
|
-
expect(subject.options.args).to eq Set['--argument']
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'when is chrome headless' do
|
17
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
18
|
-
|
19
|
-
it 'adds the argument' do
|
20
|
-
subject.add_argument '--argument'
|
21
|
-
|
22
|
-
expect(subject.options.args).to eq Set['--argument']
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when is firefox' do
|
27
|
-
let!(:parameters) { { browser: :firefox } }
|
28
|
-
|
29
|
-
it 'does not applies options' do
|
30
|
-
subject.add_argument '--argument'
|
31
|
-
|
32
|
-
expect(subject.options).to be_nil
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe CapybaraBox::Base, '.add_preference' do
|
4
|
-
subject { described_class.new parameters }
|
5
|
-
|
6
|
-
context 'when is chrome' do
|
7
|
-
let!(:parameters) { { browser: :chrome } }
|
8
|
-
|
9
|
-
it 'adds the argument' do
|
10
|
-
subject.add_preference :key, :value
|
11
|
-
|
12
|
-
expect(subject.options.prefs).to eq(key: :value)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'when is chrome headless' do
|
17
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
18
|
-
|
19
|
-
it 'adds the argument' do
|
20
|
-
subject.add_preference :key, :value
|
21
|
-
|
22
|
-
expect(subject.options.prefs).to eq(key: :value)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when is firefox' do
|
27
|
-
let!(:parameters) { { browser: :firefox } }
|
28
|
-
|
29
|
-
it 'does not applies options' do
|
30
|
-
subject.add_preference :key, :value
|
31
|
-
|
32
|
-
expect(subject.options).to be_nil
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe CapybaraBox::Base, '.apply_arguments' do
|
4
|
-
subject { described_class.new parameters }
|
5
|
-
|
6
|
-
before do
|
7
|
-
allow(subject).to receive(:arguments) { Set['--argument'] }
|
8
|
-
end
|
9
|
-
|
10
|
-
context 'when is not chrome' do
|
11
|
-
let!(:parameters) { { browser: :chrome } }
|
12
|
-
|
13
|
-
it 'applies' do
|
14
|
-
expect(subject.options.args).to eq Set.new
|
15
|
-
|
16
|
-
subject.apply_arguments
|
17
|
-
|
18
|
-
expect(subject.options.args).to eq Set['--argument']
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'when is chrome headless' do
|
23
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
24
|
-
|
25
|
-
it 'applies' do
|
26
|
-
expect(subject.options.args).to eq Set.new
|
27
|
-
|
28
|
-
subject.apply_arguments
|
29
|
-
|
30
|
-
expect(subject.options.args).to eq Set['--argument', '--headless']
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe CapybaraBox::Base, '.apply_bin_path' do
|
4
|
-
subject { described_class.new parameters }
|
5
|
-
|
6
|
-
before :all do
|
7
|
-
File.open('/tmp/bin', 'w') { |file| file.write 'echo "capybara-box/bin"' }
|
8
|
-
FileUtils.chmod 0755, '/tmp/bin'
|
9
|
-
end
|
10
|
-
|
11
|
-
context 'when is chrome' do
|
12
|
-
let!(:parameters) { { browser: :chrome } }
|
13
|
-
|
14
|
-
it 'does not apply' do
|
15
|
-
expect(subject.apply_bin_path('/tmp/bin')).to be_nil
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context 'when is chrome headless' do
|
20
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
21
|
-
|
22
|
-
it 'does not apply' do
|
23
|
-
expect(subject.apply_bin_path('/tmp/bin')).to be_nil
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context 'when is firefox' do
|
28
|
-
let!(:parameters) { { browser: :firefox } }
|
29
|
-
|
30
|
-
it 'does not applies options' do
|
31
|
-
expect(subject.apply_bin_path('/tmp/bin')).to eq '/tmp/bin'
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe CapybaraBox::Base, '.apply_preferences' do
|
4
|
-
subject { described_class.new parameters }
|
5
|
-
|
6
|
-
before do
|
7
|
-
allow(subject).to receive(:preferences) { { key: :value } }
|
8
|
-
end
|
9
|
-
|
10
|
-
context 'when is chrome' do
|
11
|
-
let!(:parameters) { { browser: :chrome } }
|
12
|
-
|
13
|
-
it 'applies' do
|
14
|
-
expect(subject.options.prefs).to eq({})
|
15
|
-
|
16
|
-
subject.apply_preferences
|
17
|
-
|
18
|
-
expect(subject.options.prefs).to eq(key: :value)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'when is chrome headless' do
|
23
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
24
|
-
|
25
|
-
it 'applies' do
|
26
|
-
expect(subject.options.prefs).to eq({})
|
27
|
-
|
28
|
-
subject.apply_preferences
|
29
|
-
|
30
|
-
expect(subject.options.prefs).to eq(key: :value)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context 'when is firefox' do
|
35
|
-
let!(:parameters) { { browser: :firefox } }
|
36
|
-
|
37
|
-
it 'does not applies options' do
|
38
|
-
subject.apply_preferences
|
39
|
-
|
40
|
-
expect(subject.options).to be_nil
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
require 'chromedriver/helper'
|
4
|
-
|
5
|
-
RSpec.describe CapybaraBox::Base, '.apply_version' do
|
6
|
-
subject { described_class.new parameters }
|
7
|
-
|
8
|
-
context 'when browser is chrome' do
|
9
|
-
let!(:parameters) { { browser: :chrome } }
|
10
|
-
|
11
|
-
it 'is used' do
|
12
|
-
subject.apply_version '2.31'
|
13
|
-
|
14
|
-
expect(subject.version).to eq '2.31'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'when browser is chrome headless' do
|
19
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
20
|
-
|
21
|
-
it 'is used' do
|
22
|
-
subject.apply_version '2.31'
|
23
|
-
|
24
|
-
expect(subject.version).to eq '2.31'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'when browser is firefox' do
|
29
|
-
let!(:parameters) { { browser: :firefox } }
|
30
|
-
|
31
|
-
it 'does not applies options' do
|
32
|
-
subject.apply_preferences
|
33
|
-
|
34
|
-
expect(subject.options).to be_nil
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe CapybaraBox::Base, '.arguments' do
|
4
|
-
subject { described_class.new parameters }
|
5
|
-
|
6
|
-
let!(:chrome_family_arguments) do
|
7
|
-
%w[
|
8
|
-
--disable-default-apps
|
9
|
-
--disable-extensions
|
10
|
-
--disable-infobars
|
11
|
-
--disable-notifications
|
12
|
-
--disable-password-generation
|
13
|
-
--disable-password-manager-reauthentication
|
14
|
-
--disable-password-separated-signin-flow
|
15
|
-
--disable-popup-blocking
|
16
|
-
--disable-save-password-bubble
|
17
|
-
--disable-translate
|
18
|
-
--incognito
|
19
|
-
--mute-audio
|
20
|
-
--no-default-browser-check
|
21
|
-
--start-fullscreen
|
22
|
-
]
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'when is chrome' do
|
26
|
-
let!(:parameters) { { browser: :chrome } }
|
27
|
-
|
28
|
-
it 'receives the right arguments' do
|
29
|
-
expect(subject.arguments).to eq chrome_family_arguments
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when arguments is given' do
|
33
|
-
let!(:parameters) { { arguments: ['--custom'], browser: :firefox } }
|
34
|
-
|
35
|
-
it 'is used' do
|
36
|
-
expect(subject.arguments).to eq ['--custom']
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'when is chrome headless' do
|
42
|
-
let!(:parameters) { { browser: :chrome_headless } }
|
43
|
-
|
44
|
-
it 'receives the right arguments' do
|
45
|
-
expect(subject.arguments).to eq chrome_family_arguments
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'when arguments is given' do
|
49
|
-
let!(:parameters) { { arguments: ['--custom'], browser: :chrome_headless } }
|
50
|
-
|
51
|
-
it 'is used' do
|
52
|
-
expect(subject.arguments).to eq ['--custom']
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context 'when is firefox' do
|
58
|
-
let!(:parameters) { { browser: :firefox } }
|
59
|
-
|
60
|
-
it 'receives the right arguments' do
|
61
|
-
expect(subject.arguments).to eq []
|
62
|
-
end
|
63
|
-
|
64
|
-
context 'when arguments is given' do
|
65
|
-
let!(:parameters) { { arguments: ['--custom'], browser: :firefox } }
|
66
|
-
|
67
|
-
it 'is used' do
|
68
|
-
expect(subject.arguments).to eq ['--custom']
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|