capybara 3.16.1 → 3.33.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/History.md +321 -0
- data/README.md +51 -60
- data/lib/capybara.rb +71 -114
- data/lib/capybara/config.rb +8 -5
- data/lib/capybara/cucumber.rb +1 -1
- data/lib/capybara/driver/node.rb +15 -3
- data/lib/capybara/dsl.rb +10 -2
- data/lib/capybara/helpers.rb +5 -3
- data/lib/capybara/minitest.rb +242 -141
- data/lib/capybara/minitest/spec.rb +159 -90
- data/lib/capybara/node/actions.rb +85 -74
- data/lib/capybara/node/base.rb +4 -4
- data/lib/capybara/node/document.rb +2 -2
- data/lib/capybara/node/document_matchers.rb +3 -3
- data/lib/capybara/node/element.rb +216 -117
- data/lib/capybara/node/finders.rb +65 -65
- data/lib/capybara/node/matchers.rb +228 -126
- data/lib/capybara/node/simple.rb +9 -4
- data/lib/capybara/queries/ancestor_query.rb +5 -7
- data/lib/capybara/queries/base_query.rb +2 -1
- data/lib/capybara/queries/current_path_query.rb +1 -1
- data/lib/capybara/queries/selector_query.rb +296 -30
- data/lib/capybara/queries/sibling_query.rb +5 -4
- data/lib/capybara/queries/style_query.rb +2 -2
- data/lib/capybara/queries/text_query.rb +13 -1
- data/lib/capybara/queries/title_query.rb +1 -1
- data/lib/capybara/rack_test/browser.rb +7 -2
- data/lib/capybara/rack_test/driver.rb +1 -1
- data/lib/capybara/rack_test/form.rb +1 -1
- data/lib/capybara/rack_test/node.rb +43 -7
- data/lib/capybara/registration_container.rb +44 -0
- data/lib/capybara/registrations/drivers.rb +36 -0
- data/lib/capybara/registrations/patches/puma_ssl.rb +27 -0
- data/lib/capybara/registrations/servers.rb +44 -0
- data/lib/capybara/result.rb +36 -8
- data/lib/capybara/rspec/matcher_proxies.rb +6 -4
- data/lib/capybara/rspec/matchers.rb +100 -63
- data/lib/capybara/rspec/matchers/base.rb +23 -10
- data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
- data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
- data/lib/capybara/rspec/matchers/have_current_path.rb +2 -2
- data/lib/capybara/rspec/matchers/have_selector.rb +16 -8
- data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
- data/lib/capybara/rspec/matchers/have_text.rb +4 -4
- data/lib/capybara/rspec/matchers/have_title.rb +2 -2
- data/lib/capybara/rspec/matchers/match_selector.rb +3 -3
- data/lib/capybara/rspec/matchers/match_style.rb +2 -2
- data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
- data/lib/capybara/selector.rb +219 -588
- data/lib/capybara/selector/builders/css_builder.rb +10 -6
- data/lib/capybara/selector/builders/xpath_builder.rb +1 -1
- data/lib/capybara/selector/css.rb +4 -2
- data/lib/capybara/selector/definition.rb +277 -0
- data/lib/capybara/selector/definition/button.rb +52 -0
- data/lib/capybara/selector/definition/checkbox.rb +26 -0
- data/lib/capybara/selector/definition/css.rb +10 -0
- data/lib/capybara/selector/definition/datalist_input.rb +35 -0
- data/lib/capybara/selector/definition/datalist_option.rb +25 -0
- data/lib/capybara/selector/definition/element.rb +27 -0
- data/lib/capybara/selector/definition/field.rb +40 -0
- data/lib/capybara/selector/definition/fieldset.rb +14 -0
- data/lib/capybara/selector/definition/file_field.rb +13 -0
- data/lib/capybara/selector/definition/fillable_field.rb +33 -0
- data/lib/capybara/selector/definition/frame.rb +17 -0
- data/lib/capybara/selector/definition/id.rb +6 -0
- data/lib/capybara/selector/definition/label.rb +62 -0
- data/lib/capybara/selector/definition/link.rb +54 -0
- data/lib/capybara/selector/definition/link_or_button.rb +16 -0
- data/lib/capybara/selector/definition/option.rb +27 -0
- data/lib/capybara/selector/definition/radio_button.rb +27 -0
- data/lib/capybara/selector/definition/select.rb +81 -0
- data/lib/capybara/selector/definition/table.rb +109 -0
- data/lib/capybara/selector/definition/table_row.rb +21 -0
- data/lib/capybara/selector/definition/xpath.rb +5 -0
- data/lib/capybara/selector/filter_set.rb +13 -9
- data/lib/capybara/selector/filters/base.rb +11 -2
- data/lib/capybara/selector/filters/locator_filter.rb +13 -3
- data/lib/capybara/selector/regexp_disassembler.rb +9 -2
- data/lib/capybara/selector/selector.rb +43 -448
- data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
- data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
- data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
- data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
- data/lib/capybara/selenium/driver.rb +125 -56
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +73 -17
- data/lib/capybara/selenium/driver_specializations/edge_driver.rb +124 -0
- data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +41 -2
- data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +14 -1
- data/lib/capybara/selenium/driver_specializations/safari_driver.rb +14 -5
- data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
- data/lib/capybara/selenium/extensions/find.rb +67 -45
- data/lib/capybara/selenium/extensions/html5_drag.rb +152 -36
- data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
- data/lib/capybara/selenium/logger_suppressor.rb +34 -0
- data/lib/capybara/selenium/node.rb +227 -56
- data/lib/capybara/selenium/nodes/chrome_node.rb +93 -8
- data/lib/capybara/selenium/nodes/edge_node.rb +104 -0
- data/lib/capybara/selenium/nodes/firefox_node.rb +37 -59
- data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
- data/lib/capybara/selenium/nodes/safari_node.rb +27 -54
- data/lib/capybara/selenium/patches/action_pauser.rb +26 -0
- data/lib/capybara/selenium/patches/atoms.rb +18 -0
- data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
- data/lib/capybara/selenium/patches/logs.rb +45 -0
- data/lib/capybara/server.rb +19 -3
- data/lib/capybara/server/animation_disabler.rb +2 -2
- data/lib/capybara/server/checker.rb +6 -2
- data/lib/capybara/server/middleware.rb +23 -13
- data/lib/capybara/session.rb +124 -106
- data/lib/capybara/session/config.rb +12 -10
- data/lib/capybara/session/matchers.rb +6 -6
- data/lib/capybara/spec/public/offset.js +6 -0
- data/lib/capybara/spec/public/test.js +94 -5
- data/lib/capybara/spec/session/all_spec.rb +84 -6
- data/lib/capybara/spec/session/ancestor_spec.rb +5 -0
- data/lib/capybara/spec/session/assert_current_path_spec.rb +5 -2
- data/lib/capybara/spec/session/assert_text_spec.rb +9 -5
- data/lib/capybara/spec/session/attach_file_spec.rb +14 -6
- data/lib/capybara/spec/session/check_spec.rb +10 -4
- data/lib/capybara/spec/session/choose_spec.rb +8 -2
- data/lib/capybara/spec/session/click_button_spec.rb +44 -1
- data/lib/capybara/spec/session/click_link_spec.rb +11 -0
- data/lib/capybara/spec/session/evaluate_script_spec.rb +12 -0
- data/lib/capybara/spec/session/fill_in_spec.rb +37 -2
- data/lib/capybara/spec/session/find_spec.rb +60 -6
- data/lib/capybara/spec/session/first_spec.rb +1 -1
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +14 -1
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +12 -1
- data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
- data/lib/capybara/spec/session/has_button_spec.rb +16 -0
- data/lib/capybara/spec/session/has_css_spec.rb +35 -6
- data/lib/capybara/spec/session/has_current_path_spec.rb +6 -4
- data/lib/capybara/spec/session/has_field_spec.rb +34 -0
- data/lib/capybara/spec/session/has_select_spec.rb +32 -4
- data/lib/capybara/spec/session/has_selector_spec.rb +4 -4
- data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
- data/lib/capybara/spec/session/has_table_spec.rb +51 -5
- data/lib/capybara/spec/session/has_text_spec.rb +47 -0
- data/lib/capybara/spec/session/matches_style_spec.rb +2 -2
- data/lib/capybara/spec/session/node_spec.rb +574 -16
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +2 -2
- data/lib/capybara/spec/session/save_screenshot_spec.rb +4 -4
- data/lib/capybara/spec/session/scroll_spec.rb +1 -1
- data/lib/capybara/spec/session/select_spec.rb +5 -10
- data/lib/capybara/spec/session/selectors_spec.rb +24 -3
- data/lib/capybara/spec/session/uncheck_spec.rb +2 -2
- data/lib/capybara/spec/session/unselect_spec.rb +1 -1
- data/lib/capybara/spec/session/window/window_spec.rb +10 -9
- data/lib/capybara/spec/spec_helper.rb +7 -2
- data/lib/capybara/spec/test_app.rb +26 -21
- data/lib/capybara/spec/views/animated.erb +49 -0
- data/lib/capybara/spec/views/form.erb +25 -4
- data/lib/capybara/spec/views/frame_child.erb +2 -1
- data/lib/capybara/spec/views/frame_one.erb +1 -0
- data/lib/capybara/spec/views/obscured.erb +9 -9
- data/lib/capybara/spec/views/offset.erb +32 -0
- data/lib/capybara/spec/views/react.erb +45 -0
- data/lib/capybara/spec/views/spatial.erb +31 -0
- data/lib/capybara/spec/views/with_animation.erb +29 -1
- data/lib/capybara/spec/views/with_dragula.erb +24 -0
- data/lib/capybara/spec/views/with_html.erb +28 -2
- data/lib/capybara/spec/views/with_js.erb +2 -1
- data/lib/capybara/spec/views/with_jstree.erb +26 -0
- data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +10 -10
- data/spec/basic_node_spec.rb +6 -6
- data/spec/capybara_spec.rb +28 -28
- data/spec/dsl_spec.rb +16 -3
- data/spec/filter_set_spec.rb +5 -5
- data/spec/fixtures/selenium_driver_rspec_failure.rb +1 -1
- data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
- data/spec/minitest_spec.rb +12 -2
- data/spec/minitest_spec_spec.rb +56 -45
- data/spec/rack_test_spec.rb +25 -12
- data/spec/regexp_dissassembler_spec.rb +53 -39
- data/spec/result_spec.rb +50 -54
- data/spec/rspec/features_spec.rb +1 -0
- data/spec/rspec/shared_spec_matchers.rb +78 -62
- data/spec/rspec_spec.rb +5 -5
- data/spec/sauce_spec_chrome.rb +1 -0
- data/spec/selector_spec.rb +26 -16
- data/spec/selenium_spec_chrome.rb +84 -5
- data/spec/selenium_spec_chrome_remote.rb +23 -8
- data/spec/selenium_spec_edge.rb +23 -8
- data/spec/selenium_spec_firefox.rb +16 -21
- data/spec/selenium_spec_firefox_remote.rb +4 -13
- data/spec/selenium_spec_ie.rb +23 -15
- data/spec/selenium_spec_safari.rb +17 -17
- data/spec/server_spec.rb +87 -42
- data/spec/session_spec.rb +11 -4
- data/spec/shared_selenium_node.rb +83 -0
- data/spec/shared_selenium_session.rb +62 -72
- data/spec/spec_helper.rb +43 -5
- metadata +114 -16
data/spec/session_spec.rb
CHANGED
@@ -3,16 +3,16 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Capybara::Session do
|
6
|
-
|
6
|
+
describe '#new' do
|
7
7
|
it 'should raise an error if passed non-existent driver' do
|
8
8
|
expect do
|
9
|
-
|
9
|
+
described_class.new(:quox, TestApp).driver
|
10
10
|
end.to raise_error(Capybara::DriverNotFoundError)
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'verifies a passed app is a rack app' do
|
14
14
|
expect do
|
15
|
-
|
15
|
+
described_class.new(:unknown, random: 'hash')
|
16
16
|
end.to raise_error TypeError, 'The second parameter to Session::new should be a rack app if passed.'
|
17
17
|
end
|
18
18
|
end
|
@@ -75,10 +75,17 @@ RSpec.describe Capybara::Session do
|
|
75
75
|
|
76
76
|
context 'quit' do
|
77
77
|
it 'will reset the driver' do
|
78
|
-
session =
|
78
|
+
session = described_class.new(:rack_test, TestApp)
|
79
79
|
driver = session.driver
|
80
80
|
session.quit
|
81
81
|
expect(session.driver).not_to eql driver
|
82
82
|
end
|
83
|
+
|
84
|
+
it 'resets the document' do
|
85
|
+
session = described_class.new(:rack_test, TestApp)
|
86
|
+
document = session.document
|
87
|
+
session.quit
|
88
|
+
expect(session.document.base).not_to eql document.base
|
89
|
+
end
|
83
90
|
end
|
84
91
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'selenium-webdriver'
|
5
|
+
|
6
|
+
RSpec.shared_examples 'Capybara::Node' do |session, _mode|
|
7
|
+
let(:session) { session }
|
8
|
+
|
9
|
+
describe '#content_editable?' do
|
10
|
+
it 'returns true when the element is content editable' do
|
11
|
+
session.visit('/with_js')
|
12
|
+
expect(session.find(:css, '#existing_content_editable').base.content_editable?).to be true
|
13
|
+
expect(session.find(:css, '#existing_content_editable_child').base.content_editable?).to be true
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'returns false when the element is not content editable' do
|
17
|
+
session.visit('/with_js')
|
18
|
+
expect(session.find(:css, '#drag').base.content_editable?).to be false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#send_keys' do
|
23
|
+
it 'should process space' do
|
24
|
+
session.visit('/form')
|
25
|
+
session.find(:css, '#address1_city').send_keys('ocean', [:shift, :space, 'side'])
|
26
|
+
expect(session.find(:css, '#address1_city').value).to eq 'ocean SIDE'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#[]' do
|
31
|
+
it 'should work for spellcheck' do
|
32
|
+
session.visit('/with_html')
|
33
|
+
expect(session.find('//input[@spellcheck="TRUE"]')[:spellcheck]).to eq('true')
|
34
|
+
expect(session.find('//input[@spellcheck="FALSE"]')[:spellcheck]).to eq('false')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#set' do
|
39
|
+
it 'respects maxlength when using rapid set' do
|
40
|
+
session.visit('/form')
|
41
|
+
inp = session.find(:css, '#long_length')
|
42
|
+
value = (0...50).map { |i| ((i % 26) + 65).chr }.join
|
43
|
+
inp.set(value, rapid: true)
|
44
|
+
expect(inp.value).to eq value[0...35]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#visible?' do
|
49
|
+
let(:bridge) do
|
50
|
+
session.driver.browser.send(:bridge)
|
51
|
+
end
|
52
|
+
|
53
|
+
around do |example|
|
54
|
+
native_displayed = session.driver.options[:native_displayed]
|
55
|
+
example.run
|
56
|
+
session.driver.options[:native_displayed] = native_displayed
|
57
|
+
end
|
58
|
+
|
59
|
+
before do
|
60
|
+
allow(bridge).to receive(:execute_atom).and_call_original
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'will use native displayed if told to' do
|
64
|
+
pending "Chromedriver < 76.0.3809.25 doesn't support native displayed in W3C mode" if chrome_lt?(76, session) && (ENV['W3C'] != 'false')
|
65
|
+
|
66
|
+
session.driver.options[:native_displayed] = true
|
67
|
+
session.visit('/form')
|
68
|
+
session.find(:css, '#address1_city', visible: true)
|
69
|
+
|
70
|
+
expect(bridge).not_to have_received(:execute_atom)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "won't use native displayed if told not to" do
|
74
|
+
skip 'Non-W3C uses native' if chrome?(session) && (ENV['W3C'] == 'false')
|
75
|
+
|
76
|
+
session.driver.options[:native_displayed] = false
|
77
|
+
session.visit('/form')
|
78
|
+
session.find(:css, '#address1_city', visible: true)
|
79
|
+
|
80
|
+
expect(bridge).to have_received(:execute_atom).with(:isDisplayed, any_args)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -41,6 +41,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
41
41
|
|
42
42
|
it 'should have return code 1 when running selenium_driver_rspec_failure.rb' do
|
43
43
|
skip 'only setup for local non-headless' if headless_or_remote?
|
44
|
+
skip 'Not setup for edge' if edge?(session)
|
44
45
|
|
45
46
|
system(env, 'rspec spec/fixtures/selenium_driver_rspec_failure.rb', out: File::NULL, err: File::NULL)
|
46
47
|
expect($CHILD_STATUS.exitstatus).to eq(1)
|
@@ -48,6 +49,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
48
49
|
|
49
50
|
it 'should have return code 0 when running selenium_driver_rspec_success.rb' do
|
50
51
|
skip 'only setup for local non-headless' if headless_or_remote?
|
52
|
+
skip 'Not setup for edge' if edge?(session)
|
51
53
|
|
52
54
|
system(env, 'rspec spec/fixtures/selenium_driver_rspec_success.rb', out: File::NULL, err: File::NULL)
|
53
55
|
expect($CHILD_STATUS.exitstatus).to eq(0)
|
@@ -70,7 +72,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
70
72
|
end
|
71
73
|
end
|
72
74
|
|
73
|
-
|
75
|
+
describe '#fill_in_with empty string and no options' do
|
74
76
|
it 'should trigger change when clearing a field' do
|
75
77
|
pending "safaridriver doesn't trigger change for clear" if safari?(session)
|
76
78
|
session.visit('/with_js')
|
@@ -81,7 +83,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
81
83
|
end
|
82
84
|
end
|
83
85
|
|
84
|
-
|
86
|
+
describe '#fill_in with { :clear => :backspace } fill_option', requires: [:js] do
|
85
87
|
before do
|
86
88
|
# Firefox has an issue with change events if the main window doesn't think it's focused
|
87
89
|
session.execute_script('window.focus()')
|
@@ -148,7 +150,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
148
150
|
end
|
149
151
|
end
|
150
152
|
|
151
|
-
|
153
|
+
describe '#fill_in with { clear: :none } fill_options' do
|
152
154
|
it 'should append to content in a field' do
|
153
155
|
pending 'Safari overwrites by default - need to figure out a workaround' if safari?(session)
|
154
156
|
|
@@ -158,9 +160,18 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
158
160
|
fill_options: { clear: :none })
|
159
161
|
expect(session.find(:fillable_field, 'form_first_name').value).to eq('JohnHarry')
|
160
162
|
end
|
163
|
+
|
164
|
+
it 'works with rapid fill' do
|
165
|
+
pending 'Safari overwrites by default - need to figure out a workaround' if safari?(session)
|
166
|
+
|
167
|
+
long_string = (0...60).map { |i| ((i % 26) + 65).chr }.join
|
168
|
+
session.visit('/form')
|
169
|
+
session.fill_in('form_first_name', with: long_string, fill_options: { clear: :none })
|
170
|
+
expect(session.find(:fillable_field, 'form_first_name').value).to eq('John' + long_string)
|
171
|
+
end
|
161
172
|
end
|
162
173
|
|
163
|
-
|
174
|
+
describe '#fill_in with Date' do
|
164
175
|
before do
|
165
176
|
session.visit('/form')
|
166
177
|
session.find(:css, '#form_date').execute_script <<-JS
|
@@ -192,7 +203,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
192
203
|
end
|
193
204
|
end
|
194
205
|
|
195
|
-
|
206
|
+
describe '#fill_in with { clear: Array } fill_options' do
|
196
207
|
it 'should pass the array through to the element' do
|
197
208
|
# this is mainly for use with [[:control, 'a'], :backspace] - however since that is platform dependant I'm testing with something less useful
|
198
209
|
session.visit('/form')
|
@@ -297,71 +308,22 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
297
308
|
describe 'Element#click' do
|
298
309
|
it 'should handle fixed headers/footers' do
|
299
310
|
session.visit('/with_fixed_header_footer')
|
300
|
-
|
301
|
-
|
311
|
+
session.using_wait_time(2) do
|
312
|
+
session.find(:link, 'Go to root').click
|
313
|
+
end
|
302
314
|
expect(session).to have_current_path('/')
|
303
315
|
end
|
304
316
|
end
|
305
317
|
|
306
|
-
describe 'Element#drag_to' do
|
307
|
-
before do
|
308
|
-
skip "Firefox < 62 doesn't support a DataTransfer constuctor" if firefox_lt?(62.0, session)
|
309
|
-
skip "IE doesn't support a DataTransfer constuctor" if ie?(session)
|
310
|
-
skip "Safari doesn't support" if safari?(session)
|
311
|
-
end
|
312
|
-
|
313
|
-
it 'should HTML5 drag and drop an object' do
|
314
|
-
session.visit('/with_js')
|
315
|
-
element = session.find('//div[@id="drag_html5"]')
|
316
|
-
target = session.find('//div[@id="drop_html5"]')
|
317
|
-
element.drag_to(target)
|
318
|
-
expect(session).to have_xpath('//div[contains(., "HTML5 Dropped drag_html5")]')
|
319
|
-
end
|
320
|
-
|
321
|
-
it 'should set clientX/Y in dragover events' do
|
322
|
-
session.visit('/with_js')
|
323
|
-
element = session.find('//div[@id="drag_html5"]')
|
324
|
-
target = session.find('//div[@id="drop_html5"]')
|
325
|
-
element.drag_to(target)
|
326
|
-
session.all(:css, 'div.log').each { |el| puts el.text }
|
327
|
-
expect(session).to have_css('div.log', text: /DragOver with client position: [1-9]\d*,[1-9]\d*/, count: 2)
|
328
|
-
end
|
329
|
-
|
330
|
-
it 'should not HTML5 drag and drop on a non HTML5 drop element' do
|
331
|
-
session.visit('/with_js')
|
332
|
-
element = session.find('//div[@id="drag_html5"]')
|
333
|
-
target = session.find('//div[@id="drop_html5"]')
|
334
|
-
target.execute_script("$(this).removeClass('drop');")
|
335
|
-
element.drag_to(target)
|
336
|
-
sleep 1
|
337
|
-
expect(session).not_to have_xpath('//div[contains(., "HTML5 Dropped drag_html5")]')
|
338
|
-
end
|
339
|
-
|
340
|
-
it 'should HTML5 drag and drop when scrolling needed' do
|
341
|
-
session.visit('/with_js')
|
342
|
-
element = session.find('//div[@id="drag_html5_scroll"]')
|
343
|
-
target = session.find('//div[@id="drop_html5_scroll"]')
|
344
|
-
element.drag_to(target)
|
345
|
-
expect(session).to have_xpath('//div[contains(., "HTML5 Dropped drag_html5_scroll")]')
|
346
|
-
end
|
347
|
-
|
348
|
-
it 'should drag HTML5 default draggable elements' do
|
349
|
-
session.visit('/with_js')
|
350
|
-
link = session.find_link('drag_link_html5')
|
351
|
-
target = session.find(:id, 'drop_html5')
|
352
|
-
link.drag_to target
|
353
|
-
expect(session).to have_xpath('//div[contains(., "HTML5 Dropped")]')
|
354
|
-
end
|
355
|
-
end
|
356
|
-
|
357
318
|
describe 'Capybara#Node#attach_file' do
|
358
319
|
it 'can attach a directory' do
|
359
320
|
pending "Geckodriver doesn't support uploading a directory" if firefox?(session)
|
360
321
|
pending "Selenium remote doesn't support transferring a directory" if remote?(session)
|
361
322
|
pending "Headless Chrome doesn't support directory upload - https://bugs.chromium.org/p/chromedriver/issues/detail?id=2521&q=directory%20upload&colspec=ID%20Status%20Pri%20Owner%20Summary" if chrome?(session) && ENV['HEADLESS']
|
362
323
|
pending "IE doesn't support uploading a directory" if ie?(session)
|
363
|
-
pending 'Chrome/chromedriver 73 breaks this'
|
324
|
+
pending 'Chrome/chromedriver 73 breaks this' if chrome?(session) && chrome_gte?(73, session) && chrome_lt?(75, session)
|
364
325
|
pending "Safari doesn't support uploading a directory" if safari?(session)
|
326
|
+
# pending "Edge/msedgedriver doesn't support directory upload" if edge?(session) && edge_gte?(75, session)
|
365
327
|
|
366
328
|
session.visit('/form')
|
367
329
|
test_file_dir = File.expand_path('./fixtures', File.dirname(__FILE__))
|
@@ -369,6 +331,15 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
369
331
|
session.click_button('Upload Multiple')
|
370
332
|
expect(session.body).to include('5 | ') # number of files
|
371
333
|
end
|
334
|
+
|
335
|
+
it 'can attach a relative file' do
|
336
|
+
pending 'Geckdoriver on windows requires alternate file separator which path expansion replaces' if Gem.win_platform? && firefox?(session)
|
337
|
+
|
338
|
+
session.visit('/form')
|
339
|
+
session.attach_file('Single Document', 'spec/fixtures/capybara.csv')
|
340
|
+
session.click_button('Upload Single')
|
341
|
+
expect(session.body).to include('Content-type: text/csv')
|
342
|
+
end
|
372
343
|
end
|
373
344
|
|
374
345
|
context 'Windows' do
|
@@ -396,11 +367,17 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
396
367
|
expect(@animation_session).to have_no_link('transition me away', wait: 0.5)
|
397
368
|
end
|
398
369
|
|
399
|
-
it 'should disable CSS animations' do
|
370
|
+
it 'should disable CSS animations (set to 0s)' do
|
400
371
|
@animation_session.visit('with_animation')
|
401
372
|
@animation_session.click_link('animate me away')
|
402
373
|
expect(@animation_session).to have_no_link('animate me away', wait: 0.5)
|
403
374
|
end
|
375
|
+
|
376
|
+
it 'should disable CSS animations on pseudo elements (set to 0s)' do
|
377
|
+
@animation_session.visit('with_animation')
|
378
|
+
@animation_session.find_link('animate me away').right_click
|
379
|
+
expect(@animation_session).to have_content('Animation Ended', wait: 0.1)
|
380
|
+
end
|
404
381
|
end
|
405
382
|
|
406
383
|
context 'if we pass in css that matches elements' do
|
@@ -457,7 +434,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
457
434
|
it 'can find html5 svg elements' do
|
458
435
|
session.visit('with_html5_svg')
|
459
436
|
expect(session).to have_selector(:element, :svg)
|
460
|
-
expect(session).to have_selector(:element, :rect, visible:
|
437
|
+
expect(session).to have_selector(:element, :rect, visible: :visible)
|
461
438
|
expect(session).to have_selector(:element, :circle)
|
462
439
|
expect(session).to have_selector(:element, :linearGradient, visible: :all)
|
463
440
|
end
|
@@ -472,17 +449,30 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
472
449
|
describe 'with react' do
|
473
450
|
context 'controlled components' do
|
474
451
|
it 'can set and clear a text field' do
|
475
|
-
|
476
|
-
|
477
|
-
session.
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
452
|
+
skip "This test doesn't support older browsers" if ie?(session)
|
453
|
+
|
454
|
+
session.visit 'react'
|
455
|
+
|
456
|
+
session.fill_in('Name:', with: 'abc')
|
457
|
+
session.accept_prompt 'A name was submitted: abc' do
|
458
|
+
session.click_button('Submit')
|
459
|
+
end
|
460
|
+
|
461
|
+
session.fill_in('Name:', with: '')
|
462
|
+
session.accept_prompt(/A name was submitted: $/) do
|
463
|
+
session.click_button('Submit')
|
464
|
+
end
|
465
|
+
end
|
466
|
+
|
467
|
+
it 'works with rapid fill' do
|
468
|
+
skip "This test doesn't support older browsers" if ie?(session)
|
469
|
+
|
470
|
+
session.visit 'react'
|
471
|
+
long_string = (0...60).map { |i| ((i % 26) + 65).chr }.join
|
472
|
+
|
473
|
+
session.fill_in('Name:', with: long_string)
|
474
|
+
session.accept_prompt "A name was submitted: #{long_string}" do
|
475
|
+
session.click_button('Submit')
|
486
476
|
end
|
487
477
|
end
|
488
478
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rspec/expectations'
|
4
|
-
require '
|
5
|
-
require 'webdrivers' if ENV['CI']
|
4
|
+
require 'webdrivers' if ENV['CI'] || ENV['WEBDRIVERS']
|
6
5
|
require 'selenium_statistics'
|
6
|
+
if ENV['TRAVIS']
|
7
|
+
require 'coveralls'
|
8
|
+
Coveralls.wear! do
|
9
|
+
add_filter '/lib/capybara/driver/'
|
10
|
+
add_filter '/lib/capybara/registrations/'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
require 'capybara/spec/spec_helper'
|
7
14
|
|
8
15
|
module Capybara
|
9
16
|
module SpecHelper
|
10
17
|
def firefox?(session)
|
11
18
|
browser_name(session) == :firefox &&
|
12
|
-
|
19
|
+
((defined?(::Selenium::WebDriver::VERSION) && (::Selenium::WebDriver::VERSION.to_f >= 4)) ||
|
20
|
+
session.driver.browser.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities))
|
13
21
|
end
|
14
22
|
|
15
23
|
def firefox_lt?(version, session)
|
@@ -24,18 +32,35 @@ module Capybara
|
|
24
32
|
browser_name(session) == :chrome
|
25
33
|
end
|
26
34
|
|
35
|
+
def chrome_version(session)
|
36
|
+
(session.driver.browser.capabilities[:browser_version] ||
|
37
|
+
session.driver.browser.capabilities[:version]).to_f
|
38
|
+
end
|
39
|
+
|
27
40
|
def chrome_lt?(version, session)
|
28
|
-
chrome?(session) && (session
|
41
|
+
chrome?(session) && (chrome_version(session) < version)
|
29
42
|
end
|
30
43
|
|
31
44
|
def chrome_gte?(version, session)
|
32
|
-
chrome?(session) && (session
|
45
|
+
chrome?(session) && (chrome_version(session) >= version)
|
33
46
|
end
|
34
47
|
|
35
48
|
def edge?(session)
|
49
|
+
browser_name(session).to_s.start_with?('edge')
|
50
|
+
end
|
51
|
+
|
52
|
+
def legacy_edge?(session)
|
36
53
|
browser_name(session) == :edge
|
37
54
|
end
|
38
55
|
|
56
|
+
def edge_lt?(version, session)
|
57
|
+
edge?(session) && (chrome_version(session) < version)
|
58
|
+
end
|
59
|
+
|
60
|
+
def edge_gte?(version, session)
|
61
|
+
edge?(session) && (chrome_version(session) >= version)
|
62
|
+
end
|
63
|
+
|
39
64
|
def ie?(session)
|
40
65
|
%i[internet_explorer ie].include?(browser_name(session))
|
41
66
|
end
|
@@ -51,11 +76,24 @@ module Capybara
|
|
51
76
|
def remote?(session)
|
52
77
|
session.driver.browser.is_a? ::Selenium::WebDriver::Remote::Driver
|
53
78
|
end
|
79
|
+
|
80
|
+
def self.log_selenium_driver_version(mod)
|
81
|
+
mod = mod::Service if ::Selenium::WebDriver::Service.respond_to? :driver_path
|
82
|
+
path = mod.driver_path
|
83
|
+
path = path.call if path.respond_to? :call
|
84
|
+
$stdout.puts `#{path.gsub(' ', '\ ')} --version`
|
85
|
+
end
|
54
86
|
end
|
55
87
|
end
|
56
88
|
|
57
89
|
RSpec.configure do |config|
|
58
90
|
Capybara::SpecHelper.configure(config)
|
91
|
+
config.expect_with :rspec do |expectations|
|
92
|
+
expectations.syntax = :expect
|
93
|
+
end
|
94
|
+
config.mock_with :rspec do |mocks|
|
95
|
+
mocks.verify_partial_doubles = true
|
96
|
+
end
|
59
97
|
config.filter_run_including focus_: true unless ENV['CI']
|
60
98
|
config.run_all_when_everything_filtered = true
|
61
99
|
config.after(:suite) { SeleniumStatistics.print_results }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.33.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Walpole
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
12
|
- gem-public_cert.pem
|
13
|
-
date:
|
13
|
+
date: 2020-06-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|
@@ -88,14 +88,14 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '1.
|
91
|
+
version: '1.5'
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: '1.
|
98
|
+
version: '1.5'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: xpath
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,47 +125,47 @@ dependencies:
|
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
|
-
name:
|
128
|
+
name: coveralls
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
131
|
- - ">="
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
133
|
+
version: '0'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
138
|
- - ">="
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
140
|
+
version: '0'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
|
-
name:
|
142
|
+
name: cucumber
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
145
|
- - ">="
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
147
|
+
version: 2.3.0
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: 2.3.0
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
|
-
name:
|
156
|
+
name: erubi
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
159
|
- - ">="
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
161
|
+
version: '0'
|
162
162
|
type: :development
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
166
|
- - ">="
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
168
|
+
version: '0'
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: irb
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,7 +251,7 @@ dependencies:
|
|
251
251
|
- !ruby/object:Gem::Version
|
252
252
|
version: 3.5.0
|
253
253
|
- !ruby/object:Gem::Dependency
|
254
|
-
name:
|
254
|
+
name: rspec-instafail
|
255
255
|
requirement: !ruby/object:Gem::Requirement
|
256
256
|
requirements:
|
257
257
|
- - ">="
|
@@ -264,6 +264,20 @@ dependencies:
|
|
264
264
|
- - ">="
|
265
265
|
- !ruby/object:Gem::Version
|
266
266
|
version: '0'
|
267
|
+
- !ruby/object:Gem::Dependency
|
268
|
+
name: rubocop
|
269
|
+
requirement: !ruby/object:Gem::Requirement
|
270
|
+
requirements:
|
271
|
+
- - "~>"
|
272
|
+
- !ruby/object:Gem::Version
|
273
|
+
version: '0.72'
|
274
|
+
type: :development
|
275
|
+
prerelease: false
|
276
|
+
version_requirements: !ruby/object:Gem::Requirement
|
277
|
+
requirements:
|
278
|
+
- - "~>"
|
279
|
+
- !ruby/object:Gem::Version
|
280
|
+
version: '0.72'
|
267
281
|
- !ruby/object:Gem::Dependency
|
268
282
|
name: rubocop-performance
|
269
283
|
requirement: !ruby/object:Gem::Requirement
|
@@ -348,6 +362,34 @@ dependencies:
|
|
348
362
|
- - ">="
|
349
363
|
- !ruby/object:Gem::Version
|
350
364
|
version: 1.4.0
|
365
|
+
- !ruby/object:Gem::Dependency
|
366
|
+
name: uglifier
|
367
|
+
requirement: !ruby/object:Gem::Requirement
|
368
|
+
requirements:
|
369
|
+
- - ">="
|
370
|
+
- !ruby/object:Gem::Version
|
371
|
+
version: '0'
|
372
|
+
type: :development
|
373
|
+
prerelease: false
|
374
|
+
version_requirements: !ruby/object:Gem::Requirement
|
375
|
+
requirements:
|
376
|
+
- - ">="
|
377
|
+
- !ruby/object:Gem::Version
|
378
|
+
version: '0'
|
379
|
+
- !ruby/object:Gem::Dependency
|
380
|
+
name: webdrivers
|
381
|
+
requirement: !ruby/object:Gem::Requirement
|
382
|
+
requirements:
|
383
|
+
- - ">="
|
384
|
+
- !ruby/object:Gem::Version
|
385
|
+
version: 3.6.0
|
386
|
+
type: :development
|
387
|
+
prerelease: false
|
388
|
+
version_requirements: !ruby/object:Gem::Requirement
|
389
|
+
requirements:
|
390
|
+
- - ">="
|
391
|
+
- !ruby/object:Gem::Version
|
392
|
+
version: 3.6.0
|
351
393
|
- !ruby/object:Gem::Dependency
|
352
394
|
name: yard
|
353
395
|
requirement: !ruby/object:Gem::Requirement
|
@@ -371,6 +413,7 @@ executables: []
|
|
371
413
|
extensions: []
|
372
414
|
extra_rdoc_files: []
|
373
415
|
files:
|
416
|
+
- ".yardopts"
|
374
417
|
- History.md
|
375
418
|
- License.txt
|
376
419
|
- README.md
|
@@ -407,6 +450,10 @@ files:
|
|
407
450
|
- lib/capybara/rack_test/form.rb
|
408
451
|
- lib/capybara/rack_test/node.rb
|
409
452
|
- lib/capybara/rails.rb
|
453
|
+
- lib/capybara/registration_container.rb
|
454
|
+
- lib/capybara/registrations/drivers.rb
|
455
|
+
- lib/capybara/registrations/patches/puma_ssl.rb
|
456
|
+
- lib/capybara/registrations/servers.rb
|
410
457
|
- lib/capybara/result.rb
|
411
458
|
- lib/capybara/rspec.rb
|
412
459
|
- lib/capybara/rspec/features.rb
|
@@ -415,16 +462,42 @@ files:
|
|
415
462
|
- lib/capybara/rspec/matchers/base.rb
|
416
463
|
- lib/capybara/rspec/matchers/become_closed.rb
|
417
464
|
- lib/capybara/rspec/matchers/compound.rb
|
465
|
+
- lib/capybara/rspec/matchers/count_sugar.rb
|
466
|
+
- lib/capybara/rspec/matchers/have_ancestor.rb
|
418
467
|
- lib/capybara/rspec/matchers/have_current_path.rb
|
419
468
|
- lib/capybara/rspec/matchers/have_selector.rb
|
469
|
+
- lib/capybara/rspec/matchers/have_sibling.rb
|
420
470
|
- lib/capybara/rspec/matchers/have_text.rb
|
421
471
|
- lib/capybara/rspec/matchers/have_title.rb
|
422
472
|
- lib/capybara/rspec/matchers/match_selector.rb
|
423
473
|
- lib/capybara/rspec/matchers/match_style.rb
|
474
|
+
- lib/capybara/rspec/matchers/spatial_sugar.rb
|
424
475
|
- lib/capybara/selector.rb
|
425
476
|
- lib/capybara/selector/builders/css_builder.rb
|
426
477
|
- lib/capybara/selector/builders/xpath_builder.rb
|
427
478
|
- lib/capybara/selector/css.rb
|
479
|
+
- lib/capybara/selector/definition.rb
|
480
|
+
- lib/capybara/selector/definition/button.rb
|
481
|
+
- lib/capybara/selector/definition/checkbox.rb
|
482
|
+
- lib/capybara/selector/definition/css.rb
|
483
|
+
- lib/capybara/selector/definition/datalist_input.rb
|
484
|
+
- lib/capybara/selector/definition/datalist_option.rb
|
485
|
+
- lib/capybara/selector/definition/element.rb
|
486
|
+
- lib/capybara/selector/definition/field.rb
|
487
|
+
- lib/capybara/selector/definition/fieldset.rb
|
488
|
+
- lib/capybara/selector/definition/file_field.rb
|
489
|
+
- lib/capybara/selector/definition/fillable_field.rb
|
490
|
+
- lib/capybara/selector/definition/frame.rb
|
491
|
+
- lib/capybara/selector/definition/id.rb
|
492
|
+
- lib/capybara/selector/definition/label.rb
|
493
|
+
- lib/capybara/selector/definition/link.rb
|
494
|
+
- lib/capybara/selector/definition/link_or_button.rb
|
495
|
+
- lib/capybara/selector/definition/option.rb
|
496
|
+
- lib/capybara/selector/definition/radio_button.rb
|
497
|
+
- lib/capybara/selector/definition/select.rb
|
498
|
+
- lib/capybara/selector/definition/table.rb
|
499
|
+
- lib/capybara/selector/definition/table_row.rb
|
500
|
+
- lib/capybara/selector/definition/xpath.rb
|
428
501
|
- lib/capybara/selector/filter.rb
|
429
502
|
- lib/capybara/selector/filter_set.rb
|
430
503
|
- lib/capybara/selector/filters/base.rb
|
@@ -434,18 +507,32 @@ files:
|
|
434
507
|
- lib/capybara/selector/regexp_disassembler.rb
|
435
508
|
- lib/capybara/selector/selector.rb
|
436
509
|
- lib/capybara/selector/xpath_extensions.rb
|
510
|
+
- lib/capybara/selenium/atoms/getAttribute.min.js
|
511
|
+
- lib/capybara/selenium/atoms/isDisplayed.min.js
|
512
|
+
- lib/capybara/selenium/atoms/src/getAttribute.js
|
513
|
+
- lib/capybara/selenium/atoms/src/isDisplayed.js
|
437
514
|
- lib/capybara/selenium/driver.rb
|
438
515
|
- lib/capybara/selenium/driver_specializations/chrome_driver.rb
|
516
|
+
- lib/capybara/selenium/driver_specializations/edge_driver.rb
|
439
517
|
- lib/capybara/selenium/driver_specializations/firefox_driver.rb
|
440
518
|
- lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb
|
441
519
|
- lib/capybara/selenium/driver_specializations/safari_driver.rb
|
520
|
+
- lib/capybara/selenium/extensions/file_input_click_emulation.rb
|
442
521
|
- lib/capybara/selenium/extensions/find.rb
|
443
522
|
- lib/capybara/selenium/extensions/html5_drag.rb
|
523
|
+
- lib/capybara/selenium/extensions/modifier_keys_stack.rb
|
444
524
|
- lib/capybara/selenium/extensions/scroll.rb
|
525
|
+
- lib/capybara/selenium/logger_suppressor.rb
|
445
526
|
- lib/capybara/selenium/node.rb
|
446
527
|
- lib/capybara/selenium/nodes/chrome_node.rb
|
528
|
+
- lib/capybara/selenium/nodes/edge_node.rb
|
447
529
|
- lib/capybara/selenium/nodes/firefox_node.rb
|
530
|
+
- lib/capybara/selenium/nodes/ie_node.rb
|
448
531
|
- lib/capybara/selenium/nodes/safari_node.rb
|
532
|
+
- lib/capybara/selenium/patches/action_pauser.rb
|
533
|
+
- lib/capybara/selenium/patches/atoms.rb
|
534
|
+
- lib/capybara/selenium/patches/is_displayed.rb
|
535
|
+
- lib/capybara/selenium/patches/logs.rb
|
449
536
|
- lib/capybara/selenium/patches/pause_duration_fix.rb
|
450
537
|
- lib/capybara/selenium/patches/persistent_client.rb
|
451
538
|
- lib/capybara/server.rb
|
@@ -461,6 +548,7 @@ files:
|
|
461
548
|
- lib/capybara/spec/fixtures/test_file.txt
|
462
549
|
- lib/capybara/spec/public/jquery-ui.js
|
463
550
|
- lib/capybara/spec/public/jquery.js
|
551
|
+
- lib/capybara/spec/public/offset.js
|
464
552
|
- lib/capybara/spec/public/test.js
|
465
553
|
- lib/capybara/spec/session/accept_alert_spec.rb
|
466
554
|
- lib/capybara/spec/session/accept_confirm_spec.rb
|
@@ -505,6 +593,7 @@ files:
|
|
505
593
|
- lib/capybara/spec/session/go_back_spec.rb
|
506
594
|
- lib/capybara/spec/session/go_forward_spec.rb
|
507
595
|
- lib/capybara/spec/session/has_all_selectors_spec.rb
|
596
|
+
- lib/capybara/spec/session/has_ancestor_spec.rb
|
508
597
|
- lib/capybara/spec/session/has_any_selectors_spec.rb
|
509
598
|
- lib/capybara/spec/session/has_button_spec.rb
|
510
599
|
- lib/capybara/spec/session/has_css_spec.rb
|
@@ -514,6 +603,7 @@ files:
|
|
514
603
|
- lib/capybara/spec/session/has_none_selectors_spec.rb
|
515
604
|
- lib/capybara/spec/session/has_select_spec.rb
|
516
605
|
- lib/capybara/spec/session/has_selector_spec.rb
|
606
|
+
- lib/capybara/spec/session/has_sibling_spec.rb
|
517
607
|
- lib/capybara/spec/session/has_table_spec.rb
|
518
608
|
- lib/capybara/spec/session/has_text_spec.rb
|
519
609
|
- lib/capybara/spec/session/has_title_spec.rb
|
@@ -552,6 +642,7 @@ files:
|
|
552
642
|
- lib/capybara/spec/session/within_spec.rb
|
553
643
|
- lib/capybara/spec/spec_helper.rb
|
554
644
|
- lib/capybara/spec/test_app.rb
|
645
|
+
- lib/capybara/spec/views/animated.erb
|
555
646
|
- lib/capybara/spec/views/buttons.erb
|
556
647
|
- lib/capybara/spec/views/fieldsets.erb
|
557
648
|
- lib/capybara/spec/views/form.erb
|
@@ -563,15 +654,19 @@ files:
|
|
563
654
|
- lib/capybara/spec/views/host_links.erb
|
564
655
|
- lib/capybara/spec/views/initial_alert.erb
|
565
656
|
- lib/capybara/spec/views/obscured.erb
|
657
|
+
- lib/capybara/spec/views/offset.erb
|
566
658
|
- lib/capybara/spec/views/path.erb
|
567
659
|
- lib/capybara/spec/views/popup_one.erb
|
568
660
|
- lib/capybara/spec/views/popup_two.erb
|
569
661
|
- lib/capybara/spec/views/postback.erb
|
662
|
+
- lib/capybara/spec/views/react.erb
|
570
663
|
- lib/capybara/spec/views/scroll.erb
|
664
|
+
- lib/capybara/spec/views/spatial.erb
|
571
665
|
- lib/capybara/spec/views/tables.erb
|
572
666
|
- lib/capybara/spec/views/with_animation.erb
|
573
667
|
- lib/capybara/spec/views/with_base_tag.erb
|
574
668
|
- lib/capybara/spec/views/with_count.erb
|
669
|
+
- lib/capybara/spec/views/with_dragula.erb
|
575
670
|
- lib/capybara/spec/views/with_fixed_header_footer.erb
|
576
671
|
- lib/capybara/spec/views/with_hover.erb
|
577
672
|
- lib/capybara/spec/views/with_hover1.erb
|
@@ -579,11 +674,13 @@ files:
|
|
579
674
|
- lib/capybara/spec/views/with_html5_svg.erb
|
580
675
|
- lib/capybara/spec/views/with_html_entities.erb
|
581
676
|
- lib/capybara/spec/views/with_js.erb
|
677
|
+
- lib/capybara/spec/views/with_jstree.erb
|
582
678
|
- lib/capybara/spec/views/with_namespace.erb
|
583
679
|
- lib/capybara/spec/views/with_scope.erb
|
584
680
|
- lib/capybara/spec/views/with_scope_other.erb
|
585
681
|
- lib/capybara/spec/views/with_simple_html.erb
|
586
682
|
- lib/capybara/spec/views/with_slow_unload.erb
|
683
|
+
- lib/capybara/spec/views/with_sortable_js.erb
|
587
684
|
- lib/capybara/spec/views/with_title.erb
|
588
685
|
- lib/capybara/spec/views/with_unload_alert.erb
|
589
686
|
- lib/capybara/spec/views/with_windows.erb
|
@@ -624,6 +721,7 @@ files:
|
|
624
721
|
- spec/selenium_spec_safari.rb
|
625
722
|
- spec/server_spec.rb
|
626
723
|
- spec/session_spec.rb
|
724
|
+
- spec/shared_selenium_node.rb
|
627
725
|
- spec/shared_selenium_session.rb
|
628
726
|
- spec/spec_helper.rb
|
629
727
|
- spec/xpath_builder_spec.rb
|
@@ -641,14 +739,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
641
739
|
requirements:
|
642
740
|
- - ">="
|
643
741
|
- !ruby/object:Gem::Version
|
644
|
-
version: 2.
|
742
|
+
version: 2.5.0
|
645
743
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
646
744
|
requirements:
|
647
745
|
- - ">="
|
648
746
|
- !ruby/object:Gem::Version
|
649
747
|
version: '0'
|
650
748
|
requirements: []
|
651
|
-
rubygems_version: 3.
|
749
|
+
rubygems_version: 3.1.2
|
652
750
|
signing_key:
|
653
751
|
specification_version: 4
|
654
752
|
summary: Capybara aims to simplify the process of integration testing Rack applications,
|