capybara-box 0.4.0 → 1.0.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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -2
  3. data/README.md +32 -42
  4. data/lib/capybara-box.rb +6 -2
  5. data/lib/capybara-box/base.rb +43 -98
  6. data/lib/capybara-box/helper.rb +11 -0
  7. data/lib/capybara-box/screenshot.rb +41 -0
  8. data/lib/capybara-box/version.rb +1 -1
  9. metadata +11 -58
  10. data/spec/lib/capybara_box/base/add_argument_spec.rb +0 -35
  11. data/spec/lib/capybara_box/base/add_preference_spec.rb +0 -35
  12. data/spec/lib/capybara_box/base/apply_arguments_spec.rb +0 -33
  13. data/spec/lib/capybara_box/base/apply_bin_path_spec.rb +0 -34
  14. data/spec/lib/capybara_box/base/apply_preferences_spec.rb +0 -43
  15. data/spec/lib/capybara_box/base/apply_version_spec.rb +0 -37
  16. data/spec/lib/capybara_box/base/arguments_spec.rb +0 -72
  17. data/spec/lib/capybara_box/base/chrome_family_spec.rb +0 -23
  18. data/spec/lib/capybara_box/base/chrome_headless_spec.rb +0 -17
  19. data/spec/lib/capybara_box/base/chrome_spec.rb +0 -17
  20. data/spec/lib/capybara_box/base/configure_screenshot_spec.rb +0 -83
  21. data/spec/lib/capybara_box/base/configure_spec.rb +0 -33
  22. data/spec/lib/capybara_box/base/create_spec.rb +0 -89
  23. data/spec/lib/capybara_box/base/driver_options_spec.rb +0 -74
  24. data/spec/lib/capybara_box/base/driver_spec.rb +0 -97
  25. data/spec/lib/capybara_box/base/firefox_spec.rb +0 -17
  26. data/spec/lib/capybara_box/base/http_client_options_spec.rb +0 -24
  27. data/spec/lib/capybara_box/base/http_client_spec.rb +0 -11
  28. data/spec/lib/capybara_box/base/log_spec.rb +0 -43
  29. data/spec/lib/capybara_box/base/options_spec.rb +0 -43
  30. data/spec/lib/capybara_box/base/preferences_spec.rb +0 -63
  31. data/spec/lib/capybara_box/base/register_spec.rb +0 -17
  32. data/spec/lib/capybara_box/base/self_configure_spec.rb +0 -22
  33. data/spec/lib/capybara_box/base/version_spec.rb +0 -33
  34. data/spec/rails_helper.rb +0 -9
  35. data/spec/support/common.rb +0 -11
