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.
- checksums.yaml +4 -4
- data/History.md +44 -15
- data/README.md +0 -2
- data/lib/capybara.rb +1 -1
- data/lib/capybara/config.rb +4 -6
- data/lib/capybara/driver/base.rb +4 -0
- data/lib/capybara/helpers.rb +25 -1
- data/lib/capybara/minitest.rb +2 -2
- data/lib/capybara/minitest/spec.rb +14 -11
- data/lib/capybara/node/actions.rb +1 -2
- data/lib/capybara/node/element.rb +1 -5
- data/lib/capybara/node/finders.rb +7 -6
- data/lib/capybara/node/matchers.rb +7 -5
- data/lib/capybara/node/simple.rb +5 -1
- data/lib/capybara/queries/ancestor_query.rb +1 -1
- data/lib/capybara/queries/current_path_query.rb +14 -4
- data/lib/capybara/queries/selector_query.rb +8 -9
- data/lib/capybara/queries/sibling_query.rb +1 -1
- data/lib/capybara/queries/text_query.rb +2 -2
- data/lib/capybara/rack_test/browser.rb +7 -3
- data/lib/capybara/rack_test/driver.rb +1 -0
- data/lib/capybara/rack_test/form.rb +1 -1
- data/lib/capybara/rack_test/node.rb +1 -1
- data/lib/capybara/registration_container.rb +3 -3
- data/lib/capybara/registrations/patches/puma_ssl.rb +3 -1
- data/lib/capybara/registrations/servers.rb +1 -0
- data/lib/capybara/result.rb +3 -7
- data/lib/capybara/rspec.rb +2 -0
- data/lib/capybara/rspec/matcher_proxies.rb +1 -1
- data/lib/capybara/rspec/matchers.rb +7 -6
- data/lib/capybara/rspec/matchers/have_current_path.rb +2 -2
- data/lib/capybara/rspec/matchers/match_style.rb +5 -0
- data/lib/capybara/selector/definition.rb +6 -5
- data/lib/capybara/selector/definition/button.rb +7 -5
- data/lib/capybara/selector/definition/css.rb +1 -1
- data/lib/capybara/selector/definition/datalist_input.rb +1 -1
- data/lib/capybara/selector/definition/element.rb +2 -1
- data/lib/capybara/selector/definition/label.rb +1 -1
- data/lib/capybara/selector/definition/select.rb +1 -1
- data/lib/capybara/selector/definition/table_row.rb +1 -1
- data/lib/capybara/selector/filter_set.rb +2 -2
- data/lib/capybara/selector/selector.rb +5 -1
- data/lib/capybara/selenium/driver.rb +29 -3
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +3 -3
- data/lib/capybara/selenium/driver_specializations/edge_driver.rb +3 -3
- data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +1 -1
- data/lib/capybara/selenium/extensions/find.rb +3 -3
- data/lib/capybara/selenium/extensions/scroll.rb +8 -10
- data/lib/capybara/selenium/node.rb +6 -3
- data/lib/capybara/selenium/nodes/chrome_node.rb +20 -2
- data/lib/capybara/selenium/nodes/safari_node.rb +1 -1
- data/lib/capybara/selenium/patches/atoms.rb +4 -4
- data/lib/capybara/selenium/patches/logs.rb +4 -4
- data/lib/capybara/server/animation_disabler.rb +3 -2
- data/lib/capybara/server/middleware.rb +4 -2
- data/lib/capybara/session.rb +20 -11
- data/lib/capybara/session/matchers.rb +11 -11
- data/lib/capybara/spec/public/test.js +6 -1
- data/lib/capybara/spec/session/accept_alert_spec.rb +1 -1
- data/lib/capybara/spec/session/check_spec.rb +6 -0
- data/lib/capybara/spec/session/current_url_spec.rb +11 -1
- data/lib/capybara/spec/session/has_button_spec.rb +2 -0
- data/lib/capybara/spec/session/has_css_spec.rb +2 -1
- data/lib/capybara/spec/session/has_current_path_spec.rb +13 -0
- data/lib/capybara/spec/session/has_text_spec.rb +0 -11
- data/lib/capybara/spec/session/matches_style_spec.rb +2 -2
- data/lib/capybara/spec/session/node_spec.rb +22 -2
- data/lib/capybara/spec/session/refresh_spec.rb +1 -0
- data/lib/capybara/spec/session/save_page_spec.rb +4 -4
- data/lib/capybara/spec/spec_helper.rb +11 -12
- data/lib/capybara/spec/test_app.rb +8 -3
- data/lib/capybara/spec/views/form.erb +18 -0
- data/lib/capybara/spec/views/with_animation.erb +8 -0
- data/lib/capybara/spec/views/with_js.erb +1 -0
- data/lib/capybara/spec/views/with_sortable_js.erb +1 -1
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +3 -7
- data/spec/basic_node_spec.rb +9 -8
- data/spec/dsl_spec.rb +1 -1
- data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
- data/spec/minitest_spec.rb +2 -1
- data/spec/rack_test_spec.rb +15 -5
- data/spec/rspec/features_spec.rb +3 -1
- data/spec/rspec/scenarios_spec.rb +4 -0
- data/spec/rspec/shared_spec_matchers.rb +2 -2
- data/spec/rspec_spec.rb +4 -0
- data/spec/selector_spec.rb +1 -0
- data/spec/server_spec.rb +15 -0
- data/spec/shared_selenium_session.rb +60 -1
- metadata +22 -23
- data/lib/capybara/spec/session/source_spec.rb +0 -0
data/lib/capybara/version.rb
CHANGED
data/lib/capybara/window.rb
CHANGED
@@ -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
|
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 [
|
86
|
-
# @param height [
|
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
|
data/spec/basic_node_spec.rb
CHANGED
@@ -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
|
133
|
-
expect(string.has_title?('monkey')).to
|
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
|
138
|
-
expect(string.has_title?(/monkey/)).to
|
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
|
145
|
-
expect(string.has_no_title?('monkey')).to
|
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
|
150
|
-
expect(string.has_no_title?(/monkey/)).to
|
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
|
data/spec/dsl_spec.rb
CHANGED
@@ -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
|
data/spec/minitest_spec.rb
CHANGED
@@ -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,
|
162
|
+
expect(output.string).to include('22 runs, 53 assertions, 0 failures, 0 errors, 1 skips')
|
162
163
|
end
|
163
164
|
end
|
data/spec/rack_test_spec.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
nokogumbo_required = begin
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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')
|
data/spec/rspec/features_spec.rb
CHANGED
@@ -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"')
|
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"')
|
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
|
data/spec/rspec_spec.rb
CHANGED
@@ -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
|
data/spec/selector_spec.rb
CHANGED
data/spec/server_spec.rb
CHANGED
@@ -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(
|
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.
|
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-
|
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:
|
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:
|
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:
|
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:
|
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:
|
324
|
+
name: selenium_statistics
|
325
325
|
requirement: !ruby/object:Gem::Requirement
|
326
326
|
requirements:
|
327
|
-
- - "
|
327
|
+
- - ">="
|
328
328
|
- !ruby/object:Gem::Version
|
329
|
-
version: '
|
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: '
|
336
|
+
version: '0'
|
337
337
|
- !ruby/object:Gem::Dependency
|
338
|
-
name:
|
338
|
+
name: selenium-webdriver
|
339
339
|
requirement: !ruby/object:Gem::Requirement
|
340
340
|
requirements:
|
341
|
-
- - "
|
341
|
+
- - "~>"
|
342
342
|
- !ruby/object:Gem::Version
|
343
|
-
version: '
|
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: '
|
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.
|
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
|