capybara 3.33.0 → 3.34.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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +44 -15
  3. data/README.md +0 -2
  4. data/lib/capybara.rb +1 -1
  5. data/lib/capybara/config.rb +4 -6
  6. data/lib/capybara/driver/base.rb +4 -0
  7. data/lib/capybara/helpers.rb +25 -1
  8. data/lib/capybara/minitest.rb +2 -2
  9. data/lib/capybara/minitest/spec.rb +14 -11
  10. data/lib/capybara/node/actions.rb +1 -2
  11. data/lib/capybara/node/element.rb +1 -5
  12. data/lib/capybara/node/finders.rb +7 -6
  13. data/lib/capybara/node/matchers.rb +7 -5
  14. data/lib/capybara/node/simple.rb +5 -1
  15. data/lib/capybara/queries/ancestor_query.rb +1 -1
  16. data/lib/capybara/queries/current_path_query.rb +14 -4
  17. data/lib/capybara/queries/selector_query.rb +8 -9
  18. data/lib/capybara/queries/sibling_query.rb +1 -1
  19. data/lib/capybara/queries/text_query.rb +2 -2
  20. data/lib/capybara/rack_test/browser.rb +7 -3
  21. data/lib/capybara/rack_test/driver.rb +1 -0
  22. data/lib/capybara/rack_test/form.rb +1 -1
  23. data/lib/capybara/rack_test/node.rb +1 -1
  24. data/lib/capybara/registration_container.rb +3 -3
  25. data/lib/capybara/registrations/patches/puma_ssl.rb +3 -1
  26. data/lib/capybara/registrations/servers.rb +1 -0
  27. data/lib/capybara/result.rb +3 -7
  28. data/lib/capybara/rspec.rb +2 -0
  29. data/lib/capybara/rspec/matcher_proxies.rb +1 -1
  30. data/lib/capybara/rspec/matchers.rb +7 -6
  31. data/lib/capybara/rspec/matchers/have_current_path.rb +2 -2
  32. data/lib/capybara/rspec/matchers/match_style.rb +5 -0
  33. data/lib/capybara/selector/definition.rb +6 -5
  34. data/lib/capybara/selector/definition/button.rb +7 -5
  35. data/lib/capybara/selector/definition/css.rb +1 -1
  36. data/lib/capybara/selector/definition/datalist_input.rb +1 -1
  37. data/lib/capybara/selector/definition/element.rb +2 -1
  38. data/lib/capybara/selector/definition/label.rb +1 -1
  39. data/lib/capybara/selector/definition/select.rb +1 -1
  40. data/lib/capybara/selector/definition/table_row.rb +1 -1
  41. data/lib/capybara/selector/filter_set.rb +2 -2
  42. data/lib/capybara/selector/selector.rb +5 -1
  43. data/lib/capybara/selenium/driver.rb +29 -3
  44. data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +3 -3
  45. data/lib/capybara/selenium/driver_specializations/edge_driver.rb +3 -3
  46. data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +1 -1
  47. data/lib/capybara/selenium/extensions/find.rb +3 -3
  48. data/lib/capybara/selenium/extensions/scroll.rb +8 -10
  49. data/lib/capybara/selenium/node.rb +6 -3
  50. data/lib/capybara/selenium/nodes/chrome_node.rb +20 -2
  51. data/lib/capybara/selenium/nodes/safari_node.rb +1 -1
  52. data/lib/capybara/selenium/patches/atoms.rb +4 -4
  53. data/lib/capybara/selenium/patches/logs.rb +4 -4
  54. data/lib/capybara/server/animation_disabler.rb +3 -2
  55. data/lib/capybara/server/middleware.rb +4 -2
  56. data/lib/capybara/session.rb +20 -11
  57. data/lib/capybara/session/matchers.rb +11 -11
  58. data/lib/capybara/spec/public/test.js +6 -1
  59. data/lib/capybara/spec/session/accept_alert_spec.rb +1 -1
  60. data/lib/capybara/spec/session/check_spec.rb +6 -0
  61. data/lib/capybara/spec/session/current_url_spec.rb +11 -1
  62. data/lib/capybara/spec/session/has_button_spec.rb +2 -0
  63. data/lib/capybara/spec/session/has_css_spec.rb +2 -1
  64. data/lib/capybara/spec/session/has_current_path_spec.rb +13 -0
  65. data/lib/capybara/spec/session/has_text_spec.rb +0 -11
  66. data/lib/capybara/spec/session/matches_style_spec.rb +2 -2
  67. data/lib/capybara/spec/session/node_spec.rb +22 -2
  68. data/lib/capybara/spec/session/refresh_spec.rb +1 -0
  69. data/lib/capybara/spec/session/save_page_spec.rb +4 -4
  70. data/lib/capybara/spec/spec_helper.rb +11 -12
  71. data/lib/capybara/spec/test_app.rb +8 -3
  72. data/lib/capybara/spec/views/form.erb +18 -0
  73. data/lib/capybara/spec/views/with_animation.erb +8 -0
  74. data/lib/capybara/spec/views/with_js.erb +1 -0
  75. data/lib/capybara/spec/views/with_sortable_js.erb +1 -1
  76. data/lib/capybara/version.rb +1 -1
  77. data/lib/capybara/window.rb +3 -7
  78. data/spec/basic_node_spec.rb +9 -8
  79. data/spec/dsl_spec.rb +1 -1
  80. data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
  81. data/spec/minitest_spec.rb +2 -1
  82. data/spec/rack_test_spec.rb +15 -5
  83. data/spec/rspec/features_spec.rb +3 -1
  84. data/spec/rspec/scenarios_spec.rb +4 -0
  85. data/spec/rspec/shared_spec_matchers.rb +2 -2
  86. data/spec/rspec_spec.rb +4 -0
  87. data/spec/selector_spec.rb +1 -0
  88. data/spec/server_spec.rb +15 -0
  89. data/spec/shared_selenium_session.rb +60 -1
  90. metadata +22 -23
  91. data/lib/capybara/spec/session/source_spec.rb +0 -0
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Capybara
4
- VERSION = '3.33.0'
4
+ VERSION = '3.34.0'
5
5
  end
