capybara 3.36.0 → 3.37.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 +4 -4
- data/History.md +20 -1
- data/README.md +1 -1
- data/lib/capybara/driver/node.rb +4 -0
- data/lib/capybara/dsl.rb +4 -10
- data/lib/capybara/minitest/spec.rb +2 -2
- data/lib/capybara/node/element.rb +12 -1
- data/lib/capybara/node/finders.rb +1 -1
- data/lib/capybara/queries/selector_query.rb +20 -7
- data/lib/capybara/rack_test/browser.rb +41 -6
- data/lib/capybara/rack_test/driver.rb +4 -4
- data/lib/capybara/rack_test/node.rb +1 -1
- data/lib/capybara/registration_container.rb +0 -3
- data/lib/capybara/rspec/matchers/have_selector.rb +4 -4
- data/lib/capybara/rspec/matchers.rb +14 -14
- data/lib/capybara/selector/definition.rb +2 -1
- data/lib/capybara/selenium/driver.rb +6 -2
- data/lib/capybara/selenium/node.rb +12 -0
- data/lib/capybara/server/animation_disabler.rb +29 -17
- data/lib/capybara/session/config.rb +1 -1
- data/lib/capybara/session.rb +8 -21
- data/lib/capybara/spec/session/all_spec.rb +5 -7
- data/lib/capybara/spec/session/assert_text_spec.rb +17 -17
- data/lib/capybara/spec/session/has_current_path_spec.rb +2 -2
- data/lib/capybara/spec/session/has_field_spec.rb +1 -1
- data/lib/capybara/spec/session/has_select_spec.rb +4 -4
- data/lib/capybara/spec/session/has_selector_spec.rb +15 -0
- data/lib/capybara/spec/session/has_text_spec.rb +1 -5
- data/lib/capybara/spec/session/node_spec.rb +42 -0
- data/lib/capybara/spec/session/visit_spec.rb +14 -0
- data/lib/capybara/spec/session/window/window_spec.rb +1 -1
- data/lib/capybara/spec/test_app.rb +33 -0
- data/lib/capybara/spec/views/with_shadow.erb +31 -0
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +1 -1
- data/lib/capybara.rb +1 -0
- data/spec/dsl_spec.rb +2 -2
- data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
- data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
- data/spec/rack_test_spec.rb +6 -0
- data/spec/result_spec.rb +27 -29
- data/spec/rspec/features_spec.rb +2 -2
- data/spec/rspec/scenarios_spec.rb +1 -1
- data/spec/sauce_spec_chrome.rb +3 -3
- data/spec/selector_spec.rb +1 -1
- data/spec/selenium_spec_chrome.rb +1 -1
- data/spec/selenium_spec_firefox.rb +5 -1
- data/spec/selenium_spec_safari.rb +5 -1
- data/spec/server_spec.rb +5 -5
- data/spec/shared_selenium_session.rb +9 -2
- data/spec/spec_helper.rb +1 -1
- metadata +6 -4
@@ -80,10 +80,14 @@ Capybara::SpecHelper.run_specs TestSessions::Safari, SAFARI_DRIVER.to_s, capybar
|
|
80
80
|
when 'Capybara::Session selenium_safari node #double_click should allow modifiers'
|
81
81
|
pending "safaridriver doesn't generate double click with key modifiers"
|
82
82
|
when /when w3c_click_offset is true should offset/
|
83
|
-
pending
|
83
|
+
pending 'w3c_click_offset is not currently supported with safaridriver'
|
84
84
|
when 'Capybara::Session selenium_safari #go_back should fetch a response from the driver from the previous page',
|
85
85
|
'Capybara::Session selenium_safari #go_forward should fetch a response from the driver from the previous page'
|
86
86
|
skip 'safaridriver loses the ability to find elements in the document after `go_back`'
|
87
|
+
when 'Capybara::Session selenium node #shadow_root should get the shadow root',
|
88
|
+
'Capybara::Session selenium node #shadow_root should find elements inside the shadow dom using CSS',
|
89
|
+
'Capybara::Session selenium node #shadow_root should find nested shadow roots'
|
90
|
+
pending "Safari doesn't yet have W3C shadow root support"
|
87
91
|
end
|
88
92
|
end
|
89
93
|
|
data/spec/server_spec.rb
CHANGED
@@ -20,7 +20,7 @@ RSpec.describe Capybara::Server do
|
|
20
20
|
|
21
21
|
it 'should bind to the specified host' do
|
22
22
|
# TODO: travis with jruby in container mode has an issue with this test
|
23
|
-
skip 'This platform has an issue with this test' if (ENV
|
23
|
+
skip 'This platform has an issue with this test' if (ENV.fetch('TRAVIS', nil) && (RUBY_ENGINE == 'jruby')) || Gem.win_platform?
|
24
24
|
|
25
25
|
begin
|
26
26
|
app = proc { |_env| [200, {}, ['Hello Server!']] }
|
@@ -78,7 +78,7 @@ RSpec.describe Capybara::Server do
|
|
78
78
|
# Use a port to force a EADDRINUSE error to be generated
|
79
79
|
server = TCPServer.new('0.0.0.0', 0)
|
80
80
|
server_port = server.addr[1]
|
81
|
-
d_server = instance_double(
|
81
|
+
d_server = instance_double(TCPServer, addr: [nil, server_port, nil, nil], close: nil)
|
82
82
|
call_count = 0
|
83
83
|
allow(TCPServer).to receive(:new).and_wrap_original do |m, *args|
|
84
84
|
call_count.zero? ? d_server : m.call(*args)
|
@@ -184,7 +184,7 @@ RSpec.describe Capybara::Server do
|
|
184
184
|
start_request(server2, 3.0)
|
185
185
|
server1.wait_for_pending_requests
|
186
186
|
end.to change { done }.from(0).to(2)
|
187
|
-
expect(server2.send(:pending_requests?)).to
|
187
|
+
expect(server2.send(:pending_requests?)).to be(false)
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
@@ -229,7 +229,7 @@ RSpec.describe Capybara::Server do
|
|
229
229
|
start_request(server2, 3.0)
|
230
230
|
server1.wait_for_pending_requests
|
231
231
|
end.to change { done }.from(0).to(1)
|
232
|
-
expect(server2.send(:pending_requests?)).to
|
232
|
+
expect(server2.send(:pending_requests?)).to be(true)
|
233
233
|
expect do
|
234
234
|
server2.wait_for_pending_requests
|
235
235
|
end.to change { done }.from(1).to(2)
|
@@ -274,7 +274,7 @@ RSpec.describe Capybara::Server do
|
|
274
274
|
app = -> { [200, {}, ['Hello, world']] }
|
275
275
|
server = described_class.new(app)
|
276
276
|
allow(Net::HTTP).to receive(:start).and_raise(SystemCallError.allocate)
|
277
|
-
expect(server.responsive?).to
|
277
|
+
expect(server.responsive?).to be false
|
278
278
|
end
|
279
279
|
|
280
280
|
[EOFError, Net::ReadTimeout].each do |err|
|
@@ -23,7 +23,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
23
23
|
it 'freshly reset session should not be touched' do
|
24
24
|
session.instance_variable_set(:@touched, true)
|
25
25
|
session.reset!
|
26
|
-
expect(session.instance_variable_get(:@touched)).to
|
26
|
+
expect(session.instance_variable_get(:@touched)).to be false
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -280,6 +280,13 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
280
280
|
expect(element).to eq session.find(:id, 'form_title')
|
281
281
|
end
|
282
282
|
|
283
|
+
it 'returns a shadow root' do
|
284
|
+
session.visit('/with_shadow')
|
285
|
+
shadow = session.find(:css, '#shadow_host')
|
286
|
+
element = session.evaluate_script('arguments[0].shadowRoot', shadow)
|
287
|
+
expect(element).to be_instance_of(Capybara::Node::Element)
|
288
|
+
end
|
289
|
+
|
283
290
|
it 'can return arrays of nested elements' do
|
284
291
|
session.visit('/form')
|
285
292
|
elements = session.evaluate_script('document.querySelectorAll("#form_city option")')
|
@@ -336,7 +343,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
336
343
|
it 'can attach a directory' do
|
337
344
|
pending "Geckodriver doesn't support uploading a directory" if firefox?(session)
|
338
345
|
pending "Selenium remote doesn't support transferring a directory" if remote?(session)
|
339
|
-
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
|
346
|
+
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.fetch('HEADLESS', nil)
|
340
347
|
pending "IE doesn't support uploading a directory" if ie?(session)
|
341
348
|
pending 'Chrome/chromedriver 73 breaks this' if chrome?(session) && chrome_gte?(73, session) && chrome_lt?(75, session)
|
342
349
|
pending "Safari doesn't support uploading a directory" if safari?(session)
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rspec/expectations'
|
4
|
-
require 'webdrivers' if ENV
|
4
|
+
require 'webdrivers' if ENV.fetch('CI', nil) || ENV.fetch('WEBDRIVERS', nil)
|
5
5
|
require 'selenium_statistics'
|
6
6
|
if ENV['TRAVIS']
|
7
7
|
require 'coveralls'
|
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.37.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Walpole
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-05-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -734,6 +734,7 @@ files:
|
|
734
734
|
- lib/capybara/spec/views/with_namespace.erb
|
735
735
|
- lib/capybara/spec/views/with_scope.erb
|
736
736
|
- lib/capybara/spec/views/with_scope_other.erb
|
737
|
+
- lib/capybara/spec/views/with_shadow.erb
|
737
738
|
- lib/capybara/spec/views/with_simple_html.erb
|
738
739
|
- lib/capybara/spec/views/with_slow_unload.erb
|
739
740
|
- lib/capybara/spec/views/with_sortable_js.erb
|
@@ -786,6 +787,7 @@ licenses:
|
|
786
787
|
metadata:
|
787
788
|
changelog_uri: https://github.com/teamcapybara/capybara/blob/master/History.md
|
788
789
|
source_code_uri: https://github.com/teamcapybara/capybara
|
790
|
+
rubygems_mfa_required: 'true'
|
789
791
|
post_install_message:
|
790
792
|
rdoc_options: []
|
791
793
|
require_paths:
|
@@ -794,14 +796,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
794
796
|
requirements:
|
795
797
|
- - ">="
|
796
798
|
- !ruby/object:Gem::Version
|
797
|
-
version: 2.
|
799
|
+
version: 2.7.0
|
798
800
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
799
801
|
requirements:
|
800
802
|
- - ">="
|
801
803
|
- !ruby/object:Gem::Version
|
802
804
|
version: '0'
|
803
805
|
requirements: []
|
804
|
-
rubygems_version: 3.
|
806
|
+
rubygems_version: 3.3.7
|
805
807
|
signing_key:
|
806
808
|
specification_version: 4
|
807
809
|
summary: Capybara aims to simplify the process of integration testing Rack applications,
|