capybara 3.35.3 → 3.38.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +90 -4
- data/README.md +28 -12
- data/lib/capybara/config.rb +16 -4
- data/lib/capybara/driver/base.rb +4 -0
- data/lib/capybara/driver/node.rb +5 -1
- data/lib/capybara/dsl.rb +4 -10
- data/lib/capybara/helpers.rb +8 -13
- data/lib/capybara/minitest/spec.rb +2 -2
- data/lib/capybara/node/actions.rb +10 -5
- data/lib/capybara/node/base.rb +2 -1
- data/lib/capybara/node/document.rb +2 -2
- data/lib/capybara/node/element.rb +13 -2
- data/lib/capybara/node/finders.rb +9 -2
- data/lib/capybara/node/simple.rb +5 -1
- data/lib/capybara/queries/active_element_query.rb +18 -0
- data/lib/capybara/queries/ancestor_query.rb +2 -1
- data/lib/capybara/queries/base_query.rb +2 -2
- data/lib/capybara/queries/current_path_query.rb +1 -1
- data/lib/capybara/queries/selector_query.rb +38 -10
- data/lib/capybara/queries/sibling_query.rb +2 -1
- data/lib/capybara/queries/text_query.rb +1 -1
- data/lib/capybara/rack_test/browser.rb +63 -8
- data/lib/capybara/rack_test/driver.rb +4 -4
- data/lib/capybara/rack_test/form.rb +29 -7
- data/lib/capybara/rack_test/node.rb +10 -7
- data/lib/capybara/registration_container.rb +0 -3
- data/lib/capybara/registrations/drivers.rb +3 -3
- data/lib/capybara/registrations/servers.rb +17 -9
- data/lib/capybara/rspec/matcher_proxies.rb +3 -3
- data/lib/capybara/rspec/matchers/have_selector.rb +5 -5
- data/lib/capybara/rspec/matchers.rb +14 -14
- data/lib/capybara/selector/builders/css_builder.rb +1 -1
- data/lib/capybara/selector/builders/xpath_builder.rb +1 -1
- data/lib/capybara/selector/css.rb +1 -1
- data/lib/capybara/selector/definition/button.rb +9 -4
- data/lib/capybara/selector/definition/checkbox.rb +1 -1
- data/lib/capybara/selector/definition/file_field.rb +1 -1
- data/lib/capybara/selector/definition/fillable_field.rb +1 -1
- data/lib/capybara/selector/definition/radio_button.rb +1 -1
- data/lib/capybara/selector/definition.rb +4 -2
- data/lib/capybara/selector/filter_set.rb +4 -7
- data/lib/capybara/selector/regexp_disassembler.rb +2 -5
- data/lib/capybara/selector/selector.rb +5 -1
- data/lib/capybara/selector.rb +1 -0
- data/lib/capybara/selenium/driver.rb +28 -11
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +1 -1
- data/lib/capybara/selenium/driver_specializations/edge_driver.rb +1 -1
- data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +1 -1
- data/lib/capybara/selenium/extensions/html5_drag.rb +2 -4
- data/lib/capybara/selenium/logger_suppressor.rb +4 -0
- data/lib/capybara/selenium/node.rb +74 -23
- data/lib/capybara/selenium/nodes/chrome_node.rb +1 -1
- data/lib/capybara/selenium/nodes/edge_node.rb +1 -1
- data/lib/capybara/selenium/nodes/firefox_node.rb +3 -3
- data/lib/capybara/selenium/nodes/safari_node.rb +4 -4
- data/lib/capybara/server/animation_disabler.rb +41 -23
- data/lib/capybara/server/middleware.rb +1 -1
- data/lib/capybara/session/config.rb +4 -2
- data/lib/capybara/session.rb +31 -32
- data/lib/capybara/spec/session/active_element_spec.rb +31 -0
- data/lib/capybara/spec/session/all_spec.rb +9 -13
- data/lib/capybara/spec/session/assert_text_spec.rb +17 -17
- data/lib/capybara/spec/session/attach_file_spec.rb +6 -0
- data/lib/capybara/spec/session/check_spec.rb +10 -0
- data/lib/capybara/spec/session/choose_spec.rb +6 -0
- data/lib/capybara/spec/session/current_scope_spec.rb +1 -1
- data/lib/capybara/spec/session/fill_in_spec.rb +6 -0
- data/lib/capybara/spec/session/find_spec.rb +6 -0
- data/lib/capybara/spec/session/has_ancestor_spec.rb +2 -2
- data/lib/capybara/spec/session/has_any_selectors_spec.rb +4 -0
- data/lib/capybara/spec/session/has_button_spec.rb +30 -0
- data/lib/capybara/spec/session/has_current_path_spec.rb +2 -2
- data/lib/capybara/spec/session/has_field_spec.rb +25 -1
- data/lib/capybara/spec/session/has_link_spec.rb +36 -0
- data/lib/capybara/spec/session/has_select_spec.rb +10 -4
- data/lib/capybara/spec/session/has_selector_spec.rb +15 -0
- data/lib/capybara/spec/session/has_text_spec.rb +6 -14
- data/lib/capybara/spec/session/node_spec.rb +66 -1
- data/lib/capybara/spec/session/reset_session_spec.rb +13 -0
- data/lib/capybara/spec/session/scroll_spec.rb +4 -4
- data/lib/capybara/spec/session/visit_spec.rb +20 -0
- data/lib/capybara/spec/session/window/window_spec.rb +1 -1
- data/lib/capybara/spec/session/within_spec.rb +13 -0
- data/lib/capybara/spec/spec_helper.rb +12 -5
- data/lib/capybara/spec/test_app.rb +91 -14
- data/lib/capybara/spec/views/animated.erb +1 -1
- data/lib/capybara/spec/views/form.erb +24 -3
- data/lib/capybara/spec/views/frame_child.erb +1 -1
- data/lib/capybara/spec/views/frame_one.erb +1 -1
- data/lib/capybara/spec/views/frame_parent.erb +1 -1
- data/lib/capybara/spec/views/frame_two.erb +1 -1
- data/lib/capybara/spec/views/initial_alert.erb +2 -1
- data/lib/capybara/spec/views/layout.erb +10 -0
- data/lib/capybara/spec/views/obscured.erb +1 -1
- data/lib/capybara/spec/views/offset.erb +2 -1
- data/lib/capybara/spec/views/path.erb +2 -2
- data/lib/capybara/spec/views/popup_one.erb +1 -1
- data/lib/capybara/spec/views/popup_two.erb +1 -1
- data/lib/capybara/spec/views/react.erb +2 -2
- data/lib/capybara/spec/views/scroll.erb +2 -1
- data/lib/capybara/spec/views/spatial.erb +1 -1
- data/lib/capybara/spec/views/with_animation.erb +2 -3
- data/lib/capybara/spec/views/with_base_tag.erb +2 -2
- data/lib/capybara/spec/views/with_dragula.erb +2 -2
- data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
- data/lib/capybara/spec/views/with_hover.erb +2 -2
- data/lib/capybara/spec/views/with_html.erb +3 -3
- data/lib/capybara/spec/views/with_jquery_animation.erb +1 -1
- data/lib/capybara/spec/views/with_js.erb +2 -3
- data/lib/capybara/spec/views/with_jstree.erb +1 -1
- data/lib/capybara/spec/views/with_namespace.erb +1 -0
- data/lib/capybara/spec/views/with_scope.erb +2 -2
- data/lib/capybara/spec/views/with_shadow.erb +31 -0
- data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
- data/lib/capybara/spec/views/with_sortable_js.erb +2 -2
- data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
- data/lib/capybara/spec/views/with_windows.erb +1 -1
- data/lib/capybara/spec/views/within_frames.erb +1 -1
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +1 -1
- data/lib/capybara.rb +23 -24
- data/spec/basic_node_spec.rb +16 -3
- data/spec/capybara_spec.rb +12 -0
- data/spec/counter_spec.rb +35 -0
- data/spec/dsl_spec.rb +5 -3
- data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
- data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
- data/spec/minitest_spec.rb +4 -0
- data/spec/minitest_spec_spec.rb +4 -0
- data/spec/per_session_config_spec.rb +1 -1
- data/spec/rack_test_spec.rb +28 -10
- data/spec/result_spec.rb +32 -35
- data/spec/rspec/features_spec.rb +3 -3
- data/spec/rspec/scenarios_spec.rb +1 -1
- data/spec/rspec/shared_spec_matchers.rb +3 -3
- data/spec/rspec_spec.rb +2 -2
- data/spec/sauce_spec_chrome.rb +3 -3
- data/spec/selector_spec.rb +4 -4
- data/spec/selenium_spec_chrome.rb +11 -10
- data/spec/selenium_spec_chrome_remote.rb +11 -8
- data/spec/selenium_spec_edge.rb +2 -0
- data/spec/selenium_spec_firefox.rb +15 -4
- data/spec/selenium_spec_firefox_remote.rb +4 -2
- data/spec/selenium_spec_ie.rb +6 -7
- data/spec/selenium_spec_safari.rb +33 -19
- data/spec/server_spec.rb +5 -5
- data/spec/shared_selenium_node.rb +0 -4
- data/spec/shared_selenium_session.rb +23 -14
- data/spec/spec_helper.rb +1 -1
- metadata +38 -14
- data/lib/capybara/spec/views/with_title.erb +0 -5
@@ -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
|
|
@@ -74,7 +74,6 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
74
74
|
|
75
75
|
describe '#fill_in_with empty string and no options' do
|
76
76
|
it 'should trigger change when clearing a field' do
|
77
|
-
pending "safaridriver doesn't trigger change for clear" if safari?(session)
|
78
77
|
session.visit('/with_js')
|
79
78
|
session.fill_in('with_change_event', with: '')
|
80
79
|
# click outside the field to trigger the change event
|
@@ -188,14 +187,12 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
188
187
|
|
189
188
|
it 'should generate standard events on changing value' do
|
190
189
|
pending "IE 11 doesn't support date input type" if ie?(session)
|
191
|
-
pending "Safari doesn't support date input type" if safari?(session)
|
192
190
|
session.fill_in('form_date', with: Date.today)
|
193
191
|
expect(session.evaluate_script('window.capybara_formDateFiredEvents')).to eq %w[focus input change]
|
194
192
|
end
|
195
193
|
|
196
194
|
it 'should not generate input and change events if the value is not changed' do
|
197
195
|
pending "IE 11 doesn't support date input type" if ie?(session)
|
198
|
-
pending "Safari doesn't support date input type" if safari?(session)
|
199
196
|
session.fill_in('form_date', with: Date.today)
|
200
197
|
session.fill_in('form_date', with: Date.today)
|
201
198
|
# Chrome adds an extra focus for some reason - ok for now
|
@@ -223,14 +220,14 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
223
220
|
end
|
224
221
|
|
225
222
|
describe '#send_keys' do
|
226
|
-
it 'defaults to sending keys to the
|
223
|
+
it 'defaults to sending keys to the active_element' do
|
227
224
|
session.visit('/form')
|
228
225
|
|
229
|
-
expect(session.
|
226
|
+
expect(session.active_element).to match_selector(:css, 'body')
|
230
227
|
|
231
228
|
session.send_keys(:tab)
|
232
229
|
|
233
|
-
expect(session.
|
230
|
+
expect(session.active_element).to match_selector(:css, '[tabindex="1"]')
|
234
231
|
end
|
235
232
|
end
|
236
233
|
|
@@ -283,6 +280,14 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
283
280
|
expect(element).to eq session.find(:id, 'form_title')
|
284
281
|
end
|
285
282
|
|
283
|
+
it 'returns a shadow root' do
|
284
|
+
pending "Geckodriver doesn't fully support shadow root yet" if firefox?(session)
|
285
|
+
session.visit('/with_shadow')
|
286
|
+
shadow = session.find(:css, '#shadow_host')
|
287
|
+
element = session.evaluate_script('arguments[0].shadowRoot', shadow)
|
288
|
+
expect(element).to be_instance_of(Capybara::Node::Element)
|
289
|
+
end
|
290
|
+
|
286
291
|
it 'can return arrays of nested elements' do
|
287
292
|
session.visit('/form')
|
288
293
|
elements = session.evaluate_script('document.querySelectorAll("#form_city option")')
|
@@ -339,17 +344,15 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
339
344
|
it 'can attach a directory' do
|
340
345
|
pending "Geckodriver doesn't support uploading a directory" if firefox?(session)
|
341
346
|
pending "Selenium remote doesn't support transferring a directory" if remote?(session)
|
342
|
-
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
|
347
|
+
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)
|
343
348
|
pending "IE doesn't support uploading a directory" if ie?(session)
|
344
349
|
pending 'Chrome/chromedriver 73 breaks this' if chrome?(session) && chrome_gte?(73, session) && chrome_lt?(75, session)
|
345
|
-
pending "Safari doesn't support uploading a directory" if safari?(session)
|
346
|
-
# pending "Edge/msedgedriver doesn't support directory upload" if edge?(session) && edge_gte?(75, session)
|
347
350
|
|
348
351
|
session.visit('/form')
|
349
352
|
test_file_dir = File.expand_path('./fixtures', File.dirname(__FILE__))
|
350
353
|
session.attach_file('Directory Upload', test_file_dir)
|
351
354
|
session.click_button('Upload Multiple')
|
352
|
-
expect(session
|
355
|
+
expect(session).to have_text('5 | ') # number of files
|
353
356
|
end
|
354
357
|
|
355
358
|
it 'can attach a relative file' do
|
@@ -358,7 +361,7 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
358
361
|
session.visit('/form')
|
359
362
|
session.attach_file('Single Document', 'spec/fixtures/capybara.csv')
|
360
363
|
session.click_button('Upload Single')
|
361
|
-
expect(session
|
364
|
+
expect(session).to have_text('Content-type: text/csv')
|
362
365
|
end
|
363
366
|
end
|
364
367
|
|
@@ -381,6 +384,12 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
381
384
|
@animation_session = Capybara::Session.new(session.mode, TestApp.new)
|
382
385
|
end
|
383
386
|
|
387
|
+
it 'should add CSS to the <head> element' do
|
388
|
+
@animation_session.visit('with_animation')
|
389
|
+
|
390
|
+
expect(@animation_session).to have_selector(:css, 'head > style', text: 'transition: none', visible: :hidden)
|
391
|
+
end
|
392
|
+
|
384
393
|
it 'should disable CSS transitions' do
|
385
394
|
@animation_session.visit('with_animation')
|
386
395
|
@animation_session.click_link('transition me away')
|
@@ -514,8 +523,8 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
514
523
|
|
515
524
|
it 'can query attributes with strange characters' do
|
516
525
|
session.visit('/form')
|
517
|
-
expect(session).to have_selector(:element,
|
518
|
-
expect(session).to have_selector(:element,
|
526
|
+
expect(session).to have_selector(:element, '{custom}': true)
|
527
|
+
expect(session).to have_selector(:element, '{custom}': 'abcdef')
|
519
528
|
end
|
520
529
|
end
|
521
530
|
|
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,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.38.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
|
-
cert_chain:
|
12
|
-
-
|
13
|
-
date: 2021-01-30 00:00:00.000000000 Z
|
11
|
+
cert_chain: []
|
12
|
+
date: 2022-11-04 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: addressable
|
@@ -26,6 +25,20 @@ dependencies:
|
|
26
25
|
- - ">="
|
27
26
|
- !ruby/object:Gem::Version
|
28
27
|
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: matrix
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
29
42
|
- !ruby/object:Gem::Dependency
|
30
43
|
name: mini_mime
|
31
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -372,16 +385,22 @@ dependencies:
|
|
372
385
|
name: selenium-webdriver
|
373
386
|
requirement: !ruby/object:Gem::Requirement
|
374
387
|
requirements:
|
375
|
-
- - "
|
388
|
+
- - ">="
|
389
|
+
- !ruby/object:Gem::Version
|
390
|
+
version: 3.142.7
|
391
|
+
- - "<"
|
376
392
|
- !ruby/object:Gem::Version
|
377
|
-
version: '
|
393
|
+
version: '5.0'
|
378
394
|
type: :development
|
379
395
|
prerelease: false
|
380
396
|
version_requirements: !ruby/object:Gem::Requirement
|
381
397
|
requirements:
|
382
|
-
- - "
|
398
|
+
- - ">="
|
399
|
+
- !ruby/object:Gem::Version
|
400
|
+
version: 3.142.7
|
401
|
+
- - "<"
|
383
402
|
- !ruby/object:Gem::Version
|
384
|
-
version: '
|
403
|
+
version: '5.0'
|
385
404
|
- !ruby/object:Gem::Dependency
|
386
405
|
name: sinatra
|
387
406
|
requirement: !ruby/object:Gem::Requirement
|
@@ -468,6 +487,7 @@ files:
|
|
468
487
|
- lib/capybara/node/finders.rb
|
469
488
|
- lib/capybara/node/matchers.rb
|
470
489
|
- lib/capybara/node/simple.rb
|
490
|
+
- lib/capybara/queries/active_element_query.rb
|
471
491
|
- lib/capybara/queries/ancestor_query.rb
|
472
492
|
- lib/capybara/queries/base_query.rb
|
473
493
|
- lib/capybara/queries/current_path_query.rb
|
@@ -587,6 +607,7 @@ files:
|
|
587
607
|
- lib/capybara/spec/session/accept_alert_spec.rb
|
588
608
|
- lib/capybara/spec/session/accept_confirm_spec.rb
|
589
609
|
- lib/capybara/spec/session/accept_prompt_spec.rb
|
610
|
+
- lib/capybara/spec/session/active_element_spec.rb
|
590
611
|
- lib/capybara/spec/session/all_spec.rb
|
591
612
|
- lib/capybara/spec/session/ancestor_spec.rb
|
592
613
|
- lib/capybara/spec/session/assert_all_of_selectors_spec.rb
|
@@ -686,6 +707,7 @@ files:
|
|
686
707
|
- lib/capybara/spec/views/header_links.erb
|
687
708
|
- lib/capybara/spec/views/host_links.erb
|
688
709
|
- lib/capybara/spec/views/initial_alert.erb
|
710
|
+
- lib/capybara/spec/views/layout.erb
|
689
711
|
- lib/capybara/spec/views/obscured.erb
|
690
712
|
- lib/capybara/spec/views/offset.erb
|
691
713
|
- lib/capybara/spec/views/path.erb
|
@@ -712,10 +734,10 @@ files:
|
|
712
734
|
- lib/capybara/spec/views/with_namespace.erb
|
713
735
|
- lib/capybara/spec/views/with_scope.erb
|
714
736
|
- lib/capybara/spec/views/with_scope_other.erb
|
737
|
+
- lib/capybara/spec/views/with_shadow.erb
|
715
738
|
- lib/capybara/spec/views/with_simple_html.erb
|
716
739
|
- lib/capybara/spec/views/with_slow_unload.erb
|
717
740
|
- lib/capybara/spec/views/with_sortable_js.erb
|
718
|
-
- lib/capybara/spec/views/with_title.erb
|
719
741
|
- lib/capybara/spec/views/with_unload_alert.erb
|
720
742
|
- lib/capybara/spec/views/with_windows.erb
|
721
743
|
- lib/capybara/spec/views/within_frames.erb
|
@@ -723,6 +745,7 @@ files:
|
|
723
745
|
- lib/capybara/window.rb
|
724
746
|
- spec/basic_node_spec.rb
|
725
747
|
- spec/capybara_spec.rb
|
748
|
+
- spec/counter_spec.rb
|
726
749
|
- spec/css_builder_spec.rb
|
727
750
|
- spec/css_splitter_spec.rb
|
728
751
|
- spec/dsl_spec.rb
|
@@ -765,7 +788,8 @@ licenses:
|
|
765
788
|
metadata:
|
766
789
|
changelog_uri: https://github.com/teamcapybara/capybara/blob/master/History.md
|
767
790
|
source_code_uri: https://github.com/teamcapybara/capybara
|
768
|
-
|
791
|
+
rubygems_mfa_required: 'true'
|
792
|
+
post_install_message:
|
769
793
|
rdoc_options: []
|
770
794
|
require_paths:
|
771
795
|
- lib
|
@@ -773,15 +797,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
773
797
|
requirements:
|
774
798
|
- - ">="
|
775
799
|
- !ruby/object:Gem::Version
|
776
|
-
version: 2.
|
800
|
+
version: 2.7.0
|
777
801
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
778
802
|
requirements:
|
779
803
|
- - ">="
|
780
804
|
- !ruby/object:Gem::Version
|
781
805
|
version: '0'
|
782
806
|
requirements: []
|
783
|
-
rubygems_version: 3.
|
784
|
-
signing_key:
|
807
|
+
rubygems_version: 3.3.7
|
808
|
+
signing_key:
|
785
809
|
specification_version: 4
|
786
810
|
summary: Capybara aims to simplify the process of integration testing Rack applications,
|
787
811
|
such as Rails, Sinatra or Merb
|