@@ -4,7 +4,7 @@ module Capybara
4
4
  ##
5
5
  # The {Window} class represents a browser window.
6
6
  #
7
- # You can get an instance of the class by calling either of:
7
+ # You can get an instance of the class by calling any of:
8
8
  #
9
9
  # * {Capybara::Session#windows}
10
10
  # * {Capybara::Session#current_window}
@@ -82,8 +82,8 @@ module Capybara
82
82
  # Resize window.
83
83
  #
84
84
  # @macro about_current
85
- # @param width [String] the new window width in pixels
86
- # @param height [String] the new window height in pixels
85
+ # @param width [Integer] the new window width in pixels
86
+ # @param height [Integer] the new window height in pixels
87
87
  #
88
88
  def resize_to(width, height)
89
89
  wait_for_stable_size { @driver.resize_window_to(handle, width, height) }
@@ -138,9 +138,5 @@ module Capybara
138
138
  end
139
139
  raise Capybara::WindowError, "Window size not stable within #{seconds} seconds."
140
140
  end
141
-
142
- def raise_unless_current(what)
143
- raise Capybara::WindowError, "#{what} not current window is not possible." unless current?
144
- end
145
141
  end
146
142
  end
@@ -3,6 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Capybara do
6
+ include Capybara::RSpecMatchers
6
7
  describe '.string' do
7
8
  let :string do
8
9
  described_class.string <<-STRING
@@ -129,25 +130,25 @@ RSpec.describe Capybara do
129
130
 
130
131
  describe '#has_title?' do
131
132
  it 'returns whether the page has the given title' do
132
- expect(string.has_title?('simple_node')).to be_truthy
133
- expect(string.has_title?('monkey')).to be_falsey
133
+ expect(string.has_title?('simple_node')).to be true
134
+ expect(string.has_title?('monkey')).to be false
134
135
  end
135
136
 
136
137
  it 'allows regexp matches' do
137
- expect(string.has_title?(/s[a-z]+_node/)).to be_truthy
138
- expect(string.has_title?(/monkey/)).to be_falsey
138
+ expect(string.has_title?(/s[a-z]+_node/)).to be true
139
+ expect(string.has_title?(/monkey/)).to be false
139
140
  end
140
141
  end
141
142
 
142
143
  describe '#has_no_title?' do
143
144
  it 'returns whether the page does not have the given title' do
144
- expect(string.has_no_title?('simple_node')).to be_falsey
145
- expect(string.has_no_title?('monkey')).to be_truthy
145
+ expect(string.has_no_title?('simple_node')).to be false
146
+ expect(string.has_no_title?('monkey')).to be true
146
147
  end
147
148
 
148
149
  it 'allows regexp matches' do
