capybara 2.14.0 → 2.14.1
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 +12 -0
- data/README.md +1 -1
- data/lib/capybara.rb +16 -15
- data/lib/capybara/minitest.rb +92 -113
- data/lib/capybara/minitest/spec.rb +12 -37
- data/lib/capybara/node/matchers.rb +6 -5
- data/lib/capybara/queries/base_query.rb +4 -0
- data/lib/capybara/queries/current_path_query.rb +1 -0
- data/lib/capybara/queries/selector_query.rb +39 -12
- data/lib/capybara/queries/text_query.rb +1 -1
- data/lib/capybara/queries/title_query.rb +1 -0
- data/lib/capybara/rack_test/driver.rb +1 -0
- data/lib/capybara/rspec/matcher_proxies.rb +10 -6
- data/lib/capybara/rspec/matchers.rb +29 -0
- data/lib/capybara/selector.rb +61 -50
- data/lib/capybara/selector/expression_filter.rb +40 -0
- data/lib/capybara/selector/filter_set.rb +22 -3
- data/lib/capybara/selector/selector.rb +33 -12
- data/lib/capybara/selenium/driver.rb +130 -25
- data/lib/capybara/selenium/node.rb +3 -3
- data/lib/capybara/session/config.rb +29 -23
- data/lib/capybara/session/matchers.rb +3 -0
- data/lib/capybara/spec/session/accept_alert_spec.rb +1 -1
- data/lib/capybara/spec/session/all_spec.rb +2 -1
- data/lib/capybara/spec/session/assert_selector.rb +1 -1
- data/lib/capybara/spec/session/assert_title.rb +22 -9
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +1 -1
- data/lib/capybara/spec/session/find_spec.rb +3 -2
- data/lib/capybara/spec/session/first_spec.rb +10 -5
- data/lib/capybara/spec/session/has_css_spec.rb +11 -0
- data/lib/capybara/spec/session/has_current_path_spec.rb +5 -3
- data/lib/capybara/spec/session/has_select_spec.rb +62 -4
- data/lib/capybara/spec/session/has_text_spec.rb +5 -3
- data/lib/capybara/spec/session/has_title_spec.rb +4 -2
- data/lib/capybara/spec/session/has_xpath_spec.rb +5 -3
- data/lib/capybara/spec/session/node_spec.rb +8 -4
- data/lib/capybara/spec/session/window/become_closed_spec.rb +4 -4
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +4 -4
- data/lib/capybara/spec/spec_helper.rb +1 -1
- data/lib/capybara/spec/views/form.erb +22 -1
- data/lib/capybara/spec/views/with_html.erb +1 -1
- data/lib/capybara/version.rb +1 -1
- data/spec/capybara_spec.rb +16 -0
- data/spec/filter_set_spec.rb +28 -0
- data/spec/minitest_spec_spec.rb +4 -4
- data/spec/per_session_config_spec.rb +4 -4
- data/spec/result_spec.rb +20 -0
- data/spec/selector_spec.rb +2 -1
- data/spec/selenium_spec_chrome.rb +12 -1
- data/spec/selenium_spec_firefox.rb +2 -1
- data/spec/selenium_spec_marionette.rb +4 -3
- data/spec/shared_selenium_session.rb +14 -7
- metadata +18 -2
@@ -22,12 +22,12 @@ Capybara::SpecHelper.spec '#window_opened_by', requires: [:windows] do
|
|
22
22
|
Capybara.using_wait_time 2 do
|
23
23
|
button=@session.find(:css, '#openWindowWithLongerTimeout')
|
24
24
|
expect do
|
25
|
-
@session.window_opened_by(wait: 0.
|
25
|
+
@session.window_opened_by(wait: 0.3) do
|
26
26
|
button.click
|
27
27
|
end
|
28
28
|
end.to raise_error(Capybara::WindowError, zero_windows_message)
|
29
29
|
end
|
30
|
-
@session.document.synchronize(
|
30
|
+
@session.document.synchronize(5, errors: [Capybara::CapybaraError]) do
|
31
31
|
raise Capybara::CapybaraError if @session.windows.size != 2
|
32
32
|
end
|
33
33
|
end
|
@@ -46,7 +46,7 @@ Capybara::SpecHelper.spec '#window_opened_by', requires: [:windows] do
|
|
46
46
|
context 'without :wait option' do
|
47
47
|
it 'should raise error if default_max_wait_time is less than timeout' do
|
48
48
|
button = @session.find(:css, '#openWindowWithTimeout')
|
49
|
-
Capybara.using_wait_time 0.
|
49
|
+
Capybara.using_wait_time 0.1 do
|
50
50
|
expect do
|
51
51
|
@session.window_opened_by do
|
52
52
|
button.click
|
@@ -60,7 +60,7 @@ Capybara::SpecHelper.spec '#window_opened_by', requires: [:windows] do
|
|
60
60
|
|
61
61
|
it 'should find window if default_max_wait_time is more than timeout' do
|
62
62
|
button = @session.find(:css, '#openWindowWithTimeout')
|
63
|
-
Capybara.using_wait_time
|
63
|
+
Capybara.using_wait_time 5 do
|
64
64
|
window = @session.window_opened_by do
|
65
65
|
button.click
|
66
66
|
end
|
@@ -235,6 +235,17 @@ New line after and before textarea tag
|
|
235
235
|
</select>
|
236
236
|
</p>
|
237
237
|
|
238
|
+
<!-- invisible multiselect and options -->
|
239
|
+
<p style="display: none">
|
240
|
+
<label for="form_dessert">Dessert</label>
|
241
|
+
<select name="form[dessert]" id="form_dessert" multiple="multiple">
|
242
|
+
<option selected="selected">Pudding</option>
|
243
|
+
<option>Lava cake</option>
|
244
|
+
<option selected="selected">Tiramisu</option>
|
245
|
+
<option>Panna cotta</option>
|
246
|
+
</select>
|
247
|
+
</p>
|
248
|
+
|
238
249
|
<!-- visible select with invisible selected option (which some browsers may treat as visible) -->
|
239
250
|
<p>
|
240
251
|
<label for="form_sorbet">Sorbet</label>
|
@@ -245,6 +256,17 @@ New line after and before textarea tag
|
|
245
256
|
</select>
|
246
257
|
</p>
|
247
258
|
|
259
|
+
<!-- visible multiselect with invisible selected options (which some browsers may treat as visible) -->
|
260
|
+
<p>
|
261
|
+
<label for="form_cake">Cake</label>
|
262
|
+
<select name="form[cake]" id="form_cake" multiple="multiple">
|
263
|
+
<option>Butter Cake</option>
|
264
|
+
<option selected="selected" style="display: none">Chocolate Cake</option>
|
265
|
+
<option>Strawberry Cake</option>
|
266
|
+
<option selected="selected" style="display: none">Sponge Cake</option>
|
267
|
+
</select>
|
268
|
+
</p>
|
269
|
+
|
248
270
|
<p>
|
249
271
|
<span>First address<span>
|
250
272
|
<label for='address1_street'>Street</label>
|
@@ -593,4 +615,3 @@ New line after and before textarea tag
|
|
593
615
|
<label for="asterisk_input">With Asterisk<abbr title="required">*</abbr></label>
|
594
616
|
<input id="asterisk_input" type="number"value="2016"/>
|
595
617
|
</p>
|
596
|
-
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<span class="number">42</span>
|
14
14
|
<span>Other span</span>
|
15
15
|
|
16
|
-
<p class="para" id="first">
|
16
|
+
<p class="para" id="first" data-random="abc\def">
|
17
17
|
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
18
18
|
tempor incididunt ut <a href="/with_simple_html" title="awesome title" class="simple">labore</a>
|
19
19
|
et dolore magna aliqua. Ut enim ad minim veniam,
|
data/lib/capybara/version.rb
CHANGED
data/spec/capybara_spec.rb
CHANGED
@@ -79,6 +79,22 @@ RSpec.describe Capybara do
|
|
79
79
|
Capybara.server(&server)
|
80
80
|
expect(Capybara.server).to eq(server)
|
81
81
|
end
|
82
|
+
|
83
|
+
it "should have :webrick registered" do
|
84
|
+
require 'rack/handler/webrick'
|
85
|
+
mock_app = double('app')
|
86
|
+
Capybara.server = :webrick
|
87
|
+
expect(Rack::Handler::WEBrick).to receive(:run)
|
88
|
+
Capybara.server.call(mock_app, 8000)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should have :puma registered" do
|
92
|
+
require 'rack/handler/puma'
|
93
|
+
mock_app = double('app')
|
94
|
+
Capybara.server = :puma
|
95
|
+
expect(Rack::Handler::Puma).to receive(:run)
|
96
|
+
Capybara.server.call(mock_app, 8000)
|
97
|
+
end
|
82
98
|
end
|
83
99
|
|
84
100
|
describe 'app_host' do
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
RSpec.describe Capybara::Selector::FilterSet do
|
5
|
+
after do
|
6
|
+
Capybara::Selector::FilterSet.remove(:test)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "allows node filters" do
|
10
|
+
fs = Capybara::Selector::FilterSet.add(:test) do
|
11
|
+
filter(:node_test, :boolean) { |node, value| true }
|
12
|
+
expression_filter(:expression_test, :boolean) { |expr, value| true }
|
13
|
+
end
|
14
|
+
|
15
|
+
expect(fs.node_filters.keys).to include(:node_test)
|
16
|
+
expect(fs.node_filters.keys).not_to include(:expression_test)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "allows expression filters" do
|
20
|
+
fs = Capybara::Selector::FilterSet.add(:test) do
|
21
|
+
filter(:node_test, :boolean) { |node, value| true }
|
22
|
+
expression_filter(:expression_test, :boolean) { |expr, value| true }
|
23
|
+
end
|
24
|
+
|
25
|
+
expect(fs.expression_filters.keys).to include(:expression_test)
|
26
|
+
expect(fs.expression_filters.keys).not_to include(:node_test)
|
27
|
+
end
|
28
|
+
end
|
data/spec/minitest_spec_spec.rb
CHANGED
@@ -37,10 +37,10 @@ class MinitestSpecTest < Minitest::Spec
|
|
37
37
|
page.must_have_xpath('.//input[@id="customer_email"]')
|
38
38
|
page.wont_have_xpath('.//select[@id="not_form_title"]')
|
39
39
|
page.wont_have_xpath('.//input[@id="customer_email"]') { |el| el[:id] == "not_customer_email" }
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
select = find(:select, 'form_title')
|
41
|
+
select.must_have_xpath('.//option[@class="title"]')
|
42
|
+
select.must_have_xpath('.//option', count: 1) { |option| option[:class] != 'title' && !option.disabled?}
|
43
|
+
select.wont_have_xpath('.//input[@id="customer_email"]')
|
44
44
|
end
|
45
45
|
|
46
46
|
it "support css expectations" do
|
@@ -40,12 +40,12 @@ RSpec.describe Capybara::SessionConfig do
|
|
40
40
|
it "doesn't allow session config when false" do
|
41
41
|
Capybara.threadsafe = false
|
42
42
|
session = Capybara::Session.new(:rack_test, TestApp)
|
43
|
-
expect { session.config.default_selector = :title }.to raise_error
|
43
|
+
expect { session.config.default_selector = :title }.to raise_error(/Per session settings are only supported when Capybara.threadsafe == true/)
|
44
44
|
expect do
|
45
45
|
session.configure do |config|
|
46
46
|
config.exact = true
|
47
47
|
end
|
48
|
-
end.to raise_error
|
48
|
+
end.to raise_error(/Session configuration is only supported when Capybara.threadsafe == true/)
|
49
49
|
end
|
50
50
|
|
51
51
|
it "uses the config from the session" do
|
@@ -60,8 +60,8 @@ RSpec.describe Capybara::SessionConfig do
|
|
60
60
|
it "won't change threadsafe once a session is created" do
|
61
61
|
Capybara.threadsafe = true
|
62
62
|
Capybara.threadsafe = false
|
63
|
-
|
64
|
-
expect { Capybara.threadsafe = true }.to raise_error
|
63
|
+
Capybara::Session.new(:rack_test, TestApp)
|
64
|
+
expect { Capybara.threadsafe = true }.to raise_error(/Threadsafe setting cannot be changed once a session is created/)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
data/spec/result_spec.rb
CHANGED
@@ -71,6 +71,26 @@ RSpec.describe Capybara::Result do
|
|
71
71
|
expect(result[-1].text).to eq 'Delta'
|
72
72
|
end
|
73
73
|
|
74
|
+
it 'works with filter blocks' do
|
75
|
+
result = string.all('//li') { |node| node.text == 'Alpha' }
|
76
|
+
expect(result.size).to eq 1
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should catch invalid element errors during filtering' do
|
80
|
+
allow_any_instance_of(Capybara::Node::Simple).to receive(:text).and_raise(StandardError)
|
81
|
+
allow_any_instance_of(Capybara::Node::Simple).to receive(:session).and_return(double("session", driver: double("driver", invalid_element_errors: [StandardError] )))
|
82
|
+
result = string.all('//li', text: 'Alpha')
|
83
|
+
expect(result.size).to eq 0
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should return non-invalid element errors during filtering' do
|
87
|
+
allow_any_instance_of(Capybara::Node::Simple).to receive(:text).and_raise(StandardError)
|
88
|
+
allow_any_instance_of(Capybara::Node::Simple).to receive(:session).and_return(double("session", driver: double("driver", invalid_element_errors: [ArgumentError] )))
|
89
|
+
expect do
|
90
|
+
string.all('//li', text: 'Alpha').to_a
|
91
|
+
end.to raise_error(StandardError)
|
92
|
+
end
|
93
|
+
|
74
94
|
#Not a great test but it indirectly tests what is needed
|
75
95
|
it "should evaluate filters lazily" do
|
76
96
|
skip 'JRuby has an issue with lazy enumerator evaluation' if RUBY_PLATFORM == 'java'
|
data/spec/selector_spec.rb
CHANGED
@@ -28,7 +28,7 @@ RSpec.describe Capybara do
|
|
28
28
|
<input type="hidden" id="hidden_field" value="this is hidden"/>
|
29
29
|
<a href="#">link</a>
|
30
30
|
<fieldset></fieldset>
|
31
|
-
<select>
|
31
|
+
<select id="select">
|
32
32
|
<option value="a">A</option>
|
33
33
|
<option value="b" disabled>B</option>
|
34
34
|
<option value="c" selected>C</option>
|
@@ -177,6 +177,7 @@ RSpec.describe Capybara do
|
|
177
177
|
|
178
178
|
it "finds by type" do
|
179
179
|
expect(string.find(:field, type: 'file')[:id]).to eq 'file'
|
180
|
+
expect(string.find(:field, type: 'select')[:id]).to eq 'select'
|
180
181
|
end
|
181
182
|
end
|
182
183
|
|
@@ -5,11 +5,19 @@ require 'shared_selenium_session'
|
|
5
5
|
|
6
6
|
Capybara.register_driver :selenium_chrome do |app|
|
7
7
|
args = ENV['TRAVIS'] ? ['no-sandbox' ] : []
|
8
|
+
if ENV['CAPYBARA_CHROME_HEADLESS']
|
9
|
+
args << 'headless'
|
10
|
+
Selenium::WebDriver::Chrome.path='/usr/bin/google-chrome-beta' if ENV['TRAVIS']
|
11
|
+
end
|
8
12
|
Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => args)
|
9
13
|
end
|
10
14
|
|
11
15
|
Capybara.register_driver :selenium_chrome_clear_storage do |app|
|
12
16
|
args = ENV['TRAVIS'] ? ['no-sandbox' ] : []
|
17
|
+
if ENV['CAPYBARA_CHROME_HEADLESS']
|
18
|
+
args << 'headless'
|
19
|
+
Selenium::WebDriver::Chrome.path='/usr/bin/google-chrome-beta' if ENV['TRAVIS']
|
20
|
+
end
|
13
21
|
Capybara::Selenium::Driver.new(app, :browser => :chrome,
|
14
22
|
:args => args,
|
15
23
|
clear_local_storage: true,
|
@@ -21,11 +29,14 @@ module TestSessions
|
|
21
29
|
end
|
22
30
|
|
23
31
|
skipped_tests = [:response_headers, :status_code, :trigger]
|
24
|
-
skipped_tests << :windows if ENV['TRAVIS'] &&
|
32
|
+
skipped_tests << :windows if ENV['TRAVIS'] && ENV['SKIP_WINDOW']
|
33
|
+
# skip window tests when headless for now - closing a window not supported by chromedriver/chrome
|
34
|
+
skipped_tests << :windows if ENV['TRAVIS'] && ENV['CAPYBARA_CHROME_HEADLESS']
|
25
35
|
|
26
36
|
Capybara::SpecHelper.run_specs TestSessions::Chrome, "selenium_chrome", capybara_skip: skipped_tests
|
27
37
|
|
28
38
|
RSpec.describe "Capybara::Session with chrome" do
|
39
|
+
include Capybara::SpecHelper
|
29
40
|
include_examples "Capybara::Session", TestSessions::Chrome, :selenium_chrome
|
30
41
|
|
31
42
|
context "storage" do
|
@@ -31,11 +31,12 @@ skipped_tests = [
|
|
31
31
|
:status_code,
|
32
32
|
:trigger
|
33
33
|
]
|
34
|
-
skipped_tests << :windows if ENV['TRAVIS'] &&
|
34
|
+
skipped_tests << :windows if ENV['TRAVIS'] && ENV['SKIP_WINDOW']
|
35
35
|
|
36
36
|
Capybara::SpecHelper.run_specs TestSessions::Selenium, "selenium", capybara_skip: skipped_tests
|
37
37
|
|
38
38
|
RSpec.describe "Capybara::Session with legacy firefox" do
|
39
|
+
include Capybara::SpecHelper
|
39
40
|
include_examples "Capybara::Session", TestSessions::Selenium, :selenium_firefox
|
40
41
|
include_examples Capybara::RSpecMatchers, TestSessions::Selenium, :selenium_firefox
|
41
42
|
|
@@ -8,7 +8,7 @@ Capybara.register_driver :selenium_marionette do |app|
|
|
8
8
|
Capybara::Selenium::Driver.new(
|
9
9
|
app,
|
10
10
|
browser: :firefox,
|
11
|
-
desired_capabilities:
|
11
|
+
desired_capabilities: {marionette: true}
|
12
12
|
)
|
13
13
|
end
|
14
14
|
|
@@ -16,7 +16,7 @@ Capybara.register_driver :selenium_marionette_clear_storage do |app|
|
|
16
16
|
Capybara::Selenium::Driver.new(
|
17
17
|
app,
|
18
18
|
browser: :firefox,
|
19
|
-
desired_capabilities:
|
19
|
+
desired_capabilities: {marionette: true},
|
20
20
|
clear_local_storage: true,
|
21
21
|
clear_session_storage: true
|
22
22
|
)
|
@@ -31,11 +31,12 @@ skipped_tests = [
|
|
31
31
|
:status_code,
|
32
32
|
:trigger
|
33
33
|
]
|
34
|
-
skipped_tests << :windows if ENV['TRAVIS'] &&
|
34
|
+
skipped_tests << :windows if ENV['TRAVIS'] && ENV['SKIP_WINDOW']
|
35
35
|
|
36
36
|
Capybara::SpecHelper.run_specs TestSessions::SeleniumMarionette, "selenium", capybara_skip: skipped_tests
|
37
37
|
|
38
38
|
RSpec.describe "Capybara::Session with firefox" do
|
39
|
+
include Capybara::SpecHelper
|
39
40
|
include_examples "Capybara::Session", TestSessions::SeleniumMarionette, :selenium_marionette
|
40
41
|
include_examples Capybara::RSpecMatchers, TestSessions::SeleniumMarionette, :selenium_marionette
|
41
42
|
end
|
@@ -34,6 +34,8 @@ RSpec.shared_examples "Capybara::Session" do |session, mode|
|
|
34
34
|
before do
|
35
35
|
@current_dir = Dir.getwd
|
36
36
|
Dir.chdir(File.join(File.dirname(__FILE__), '..'))
|
37
|
+
@env = { 'SELENIUM_BROWSER' => @session.driver.options[:browser].to_s }
|
38
|
+
@env['LEGACY_FIREFOX'] = 'TRUE' if mode == :selenium_firefox
|
37
39
|
end
|
38
40
|
|
39
41
|
after do
|
@@ -41,22 +43,19 @@ RSpec.shared_examples "Capybara::Session" do |session, mode|
|
|
41
43
|
end
|
42
44
|
|
43
45
|
it "should have return code 1 when running selenium_driver_rspec_failure.rb" do
|
44
|
-
env
|
45
|
-
'LEGACY_FIREFOX' => (mode == :selenium_firefox ? 'TRUE' : nil) }
|
46
|
-
system(env, 'rspec spec/fixtures/selenium_driver_rspec_failure.rb', out: File::NULL, err: File::NULL)
|
46
|
+
system(@env, 'rspec spec/fixtures/selenium_driver_rspec_failure.rb', out: File::NULL, err: File::NULL)
|
47
47
|
expect($?.exitstatus).to eq(1)
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should have return code 0 when running selenium_driver_rspec_success.rb" do
|
51
|
-
env
|
52
|
-
'LEGACY_FIREFOX' => (mode == :selenium_firefox ? 'TRUE' : nil) }
|
53
|
-
system(env, 'rspec spec/fixtures/selenium_driver_rspec_success.rb', out: File::NULL, err: File::NULL)
|
51
|
+
system(@env, 'rspec spec/fixtures/selenium_driver_rspec_success.rb', out: File::NULL, err: File::NULL)
|
54
52
|
expect($?.exitstatus).to eq(0)
|
55
53
|
end
|
56
54
|
end
|
57
55
|
|
58
56
|
describe "#accept_alert" do
|
59
57
|
it "supports a blockless mode" do
|
58
|
+
skip "Headless Chrome doesn't support blockless modal methods" if @session.driver.send(:headless_chrome?)
|
60
59
|
@session.visit('/with_js')
|
61
60
|
@session.click_link('Open alert')
|
62
61
|
@session.accept_alert
|
@@ -102,7 +101,7 @@ RSpec.shared_examples "Capybara::Session" do |session, mode|
|
|
102
101
|
|
103
102
|
context "#fill_in with { clear: Array } fill_options" do
|
104
103
|
it 'should pass the array through to the element' do
|
105
|
-
pending "selenium-webdriver/geckodriver doesn't support complex sets of characters" if @session
|
104
|
+
pending "selenium-webdriver/geckodriver doesn't support complex sets of characters" if marionette?(@session)
|
106
105
|
#this is mainly for use with [[:control, 'a'], :backspace] - however since that is platform dependant I'm testing with something less useful
|
107
106
|
@session.visit('/form')
|
108
107
|
@session.fill_in('form_first_name', with: 'Harry',
|
@@ -120,6 +119,14 @@ RSpec.shared_examples "Capybara::Session" do |session, mode|
|
|
120
119
|
end
|
121
120
|
end
|
122
121
|
|
122
|
+
describe "all with disappearing elements" do
|
123
|
+
it "ignores stale elements in results" do
|
124
|
+
@session.visit('/path')
|
125
|
+
elements = @session.all(:link) { |node| raise Selenium::WebDriver::Error::StaleElementReferenceError }
|
126
|
+
expect(elements.size).to eq 0
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
123
130
|
describe "#evaluate_script" do
|
124
131
|
it "can return an element" do
|
125
132
|
@session.visit('/form')
|
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: 2.14.
|
4
|
+
version: 2.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Walpole
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
12
|
- gem-public_cert.pem
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-06-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -228,6 +228,20 @@ dependencies:
|
|
228
228
|
- - ">="
|
229
229
|
- !ruby/object:Gem::Version
|
230
230
|
version: '0'
|
231
|
+
- !ruby/object:Gem::Dependency
|
232
|
+
name: puma
|
233
|
+
requirement: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - ">="
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
238
|
+
type: :development
|
239
|
+
prerelease: false
|
240
|
+
version_requirements: !ruby/object:Gem::Requirement
|
241
|
+
requirements:
|
242
|
+
- - ">="
|
243
|
+
- !ruby/object:Gem::Version
|
244
|
+
version: '0'
|
231
245
|
- !ruby/object:Gem::Dependency
|
232
246
|
name: pry
|
233
247
|
requirement: !ruby/object:Gem::Requirement
|
@@ -309,6 +323,7 @@ files:
|
|
309
323
|
- lib/capybara/rspec/matchers.rb
|
310
324
|
- lib/capybara/selector.rb
|
311
325
|
- lib/capybara/selector/css.rb
|
326
|
+
- lib/capybara/selector/expression_filter.rb
|
312
327
|
- lib/capybara/selector/filter.rb
|
313
328
|
- lib/capybara/selector/filter_set.rb
|
314
329
|
- lib/capybara/selector/selector.rb
|
@@ -433,6 +448,7 @@ files:
|
|
433
448
|
- spec/basic_node_spec.rb
|
434
449
|
- spec/capybara_spec.rb
|
435
450
|
- spec/dsl_spec.rb
|
451
|
+
- spec/filter_set_spec.rb
|
436
452
|
- spec/fixtures/capybara.csv
|
437
453
|
- spec/fixtures/selenium_driver_rspec_failure.rb
|
438
454
|
- spec/fixtures/selenium_driver_rspec_success.rb
|