@@ -1,24 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '.http_client_options' do
4
- context 'when :http_client_options is not given' do
5
- subject { described_class.new }
6
-
7
- it 'returns the http client options' do
8
- expect(subject.http_client_options).to eq(
9
- open_timeout: nil,
10
- read_timeout: 120
11
- )
12
- end
13
- end
14
-
15
- context 'when :http_client_options is given' do
16
- subject { described_class.new parameters }
17
-
18
- let!(:parameters) { { http_client_options: { key: :value } } }
19
-
20
- it 'is used' do
21
- expect(subject.http_client_options).to eq(key: :value)
22
- end
23
- end
24
- end
@@ -1,11 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '.http_client' do
4
- before do
5
- allow(Selenium::WebDriver::Remote::Http::Default).to receive(:new).with(subject.http_client_options) { :client }
6
- end
7
-
8
- it 'returns the default http client' do
9
- expect(subject.http_client).to eq :client
10
- end
11
- end
@@ -1,43 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.shared_context 'log_disabled' do
4
- context 'when is chrome' do
5
- before { parameters[:browser] = :chrome }
6
-
7
- it 'does not includes log config' do
8
- expect(subject.driver_options[:driver_opts]).to be_nil
9
- end
10
- end
11
-
12
- context 'when is chrome headless' do
13
- before { parameters[:browser] = :chrome_headless }
14
-
15
- it 'does not includes log config' do
16
- expect(subject.driver_options[:driver_opts]).to be_nil
17
- end
18
- end
19
-
20
- context 'when is firefox' do
21
- before { parameters[:browser] = :firefox }
22
-
23
- it 'does not includes log config' do
24
- expect(subject.driver_options[:driver_opts]).to be_nil
25
- end
26
- end
27
- end
28
-
29
- RSpec.describe CapybaraBox::Base, '.log' do
30
- subject { described_class.new parameters }
31
-
32
- context 'when log is false' do
33
- let!(:parameters) { { log: false } }
34
-
35
- it_behaves_like 'log_disabled'
36
- end
37
-
38
- context 'when log is "false"' do
39
- let!(:parameters) { { log: 'false' } }
40
-
41
- it_behaves_like 'log_disabled'
42
- end
43
- end
@@ -1,43 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '.options' do
4
- subject { described_class.configure parameters }
5
-
6
- context 'when is chrome' do
7
- let!(:parameters) { { browser: :chrome } }
8
-
9
- let!(:options) do
10
- instance_double(Selenium::WebDriver::Chrome::Options).as_null_object
11
- end
12
-
13
- before do
14
- allow(Selenium::WebDriver::Chrome::Options).to receive(:new).with(no_args) { options }
15
- end
16
-
17
- it 'returns a instance of chrome options' do
18
- expect(subject.options).to eq options
19
- end
20
- end
21
-
22
- context 'when is chrome headless' do
23
- let!(:parameters) { { browser: :chrome_headless } }
24
-
25
- let!(:options) do
26
- instance_double(Selenium::WebDriver::Chrome::Options).as_null_object
27
- end
28
-
29
- before do
30
- allow(Selenium::WebDriver::Chrome::Options).to receive(:new).with(no_args) { options }
31
- end
32
-
33
- it 'returns a instance of chrome options' do
34
- expect(subject.options).to eq options
35
- end
36
- end
37
-
38
- context 'when is firefox' do
39
- let!(:parameters) { { browser: :firefox } }
40
-
41
- specify { expect(subject.options).to be_nil }
42
- end
43
- end
@@ -1,63 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '.preferences' do
4
- subject { described_class.new parameters }
5
-
6
- let!(:chrome_family_preferences) do
7
- {
8
- credentials_enable_service: false,
9
-
10
- profile: {
11
- password_manager_enabled: false
12
- }
13
- }
14
- end
15
-
16
- context 'when is chrome' do
17
- let!(:parameters) { { browser: :chrome } }
18
-
19
- it 'receives the right preferences' do
20
- expect(subject.preferences).to eq chrome_family_preferences
21
- end
22
-
23
- context 'and :preferences is given' do
24
- before { parameters[:preferences] = { key: :value } }
25
-
26
- it 'is used' do
27
- expect(subject.preferences).to eq(key: :value)
28
- end
29
- end
30
- end
31
-
32
- context 'when is chrome headless' do
33
- let!(:parameters) { { browser: :chrome_headless } }
34
-
35
- it 'receives the right preferences' do
36
- expect(subject.preferences).to eq chrome_family_preferences
37
- end
38
-
39
- context 'and :preferences is given' do
40
- before { parameters[:preferences] = { key: :value } }
41
-
42
- it 'is used' do
43
- expect(subject.preferences).to eq(key: :value)
44
- end
45
- end
46
- end
47
-
48
- context 'when is firefox' do
49
- let!(:parameters) { { browser: :firefox } }
50
-
51
- it 'receives the right preferences' do
52
- expect(subject.preferences).to eq({})
53
- end
54
-
55
- context 'and :preferences is given' do
56
- before { parameters[:preferences] = { key: :value } }
57
-
58
- it 'is used' do
59
- expect(subject.preferences).to eq(key: :value)
60
- end
61
- end
62
- end
63
- end
@@ -1,17 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '.register' do
4
- subject { described_class.new }
5
-
6
- let!(:app) { double }
7
-
8
- before do
9
- allow(Capybara).to receive(:register_driver).with(:name).and_yield app
10
- end
11
-
12
- it 'register the driver with given name' do
13
- expect(subject).to receive(:driver).with app
14
-
15
- subject.register :name
16
- end
17
- end
@@ -1,22 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '#configure' do
4
- let!(:parameters) { { key: :value } }
5
- let!(:box) { instance_double(CapybaraBox::Base).as_null_object }
6
-
7
- before do
8
- allow(described_class).to receive(:new).with(parameters) { box }
9
- end
10
-
11
- it 'creates the box with given parameters' do
12
- expect(box).to receive :create
13
-
14
- described_class.configure parameters
15
- end
16
-
17
- it 'returns the created box' do
18
- expect(described_class.configure(parameters)).to eq box
19
-
20
- described_class.configure parameters
21
- end
22
- end
@@ -1,33 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe CapybaraBox::Base, '.version' do
4
- subject { described_class.configure parameters }
5
-
6
- context 'when version is given' do
7
- let!(:parameters) { { version: '2.30' } }
8
-
9
- context 'and browser is chrome' do
10
- before { parameters[:browser] = :chrome }
11
-
12
- it 'applies the version' do
13
- expect(subject.version).to eq '2.30'
14
- end
15
- end
16
-
17
- context 'and browser is chrome headless' do
18
- before { parameters[:browser] = :chrome_headless }
19
-
20
- it 'applies the version' do
21
- expect(subject.version).to eq '2.30'
22
- end
23
- end
24
-
25
- context 'and browser is not chrome headless' do
26
- before { parameters[:browser] = :firefox }
27
-
28
- it 'does not apply the version' do
29
- expect(subject.version).to be_nil
30
- end
31
- end
32
- end
33
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ENV['RAILS_ENV'] ||= 'test'
4
-
5
- require 'capybara'
6
- require 'capybara-box'
7
- require 'pry-byebug'
8
-
9
- Dir[File.expand_path('support/**/*.rb', __dir__)].each { |file| require file }
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rspec'
4
-
5
- RSpec.configure do |config|
6
- config.filter_run_when_matching :focus
7
-
8
- config.disable_monkey_patching!
9
-
10
- config.order = :random
11
- end