149
- expect(string.has_no_title?(/s[a-z]+_node/)).to be_falsey
150
- expect(string.has_no_title?(/monkey/)).to be_truthy
150
+ expect(string.has_no_title?(/s[a-z]+_node/)).to be false
151
+ expect(string.has_no_title?(/monkey/)).to be true
151
152
  end
152
153
  end
153
154
  end
@@ -8,7 +8,7 @@ class TestClass
8
8
  end
9
9
 
10
10
  Capybara::SpecHelper.run_specs TestClass.new, 'DSL', capybara_skip: %i[
11
- js modals screenshot frames windows send_keys server hover about_scheme psc download css driver scroll spatial html_validation
11
+ js modals screenshot frames windows send_keys server hover about_scheme psc download css driver scroll spatial html_validation shadow_dom
12
12
  ] do |example|
13
13
  case example.metadata[:full_description]
14
14
  when /has_css\? should support case insensitive :class and :id options/
@@ -6,7 +6,7 @@ require 'selenium-webdriver'
6
6
  RSpec.describe Capybara::Selenium::Driver do
7
7
  it 'should exit with a zero exit status' do
8
8
  options = { browser: (ENV['SELENIUM_BROWSER'] || :firefox).to_sym }
9
- browser = described_class.new(TestApp, options).browser
9
+ browser = described_class.new(TestApp, **options).browser
10
10
  expect(browser).to be_truthy
11
11
  expect(true).to eq(true) # rubocop:disable RSpec/ExpectActual
12
12
  end
@@ -30,6 +30,7 @@ class MinitestTest < Minitest::Test
30
30
 
31
31
  def test_assert_current_path
32
32
  assert_current_path('/form')
33
+ assert_current_path('/form') { |url| url.query.nil? }
33
34
  assert_no_current_path('/not_form')
34
35
  refute_current_path('/not_form')
35
36
  end
@@ -158,6 +159,6 @@ RSpec.describe 'capybara/minitest' do
158
159
  reporter.start
159
160
  MinitestTest.run reporter, {}
160
161
  reporter.report
161
- expect(output.string).to include('22 runs, 52 assertions, 0 failures, 0 errors, 1 skips')
162
+ expect(output.string).to include('22 runs, 53 assertions, 0 failures, 0 errors, 1 skips')
162
163
  end
163
164
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  require 'spec_helper'
4
4
  nokogumbo_required = begin
5
- require 'nokogumbo'
6
- true
7
- rescue LoadError
8
- false
9
- end
5
+ require 'nokogumbo'
6
+ true
7
+ rescue LoadError
8
+ false
9
+ end
10
10
 
11
11
  module TestSessions
12
12
  RackTest = Capybara::Session.new(:rack_test, TestApp)
@@ -27,6 +27,7 @@ skipped_tests = %i[
27
27
  scroll
28
28
  spatial
29
29
  html_validation
30
+ shadow_dom
30
31
  ]
31
32
  Capybara::SpecHelper.run_specs TestSessions::RackTest, 'RackTest', capybara_skip: skipped_tests do |example|
32
33
  case example.metadata[:full_description]
@@ -38,6 +39,7 @@ Capybara::SpecHelper.run_specs TestSessions::RackTest, 'RackTest', capybara_skip
38
39
  end
39
40
 
40
41
  RSpec.describe Capybara::Session do # rubocop:disable RSpec/MultipleDescribes
42
+ include Capybara::RSpecMatchers
41
43
  context 'with rack test driver' do
42
44
  let(:session) { TestSessions::RackTest }
43
45
 
@@ -143,6 +145,14 @@ RSpec.describe Capybara::Session do # rubocop:disable RSpec/MultipleDescribes
143
145
  end
144
146
  end
145
147
 
148
+ describe '#send_keys' do
149
+ it 'raises an UnsupportedMethodError' do
150
+ session.visit('/form')
151
+
152
+ expect { session.send_keys(:tab) }.to raise_error(Capybara::NotSupportedByDriverError)
153
+ end
154
+ end
155
+
146
156
  describe '#text' do
147
157
  it 'should return original text content for textareas' do
148
158
  session.visit('/with_html')
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable RSpec/MultipleDescribes
4
+
3
5
  require 'spec_helper'
4
6
  require 'capybara/rspec'
5
7
 
@@ -96,4 +98,4 @@ ffeature 'if ffeature aliases focused tag then' do # rubocop:disable RSpec/Focus
96
98
  expect(example.metadata[:focus]).to eq true
