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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +20 -1
  3. data/README.md +1 -1
  4. data/lib/capybara/driver/node.rb +4 -0
  5. data/lib/capybara/dsl.rb +4 -10
  6. data/lib/capybara/minitest/spec.rb +2 -2
  7. data/lib/capybara/node/element.rb +12 -1
  8. data/lib/capybara/node/finders.rb +1 -1
  9. data/lib/capybara/queries/selector_query.rb +20 -7
  10. data/lib/capybara/rack_test/browser.rb +41 -6
  11. data/lib/capybara/rack_test/driver.rb +4 -4
  12. data/lib/capybara/rack_test/node.rb +1 -1
  13. data/lib/capybara/registration_container.rb +0 -3
  14. data/lib/capybara/rspec/matchers/have_selector.rb +4 -4
  15. data/lib/capybara/rspec/matchers.rb +14 -14
  16. data/lib/capybara/selector/definition.rb +2 -1
  17. data/lib/capybara/selenium/driver.rb +6 -2
  18. data/lib/capybara/selenium/node.rb +12 -0
  19. data/lib/capybara/server/animation_disabler.rb +29 -17
  20. data/lib/capybara/session/config.rb +1 -1
  21. data/lib/capybara/session.rb +8 -21
  22. data/lib/capybara/spec/session/all_spec.rb +5 -7
  23. data/lib/capybara/spec/session/assert_text_spec.rb +17 -17
  24. data/lib/capybara/spec/session/has_current_path_spec.rb +2 -2
  25. data/lib/capybara/spec/session/has_field_spec.rb +1 -1
  26. data/lib/capybara/spec/session/has_select_spec.rb +4 -4
  27. data/lib/capybara/spec/session/has_selector_spec.rb +15 -0
  28. data/lib/capybara/spec/session/has_text_spec.rb +1 -5
  29. data/lib/capybara/spec/session/node_spec.rb +42 -0
  30. data/lib/capybara/spec/session/visit_spec.rb +14 -0
  31. data/lib/capybara/spec/session/window/window_spec.rb +1 -1
  32. data/lib/capybara/spec/test_app.rb +33 -0
  33. data/lib/capybara/spec/views/with_shadow.erb +31 -0
  34. data/lib/capybara/version.rb +1 -1
  35. data/lib/capybara/window.rb +1 -1
  36. data/lib/capybara.rb +1 -0
  37. data/spec/dsl_spec.rb +2 -2
  38. data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
  39. data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
  40. data/spec/rack_test_spec.rb +6 -0
  41. data/spec/result_spec.rb +27 -29
  42. data/spec/rspec/features_spec.rb +2 -2
  43. data/spec/rspec/scenarios_spec.rb +1 -1
  44. data/spec/sauce_spec_chrome.rb +3 -3
  45. data/spec/selector_spec.rb +1 -1
  46. data/spec/selenium_spec_chrome.rb +1 -1
  47. data/spec/selenium_spec_firefox.rb +5 -1
  48. data/spec/selenium_spec_safari.rb +5 -1
  49. data/spec/server_spec.rb +5 -5
  50. data/spec/shared_selenium_session.rb +9 -2
  51. data/spec/spec_helper.rb +1 -1
  52. 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 "w3c_click_offset is not currently supported with safaridriver"
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['TRAVIS'] && (RUBY_ENGINE == 'jruby')) || Gem.win_platform?
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('TCPServer', addr: [nil, server_port, nil, nil], close: nil)
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 eq(false)
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 eq(true)
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 eq false
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 eq false
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['HEADLESS']
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['CI'] || ENV['WEBDRIVERS']
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.36.0
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: 2021-10-25 00:00:00.000000000 Z
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.6.0
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.2.29
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,