capybara 3.33.0 → 3.34.0

Sign up to get free protection for your applications and to get access to all the features.
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