97
99
  end
98
100
  end
99
- # rubocop:enable RSpec/RepeatedExample
101
+ # rubocop:enable RSpec/RepeatedExample, RSpec/MultipleDescribes
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable RSpec/MultipleDescribes
4
+
3
5
  require 'spec_helper'
4
6
  require 'capybara/rspec'
5
7
 
@@ -17,3 +19,5 @@ feature 'if xscenario aliases to pending then' do
17
19
  xscenario "this test should be 'temporarily disabled with xscenario'" do
18
20
  end
19
21
  end
22
+
23
+ # rubocop:enable RSpec/MultipleDescribes
@@ -840,10 +840,10 @@ RSpec.shared_examples Capybara::RSpecMatchers do |session, _mode|
840
840
  end
841
841
 
842
842
  it 'gives proper description when :visible option passed' do
843
- expect(have_table('Lovely table', visible: true).description).to eq('have visible table "Lovely table"') # rubocop:disable Capybara/VisibilityMatcher
843
+ expect(have_table('Lovely table', visible: true).description).to eq('have visible table "Lovely table"')
844
844
  expect(have_table('Lovely table', visible: :hidden).description).to eq('have non-visible table "Lovely table"')
845
845
  expect(have_table('Lovely table', visible: :all).description).to eq('have table "Lovely table"')
846
- expect(have_table('Lovely table', visible: false).description).to eq('have table "Lovely table"') # rubocop:disable Capybara/VisibilityMatcher
846
+ expect(have_table('Lovely table', visible: false).description).to eq('have table "Lovely table"')
847
847
  end
848
848
 
849
849
  it 'passes if there is such a table' do
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable RSpec/MultipleDescribes
4
+
3
5
  require 'spec_helper'
4
6
 
5
7
  RSpec.describe 'capybara/rspec' do
@@ -143,3 +145,5 @@ feature 'Feature DSL' do
143
145
  expect(page.body).to include('Another World')
144
146
  end
145
147
  end
148
+
149
+ # rubocop:enable RSpec/MultipleDescribes
@@ -3,6 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Capybara do
6
+ include Capybara::RSpecMatchers
6
7
  describe 'Selectors' do
7
8
  let :string do
8
9
  described_class.string <<-STRING
@@ -99,6 +99,21 @@ RSpec.describe Capybara::Server do
99
99
  expect(uri.to_hash).to include(scheme: 'http', host: server.host, port: server.port)
100
100
  end
101
101
 
102
+ it 'should call #clamp on the puma configuration to ensure that environment is a string' do
103
+ Capybara.server = :puma
104
+ app_proc = proc { |_env| [200, {}, ['Hello Puma!']] }
105
+ require 'puma'
106
+ allow(Puma::Server).to receive(:new).and_wrap_original do |method, app, events, options|
107
+ # If #clamp is not called on the puma config then this will be a Proc
108
+ expect(options.fetch(:environment)).to be_a(String)
109
+ method.call(app, events, options)
110
+ end
111
+ described_class.new(app_proc).boot
112
+ expect(Puma::Server).to have_received(:new)
113
+ ensure
114
+ Capybara.server = :default
115
+ end
116
+
102
117
  it 'should support SSL' do
103
118
  key = File.join(Dir.pwd, 'spec', 'fixtures', 'key.pem')
104
119
  cert = File.join(Dir.pwd, 'spec', 'fixtures', 'certificate.pem')
@@ -167,7 +167,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
167
167
  long_string = (0...60).map { |i| ((i % 26) + 65).chr }.join
168
168
  session.visit('/form')
169
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)
170
+ expect(session.find(:fillable_field, 'form_first_name').value).to eq("John#{long_string}")
171
171
  end
172
172
  end
173
173
 
@@ -214,6 +214,26 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
214
214
  end
215
215
  end
216
216
 
217
+ describe '#fill_in with Emoji' do
218
+ it 'sends emojis' do
219
+ session.visit('/form')
220
+ session.fill_in('form_first_name', with: 'a😀cd😴 🛌🏽🇵🇹 e🤾🏽‍♀️f')
221
+ expect(session.find(:fillable_field, 'form_first_name').value).to eq('a😀cd😴 🛌🏽🇵🇹 e🤾🏽‍♀️f')
222
+ end
223
+ end
224
+
225
+ describe '#send_keys' do
226
+ it 'defaults to sending keys to the document.activeElement' do
227
+ session.visit('/form')
228
+
229
+ expect(session.evaluate_script('document.activeElement')).to eq(session.find('//body'))
230
+
231
+ session.send_keys(:tab)
232
+
233
+ expect(session.evaluate_script('document.activeElement')).to eq(session.first(:field))
234
+ end
235
+ end
236
+
217
237
  describe '#path' do
218
238
  it 'returns xpath' do
219
239
  # this is here because it is testing for an XPath that is specific to the algorithm used in the selenium driver
@@ -369,15 +389,50 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
369
389
 
370
390
  it 'should disable CSS animations (set to 0s)' do
371
391
  @animation_session.visit('with_animation')
392
+ sleep 1
372
393
  @animation_session.click_link('animate me away')
373
394
  expect(@animation_session).to have_no_link('animate me away', wait: 0.5)
374
395
  end
375
396
 
376
397
  it 'should disable CSS animations on pseudo elements (set to 0s)' do
377
398
  @animation_session.visit('with_animation')
399
+ sleep 1
378
400
  @animation_session.find_link('animate me away').right_click
379
401
  expect(@animation_session).to have_content('Animation Ended', wait: 0.1)
380
402
  end
403
+
404
+ it 'should scroll the page instantly', requires: [:js] do
405
+ @animation_session.visit('with_animation')
406
+ scroll_y = @animation_session.evaluate_script(<<~JS)
407
+ (function(){
408
+ window.scrollTo(0,500);
409
+ return window.scrollY;
410
+ })()
411
+ JS
412
+ expect(scroll_y).to eq 500
413
+ end
414
+ end
415
+
416
+ context 'when set to `false`' do
417
+ before(:context) do # rubocop:disable RSpec/BeforeAfterAll
418
+ skip "Safari doesn't support multiple sessions" if safari?(session)
419
+ # NOTE: Although Capybara.SpecHelper.reset! sets Capybara.disable_animation to false,
420
+ # it doesn't affect any of these tests because the settings are applied per-session
421
+ Capybara.disable_animation = false
422
+ @animation_session = Capybara::Session.new(session.mode, TestApp.new)
423
+ end
424
+
425
+ it 'should scroll the page with a smooth animation', requires: [:js] do
426
+ @animation_session.visit('with_animation')
427
+ scroll_y = @animation_session.evaluate_script(<<~JS)
428
+ (function(){
429
+ window.scrollTo(0,500);
430
+ return window.scrollY;
431
+ })()
432
+ JS
433
+ # measured over 0.5 seconds: 0, 75, 282, 478, 500
434
+ expect(scroll_y).to be < 500
435
+ end
381
436
  end
382
437
 
383
438
  context 'if we pass in css that matches elements' do
@@ -391,12 +446,14 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
391
446
 
392
447
  it 'should disable CSS transitions' do
393
448
  @animation_session_with_matching_css.visit('with_animation')
449
+ sleep 1
394
450
  @animation_session_with_matching_css.click_link('transition me away')
395
451
  expect(@animation_session_with_matching_css).to have_no_link('transition me away', wait: 0.5)
396
452
  end
397
453
 
398
454
  it 'should disable CSS animations' do
399
455
  @animation_session_with_matching_css.visit('with_animation')
456
+ sleep 1
400
457
  @animation_session_with_matching_css.click_link('animate me away')
401
458
  expect(@animation_session_with_matching_css).to have_no_link('animate me away', wait: 0.5)
402
459
  end
@@ -413,6 +470,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
413
470
 
414
471
  it 'should not disable CSS transitions' do
415
472
  @animation_session_without_matching_css.visit('with_animation')
473
+ sleep 1
416
474
  @animation_session_without_matching_css.click_link('transition me away')
417
475
  sleep 0.5 # Wait long enough for click to have been processed
418
476
  expect(@animation_session_without_matching_css).to have_link('transition me away', wait: false)
@@ -421,6 +479,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
421
479
 
422
480
  it 'should not disable CSS animations' do
423
481
  @animation_session_without_matching_css.visit('with_animation')
482
+ sleep 1
424
483
  @animation_session_without_matching_css.click_link('animate me away')
425
484
  sleep 0.5 # Wait long enough for click to have been processed
426
485
  expect(@animation_session_without_matching_css).to have_link('animate me away', wait: false)
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.33.0
4
+ version: 3.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Walpole
8
8
  - Jonas Nicklas
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - gem-public_cert.pem
13
- date: 2020-06-21 00:00:00.000000000 Z
13
+ date: 2020-11-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -270,14 +270,14 @@ dependencies:
270
270
  requirements:
271
271
  - - "~>"
272
272
  - !ruby/object:Gem::Version
273
- version: '0.72'
273
+ version: 1.1.0
274
274
  type: :development
275
275
  prerelease: false
276
276
  version_requirements: !ruby/object:Gem::Requirement
277
277
  requirements:
278
278
  - - "~>"
279
279
  - !ruby/object:Gem::Version
280
- version: '0.72'
280
+ version: 1.1.0
281
281
  - !ruby/object:Gem::Dependency
282
282
  name: rubocop-performance
283
283
  requirement: !ruby/object:Gem::Requirement
@@ -296,16 +296,16 @@ dependencies:
296
296
  name: rubocop-rspec
297
297
  requirement: !ruby/object:Gem::Requirement
298
298
  requirements:
299
- - - ">="
299
+ - - "~>"
300
300
  - !ruby/object:Gem::Version
301
- version: '0'
301
+ version: 2.0.0.pre
302
302
  type: :development
303
303
  prerelease: false
304
304
  version_requirements: !ruby/object:Gem::Requirement
305
305
  requirements:
306
- - - ">="
306
+ - - "~>"
307
307
  - !ruby/object:Gem::Version
308
- version: '0'
308
+ version: 2.0.0.pre
309
309
  - !ruby/object:Gem::Dependency
310
310
  name: sauce_whisk
311
311
  requirement: !ruby/object:Gem::Requirement
@@ -321,33 +321,33 @@ dependencies:
321
321
  - !ruby/object:Gem::Version
322
322
  version: '0'
323
323
  - !ruby/object:Gem::Dependency
324
- name: selenium-webdriver
324
+ name: selenium_statistics
325
325
  requirement: !ruby/object:Gem::Requirement
326
326
  requirements:
327
- - - "~>"
327
+ - - ">="
328
328
  - !ruby/object:Gem::Version
329
- version: '3.5'
329
+ version: '0'
330
330
  type: :development
331
331
  prerelease: false
332
332
  version_requirements: !ruby/object:Gem::Requirement
333
333
  requirements:
334
- - - "~>"
334
+ - - ">="
335
335
  - !ruby/object:Gem::Version
336
- version: '3.5'
336
+ version: '0'
337
337
  - !ruby/object:Gem::Dependency
338
- name: selenium_statistics
338
+ name: selenium-webdriver
339
339
  requirement: !ruby/object:Gem::Requirement
340
340
  requirements:
341
- - - ">="
341
+ - - "~>"
342
342
  - !ruby/object:Gem::Version
343
- version: '0'
343
+ version: '3.5'
344
344
  type: :development
345
345
  prerelease: false
346
346
  version_requirements: !ruby/object:Gem::Requirement
347
347
  requirements:
348
- - - ">="
348
+ - - "~>"
349
349
  - !ruby/object:Gem::Version
350
- version: '0'
350
+ version: '3.5'
351
351
  - !ruby/object:Gem::Dependency
352
352
  name: sinatra
353
353
  requirement: !ruby/object:Gem::Requirement
@@ -625,7 +625,6 @@ files:
625
625
  - lib/capybara/spec/session/select_spec.rb
626
626
  - lib/capybara/spec/session/selectors_spec.rb
627
627
  - lib/capybara/spec/session/sibling_spec.rb
628
- - lib/capybara/spec/session/source_spec.rb
629
628
  - lib/capybara/spec/session/text_spec.rb
630
629
  - lib/capybara/spec/session/title_spec.rb
631
630
  - lib/capybara/spec/session/uncheck_spec.rb
@@ -731,7 +730,7 @@ licenses:
731
730
  metadata:
732
731
  changelog_uri: https://github.com/teamcapybara/capybara/blob/master/History.md
733
732
  source_code_uri: https://github.com/teamcapybara/capybara
734
- post_install_message:
733
+ post_install_message:
735
734
  rdoc_options: []
736
735
  require_paths:
737
736
  - lib
@@ -746,8 +745,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
746
745
  - !ruby/object:Gem::Version
747
746
  version: '0'
748
747
  requirements: []
749
- rubygems_version: 3.1.2
750
- signing_key:
748
+ rubygems_version: 3.1.4
749
+ signing_key:
751
750
  specification_version: 4
752
751
  summary: Capybara aims to simplify the process of integration testing Rack applications,
753
752
  such as Rails, Sinatra or Merb