capybara 2.1.0 → 2.2.0.rc1
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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.md +48 -1
- data/README.md +22 -18
- data/lib/capybara.rb +28 -3
- data/lib/capybara/cucumber.rb +0 -2
- data/lib/capybara/driver/base.rb +9 -1
- data/lib/capybara/empty.html +4 -0
- data/lib/capybara/node/actions.rb +1 -1
- data/lib/capybara/node/finders.rb +3 -3
- data/lib/capybara/node/matchers.rb +22 -18
- data/lib/capybara/node/simple.rb +5 -3
- data/lib/capybara/query.rb +1 -0
- data/lib/capybara/rack_test/browser.rb +5 -4
- data/lib/capybara/rack_test/form.rb +5 -2
- data/lib/capybara/rack_test/node.rb +2 -1
- data/lib/capybara/result.rb +2 -1
- data/lib/capybara/rspec.rb +7 -0
- data/lib/capybara/rspec/features.rb +2 -0
- data/lib/capybara/rspec/matchers.rb +6 -6
- data/lib/capybara/selector.rb +3 -1
- data/lib/capybara/selenium/driver.rb +14 -2
- data/lib/capybara/selenium/node.rb +18 -5
- data/lib/capybara/server.rb +3 -7
- data/lib/capybara/session.rb +59 -17
- data/lib/capybara/spec/public/test.js +1 -1
- data/lib/capybara/spec/session/assert_selector.rb +18 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +5 -0
- data/lib/capybara/spec/session/check_spec.rb +14 -0
- data/lib/capybara/spec/session/choose_spec.rb +14 -0
- data/lib/capybara/spec/session/click_button_spec.rb +20 -1
- data/lib/capybara/spec/session/fill_in_spec.rb +18 -2
- data/lib/capybara/spec/session/go_back_spec.rb +10 -0
- data/lib/capybara/spec/session/go_forward_spec.rb +12 -0
- data/lib/capybara/spec/session/has_button_spec.rb +24 -0
- data/lib/capybara/spec/session/has_field_spec.rb +48 -0
- data/lib/capybara/spec/session/has_text_spec.rb +18 -0
- data/lib/capybara/spec/session/node_spec.rb +36 -1
- data/lib/capybara/spec/session/reset_session_spec.rb +17 -2
- data/lib/capybara/spec/session/save_page_spec.rb +10 -4
- data/lib/capybara/spec/session/visit_spec.rb +16 -0
- data/lib/capybara/spec/session/within_frame_spec.rb +7 -0
- data/lib/capybara/spec/session/within_window_spec.rb +7 -0
- data/lib/capybara/spec/test_app.rb +1 -0
- data/lib/capybara/spec/views/form.erb +40 -0
- data/lib/capybara/spec/views/with_html.erb +5 -0
- data/lib/capybara/spec/views/with_js.erb +8 -0
- data/lib/capybara/version.rb +1 -1
- data/spec/capybara_spec.rb +1 -1
- data/spec/result_spec.rb +14 -0
- data/spec/rspec/features_spec.rb +15 -0
- data/spec/rspec/matchers_spec.rb +24 -1
- data/spec/selenium_spec.rb +8 -1
- data/spec/server_spec.rb +13 -5
- metadata +78 -98
- metadata.gz.sig +0 -0
@@ -37,11 +37,17 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
37
37
|
File.read("capybara-001122.html").should include("Another World")
|
38
38
|
end
|
39
39
|
|
40
|
-
it "returns
|
40
|
+
it "returns an absolute path in pwd" do
|
41
41
|
result = @session.save_page
|
42
|
-
path = Dir.glob("capybara-*.html").first
|
43
|
-
|
44
|
-
|
42
|
+
path = File.expand_path(Dir.glob("capybara-*.html").first, Dir.pwd)
|
43
|
+
result.should == path
|
44
|
+
end
|
45
|
+
|
46
|
+
it "returns an absolute path in given directory" do
|
47
|
+
Capybara.save_and_open_page_path = alternative_path
|
48
|
+
result = @session.save_page
|
49
|
+
path = File.expand_path(Dir.glob(alternative_path + "/capybara-*.html").first, alternative_path)
|
50
|
+
result.should == path
|
45
51
|
end
|
46
52
|
|
47
53
|
context "asset_host contains a string" do
|
@@ -17,6 +17,15 @@ Capybara::SpecHelper.spec '#visit' do
|
|
17
17
|
@session.should have_content('Another World')
|
18
18
|
end
|
19
19
|
|
20
|
+
it "should fetch a response when absolute URI doesn't have a trailing slash" do
|
21
|
+
# Preparation
|
22
|
+
@session.visit('/foo/bar')
|
23
|
+
root_uri = URI.parse(@session.current_url)
|
24
|
+
|
25
|
+
@session.visit("http://localhost:#{root_uri.port}")
|
26
|
+
@session.should have_content('Hello world!')
|
27
|
+
end
|
28
|
+
|
20
29
|
context "when Capybara.always_include_port is true" do
|
21
30
|
|
22
31
|
let(:root_uri) do
|
@@ -86,4 +95,11 @@ Capybara::SpecHelper.spec '#visit' do
|
|
86
95
|
@session.find('//input').click
|
87
96
|
@session.should have_content %r{http://.*/referer_base}
|
88
97
|
end
|
98
|
+
|
99
|
+
it "can set cookie if a blank path is specified" do
|
100
|
+
@session.visit("")
|
101
|
+
@session.visit('/get_cookie')
|
102
|
+
@session.should have_content('root cookie')
|
103
|
+
end
|
104
|
+
|
89
105
|
end
|
@@ -42,4 +42,11 @@ Capybara::SpecHelper.spec '#within_frame', :requires => [:frames] do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
|
+
it "should reset scope when changing frames" do
|
46
|
+
@session.within(:css, '#divInMainWindow') do
|
47
|
+
@session.within_frame 'parentFrame' do
|
48
|
+
@session.has_selector?(:css, "iframe#childFrame").should be_true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
45
52
|
end
|
@@ -35,4 +35,11 @@ Capybara::SpecHelper.spec '#within_window', :requires => [:windows] do
|
|
35
35
|
end
|
36
36
|
@session.find("//*[@id='divInMainWindow']").text.should eql 'This is the text for divInMainWindow'
|
37
37
|
end
|
38
|
+
it "should reset scope when switching windows" do
|
39
|
+
@session.within(:css, '#divInMainWindow') do
|
40
|
+
@session.within_window("secondPopup") do
|
41
|
+
@session.find("//*[@id='divInPopupTwo']").text.should eql 'This is the text of divInPopupTwo'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
38
45
|
end
|
@@ -13,6 +13,7 @@ class TestApp < Sinatra::Base
|
|
13
13
|
# Also check lib/capybara/spec/views/*.erb for pages not listed here
|
14
14
|
|
15
15
|
get '/' do
|
16
|
+
response.set_cookie('capybara', { value: 'root cookie', domain: request.host, path: request.path} )
|
16
17
|
'Hello world! <a href="with_html">Relative</a>'
|
17
18
|
end
|
18
19
|
|
@@ -136,6 +136,14 @@
|
|
136
136
|
<textarea name="form[description]" id="form_description">Descriptive text goes here</textarea>
|
137
137
|
<p>
|
138
138
|
|
139
|
+
<p>
|
140
|
+
<label for="form_newline">NewLine</label></br>
|
141
|
+
<textarea name="form[newline]" id="form_newline">
|
142
|
+
|
143
|
+
New line after and before textarea tag
|
144
|
+
</textarea>
|
145
|
+
</p>
|
146
|
+
|
139
147
|
<p>
|
140
148
|
<input type="radio" name="form[gender]" value="male" id="gender_male"/>
|
141
149
|
<label for="gender_male">Male</label>
|
@@ -153,6 +161,13 @@
|
|
153
161
|
<input type="checkbox" value="hamster" name="form[pets][]" id="form_pets_hamster" checked="checked"/>
|
154
162
|
<label for="form_pets_hamster">Hamster</label>
|
155
163
|
</p>
|
164
|
+
|
165
|
+
<p>
|
166
|
+
<input type="checkbox" name="form[valueless_checkbox]" id="valueless_checkbox" checked="checked"/>
|
167
|
+
<label for="valueless_checkbox">Valueless Checkbox</label>
|
168
|
+
<input type="radio" name="form[valueless_radio]" id="valueless_radio" checked="checked"/>
|
169
|
+
<label for="valueless_radio">Valueless Radio</label>
|
170
|
+
</p>
|
156
171
|
|
157
172
|
<p>
|
158
173
|
<label for="form_languages">Languages</label>
|
@@ -234,6 +249,13 @@
|
|
234
249
|
</label>
|
235
250
|
</p>
|
236
251
|
|
252
|
+
<p>
|
253
|
+
<label for="form_disabled_unchecked_checkbox">
|
254
|
+
Disabled Unchecked Checkbox
|
255
|
+
<input type="checkbox" name="form[disabled_unchecked_checkbox]" value="Should not see me" id="form_disabled_unchecked_checkbox" disabled="disabled" />
|
256
|
+
</label>
|
257
|
+
</p>
|
258
|
+
|
237
259
|
<p>
|
238
260
|
<label for="form_disabled_radio">
|
239
261
|
Disabled Radio
|
@@ -283,6 +305,8 @@
|
|
283
305
|
<button type="submit" name="form[other_form_button]" value="other_form_button" form="form1">Form1</button>
|
284
306
|
</form>
|
285
307
|
|
308
|
+
<button type="submit" name="form[no_form_button]" value="no_form_button">No Form</button>
|
309
|
+
|
286
310
|
<textarea name="form[outside_textarea]" form="form1">Some text here</textarea>
|
287
311
|
<select name="form[outside_select]" form="form1">
|
288
312
|
<option>Lisp</option>
|
@@ -317,6 +341,20 @@
|
|
317
341
|
<p>
|
318
342
|
</form>
|
319
343
|
|
344
|
+
<form action="/upload_empty" method="post" enctype="multipart/form-data">
|
345
|
+
<p>
|
346
|
+
<label>
|
347
|
+
<input type="file" name="form[file]" multiple="multiple"/>
|
348
|
+
Multiple empty files
|
349
|
+
</label>
|
350
|
+
</p>
|
351
|
+
|
352
|
+
<p>
|
353
|
+
<input type="hidden" name="form[dummy]" value="ensure params[:form] exists"/>
|
354
|
+
<input type="submit" value="Upload Empty Multiple"/>
|
355
|
+
<p>
|
356
|
+
</form>
|
357
|
+
|
320
358
|
<form action="/upload" method="post" enctype="multipart/form-data">
|
321
359
|
<p>
|
322
360
|
<label for="form_file_name">File Name</label>
|
@@ -402,3 +440,5 @@
|
|
402
440
|
<input type="submit" name="form[no_action]" value="No Action" />
|
403
441
|
</p>
|
404
442
|
</form>
|
443
|
+
|
444
|
+
|
@@ -66,6 +66,11 @@ banana</textarea>
|
|
66
66
|
<a href="/with_simple_html" title="hidden link" class="simple">hidden link</a>
|
67
67
|
</div>
|
68
68
|
|
69
|
+
<div id="hidden_attr" hidden="hidden">
|
70
|
+
<a id="hidden_attr_via_ancestor">hidden attribute ancestor link</a>
|
71
|
+
</div>
|
72
|
+
|
73
|
+
|
69
74
|
<div id="hidden-text">
|
70
75
|
Some of this text is <em style="display:none">hidden!</em>
|
71
76
|
</div>
|
@@ -36,6 +36,14 @@
|
|
36
36
|
<input type="text" name="with_change_event" value="default value" id="with_change_event"/>
|
37
37
|
</p>
|
38
38
|
|
39
|
+
<p>
|
40
|
+
<div contenteditable='true' id='existing_content_editable'>Editable content</div>
|
41
|
+
<div contenteditable='true' id='blank_content_editable' style='height: 1em;'></div>
|
42
|
+
<div contenteditable='true' style='height: 1em;'>
|
43
|
+
<div id='existing_content_editable_child' style='height: 1em;'>Content</div>
|
44
|
+
</div>
|
45
|
+
</p>
|
46
|
+
|
39
47
|
<p>
|
40
48
|
<input type="checkbox" id="checkbox_with_event"/>
|
41
49
|
</p>
|
data/lib/capybara/version.rb
CHANGED
data/spec/capybara_spec.rb
CHANGED
@@ -31,7 +31,7 @@ describe Capybara do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should default to a proc that calls run_default_server" do
|
34
|
-
mock_app =
|
34
|
+
mock_app = double('app')
|
35
35
|
Capybara.should_receive(:run_default_server).with(mock_app, 8000)
|
36
36
|
Capybara.server.call(mock_app, 8000)
|
37
37
|
end
|
data/spec/result_spec.rb
CHANGED
@@ -28,6 +28,10 @@ describe Capybara::Result do
|
|
28
28
|
result.last.text == 'Delta'
|
29
29
|
end
|
30
30
|
|
31
|
+
it 'can supports values_at method' do
|
32
|
+
result.values_at(0, 2).map(&:text).should == %w(Alpha Gamma)
|
33
|
+
end
|
34
|
+
|
31
35
|
it "can return an element by its index" do
|
32
36
|
result.at(1).text.should == 'Beta'
|
33
37
|
result[2].text.should == 'Gamma'
|
@@ -48,4 +52,14 @@ describe Capybara::Result do
|
|
48
52
|
memo += element.text[0]
|
49
53
|
end.should == 'ABGD'
|
50
54
|
end
|
55
|
+
|
56
|
+
it 'can be sampled' do
|
57
|
+
result.should include(result.sample)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'can be indexed' do
|
61
|
+
result.index do |el|
|
62
|
+
el.text == 'Gamma'
|
63
|
+
end.should == 2
|
64
|
+
end
|
51
65
|
end
|
data/spec/rspec/features_spec.rb
CHANGED
@@ -34,6 +34,21 @@ feature "Capybara's feature DSL" do
|
|
34
34
|
scenario "doesn't pollute the Object namespace" do
|
35
35
|
Object.new.respond_to?(:feature, true).should be_false
|
36
36
|
end
|
37
|
+
|
38
|
+
feature 'nested features' do
|
39
|
+
scenario 'work as expected' do
|
40
|
+
visit '/'
|
41
|
+
page.should have_content 'Hello world!'
|
42
|
+
end
|
43
|
+
|
44
|
+
scenario 'are marked in the metadata as capybara_feature' do
|
45
|
+
example.metadata[:capybara_feature].should be_true
|
46
|
+
end
|
47
|
+
|
48
|
+
scenario 'have a type of :feature' do
|
49
|
+
example.metadata[:type].should eq :feature
|
50
|
+
end
|
51
|
+
end
|
37
52
|
end
|
38
53
|
|
39
54
|
feature "given and given! aliases to let and let!" do
|
data/spec/rspec/matchers_spec.rb
CHANGED
@@ -519,21 +519,44 @@ describe Capybara::RSpecMatchers do
|
|
519
519
|
end
|
520
520
|
|
521
521
|
describe "have_field matcher" do
|
522
|
-
let(:html) { '<p><label>Text field<input type="text"/></label></p>' }
|
522
|
+
let(:html) { '<p><label>Text field<input type="text" value="some value"/></label></p>' }
|
523
523
|
|
524
524
|
it "gives proper description" do
|
525
525
|
have_field('Text field').description.should == "have field \"Text field\""
|
526
526
|
end
|
527
527
|
|
528
|
+
it "gives proper description for a given value" do
|
529
|
+
have_field('Text field', with: 'some value').description.should == "have field \"Text field\" with value \"some value\""
|
530
|
+
end
|
531
|
+
|
528
532
|
it "passes if there is such a field" do
|
529
533
|
html.should have_field('Text field')
|
530
534
|
end
|
531
535
|
|
536
|
+
it "passes if there is such a field with value" do
|
537
|
+
html.should have_field('Text field', with: 'some value')
|
538
|
+
end
|
539
|
+
|
532
540
|
it "fails if there is no such field" do
|
533
541
|
expect do
|
534
542
|
html.should have_field('No such Field')
|
535
543
|
end.to raise_error(/expected to find field "No such Field"/)
|
536
544
|
end
|
545
|
+
|
546
|
+
it "fails if there is such field but with false value" do
|
547
|
+
expect do
|
548
|
+
html.should have_field('Text field', with: 'false value')
|
549
|
+
end.to raise_error(/expected to find field "Text field"/)
|
550
|
+
end
|
551
|
+
|
552
|
+
it "treats a given value as a string" do
|
553
|
+
class Foo
|
554
|
+
def to_s
|
555
|
+
"some value"
|
556
|
+
end
|
557
|
+
end
|
558
|
+
html.should have_field('Text field', with: Foo.new)
|
559
|
+
end
|
537
560
|
end
|
538
561
|
|
539
562
|
describe "have_checked_field matcher" do
|
data/spec/selenium_spec.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require "selenium-webdriver"
|
3
|
+
|
4
|
+
Capybara.register_driver :selenium_focus do |app|
|
5
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
6
|
+
profile["focusmanager.testmode"] = true
|
7
|
+
Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile)
|
8
|
+
end
|
2
9
|
|
3
10
|
module TestSessions
|
4
|
-
Selenium = Capybara::Session.new(:
|
11
|
+
Selenium = Capybara::Session.new(:selenium_focus, TestApp)
|
5
12
|
end
|
6
13
|
|
7
14
|
Capybara::SpecHelper.run_specs TestSessions::Selenium, "selenium", :skip => [
|
data/spec/server_spec.rb
CHANGED
@@ -18,13 +18,21 @@ describe Capybara::Server do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should bind to the specified host" do
|
21
|
-
|
21
|
+
begin
|
22
|
+
app = proc { |env| [200, {}, ['Hello Server!']] }
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
Capybara.server_host = '127.0.0.1'
|
25
|
+
server = Capybara::Server.new(app).boot
|
26
|
+
res = Net::HTTP.get(URI("http://127.0.0.1:#{server.port}"))
|
27
|
+
expect(res).to eq('Hello Server!')
|
26
28
|
|
27
|
-
|
29
|
+
Capybara.server_host = '0.0.0.0'
|
30
|
+
server = Capybara::Server.new(app).boot
|
31
|
+
res = Net::HTTP.get(URI("http://127.0.0.1:#{server.port}"))
|
32
|
+
expect(res).to eq('Hello Server!')
|
33
|
+
ensure
|
34
|
+
Capybara.server_host = nil
|
35
|
+
end
|
28
36
|
end
|
29
37
|
|
30
38
|
it "should use specified port" do
|
metadata
CHANGED
@@ -1,112 +1,95 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.2.0.rc1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jonas Nicklas
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
MnV1TlYxeUdMbVZoWFVGRVQwT2tWdkJnZHhObXRiRTJyUmJ4WGp2NXhxVzZu
|
35
|
-
QnNnVkF6MHFTeEIzCjl5RFRaS1c3KytFbSt5RnVmTWxEcjcrMXJsOGNUeHYx
|
36
|
-
S2o0M0dldTVMVno3bi9sSFlLQWRqZTR1SjNlQnRhZ0kKZHdDSTZtbGVYT3I0
|
37
|
-
TVNSZXpmMTlaVUZyMENxbEZjcnBCU3lPYWtTdFFMTThMYTNFQW1oT0VVYTJV
|
38
|
-
RTJGSWdxNQpSMVNIMW5pKzNiSDdCNHRBa2JXc2tnPT0KLS0tLS1FTkQgQ0VS
|
39
|
-
VElGSUNBVEUtLS0tLQo=
|
40
|
-
date: 2013-04-09 00:00:00.000000000 Z
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDPDCCAiSgAwIBAgIBADANBgkqhkiG9w0BAQUFADBEMRYwFAYDVQQDDA1qb25h
|
14
|
+
cy5uaWNrbGFzMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
|
15
|
+
FgNjb20wHhcNMTMwMjE1MjE1NTM2WhcNMTQwMjE1MjE1NTM2WjBEMRYwFAYDVQQD
|
16
|
+
DA1qb25hcy5uaWNrbGFzMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJ
|
17
|
+
k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb9AZj
|
18
|
+
gNdUKIEFktnRTerfYsCqpAFY97qtTbruj4uEKJeyHRLR4FM3sUe4N6Yb48a3JLpA
|
19
|
+
HQ1ELh5cSdJdyx8TEXmKscrqEcc2lXSgbkoFpyo6IAcEOSpC9vlAeyGpwkKI/+bP
|
20
|
+
bWw3jV236q0Cr7aFMH6nmUvJJsadOwNyUYZWATqOt6X3QoLiEphf7SwhLzAZJr6f
|
21
|
+
HhvjJ0Xo2y/LiJj9N0goOhUL6tC5ws5j4wxP8Z+YFY0Q7x7Q6RQBWcCUhc/GAWex
|
22
|
+
0eXRj2QOTzVrrIOnPN1jqifnqqU30YoMFMh/e6o3x/ziYMn7zAbFXSbtXDKCK4BT
|
23
|
+
3zGZgCiuecspHy9/AgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFPb8+DY0
|
24
|
+
fm9BZldc/eaKZxfI6XucMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEA
|
25
|
+
JtZrjd9Ds5rcBVP2L9vEa6F2oseq7ye8bavQo9Uh81fDCbVdnaZPhyMth5QhdIBL
|
26
|
+
pG+uafCMAfgU0vQeNXnAzIxmltnP4+e3IwR0Oe21eUD6lSPSvCoIaQ2eDVxoHPPJ
|
27
|
+
5NrJKxj2uuNV1yGLmVhXUFET0OkVvBgdxNmtbE2rRbxXjv5xqW6nBsgVAz0qSxB3
|
28
|
+
9yDTZKW7++Em+yFufMlDr7+1rl8cTxv1Kj43Geu5LVz7n/lHYKAdje4uJ3eBtagI
|
29
|
+
dwCI6mleXOr4MSRezf19ZUFr0CqlFcrpBSyOakStQLM8La3EAmhOEUa2UE2FIgq5
|
30
|
+
R1SH1ni+3bH7B4tAkbWskg==
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
date: 2013-11-14 00:00:00.000000000 Z
|
41
33
|
dependencies:
|
42
34
|
- !ruby/object:Gem::Dependency
|
43
35
|
name: nokogiri
|
44
36
|
requirement: !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
37
|
requirements:
|
47
|
-
- -
|
38
|
+
- - '>='
|
48
39
|
- !ruby/object:Gem::Version
|
49
40
|
version: 1.3.3
|
50
41
|
type: :runtime
|
51
42
|
prerelease: false
|
52
43
|
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
44
|
requirements:
|
55
|
-
- -
|
45
|
+
- - '>='
|
56
46
|
- !ruby/object:Gem::Version
|
57
47
|
version: 1.3.3
|
58
48
|
- !ruby/object:Gem::Dependency
|
59
49
|
name: mime-types
|
60
50
|
requirement: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
51
|
requirements:
|
63
|
-
- -
|
52
|
+
- - '>='
|
64
53
|
- !ruby/object:Gem::Version
|
65
54
|
version: '1.16'
|
66
55
|
type: :runtime
|
67
56
|
prerelease: false
|
68
57
|
version_requirements: !ruby/object:Gem::Requirement
|
69
|
-
none: false
|
70
58
|
requirements:
|
71
|
-
- -
|
59
|
+
- - '>='
|
72
60
|
- !ruby/object:Gem::Version
|
73
61
|
version: '1.16'
|
74
62
|
- !ruby/object:Gem::Dependency
|
75
63
|
name: rack
|
76
64
|
requirement: !ruby/object:Gem::Requirement
|
77
|
-
none: false
|
78
65
|
requirements:
|
79
|
-
- -
|
66
|
+
- - '>='
|
80
67
|
- !ruby/object:Gem::Version
|
81
68
|
version: 1.0.0
|
82
69
|
type: :runtime
|
83
70
|
prerelease: false
|
84
71
|
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - '>='
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: 1.0.0
|
90
76
|
- !ruby/object:Gem::Dependency
|
91
77
|
name: rack-test
|
92
78
|
requirement: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
79
|
requirements:
|
95
|
-
- -
|
80
|
+
- - '>='
|
96
81
|
- !ruby/object:Gem::Version
|
97
82
|
version: 0.5.4
|
98
83
|
type: :runtime
|
99
84
|
prerelease: false
|
100
85
|
version_requirements: !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
86
|
requirements:
|
103
|
-
- -
|
87
|
+
- - '>='
|
104
88
|
- !ruby/object:Gem::Version
|
105
89
|
version: 0.5.4
|
106
90
|
- !ruby/object:Gem::Dependency
|
107
91
|
name: xpath
|
108
92
|
requirement: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
93
|
requirements:
|
111
94
|
- - ~>
|
112
95
|
- !ruby/object:Gem::Version
|
@@ -114,7 +97,6 @@ dependencies:
|
|
114
97
|
type: :runtime
|
115
98
|
prerelease: false
|
116
99
|
version_requirements: !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
100
|
requirements:
|
119
101
|
- - ~>
|
120
102
|
- !ruby/object:Gem::Version
|
@@ -122,7 +104,6 @@ dependencies:
|
|
122
104
|
- !ruby/object:Gem::Dependency
|
123
105
|
name: selenium-webdriver
|
124
106
|
requirement: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
107
|
requirements:
|
127
108
|
- - ~>
|
128
109
|
- !ruby/object:Gem::Version
|
@@ -130,7 +111,6 @@ dependencies:
|
|
130
111
|
type: :development
|
131
112
|
prerelease: false
|
132
113
|
version_requirements: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
114
|
requirements:
|
135
115
|
- - ~>
|
136
116
|
- !ruby/object:Gem::Version
|
@@ -138,129 +118,113 @@ dependencies:
|
|
138
118
|
- !ruby/object:Gem::Dependency
|
139
119
|
name: sinatra
|
140
120
|
requirement: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
121
|
requirements:
|
143
|
-
- -
|
122
|
+
- - '>='
|
144
123
|
- !ruby/object:Gem::Version
|
145
124
|
version: 0.9.4
|
146
125
|
type: :development
|
147
126
|
prerelease: false
|
148
127
|
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
128
|
requirements:
|
151
|
-
- -
|
129
|
+
- - '>='
|
152
130
|
- !ruby/object:Gem::Version
|
153
131
|
version: 0.9.4
|
154
132
|
- !ruby/object:Gem::Dependency
|
155
133
|
name: rspec
|
156
134
|
requirement: !ruby/object:Gem::Requirement
|
157
|
-
none: false
|
158
135
|
requirements:
|
159
|
-
- -
|
136
|
+
- - '>='
|
160
137
|
- !ruby/object:Gem::Version
|
161
138
|
version: 2.2.0
|
162
139
|
type: :development
|
163
140
|
prerelease: false
|
164
141
|
version_requirements: !ruby/object:Gem::Requirement
|
165
|
-
none: false
|
166
142
|
requirements:
|
167
|
-
- -
|
143
|
+
- - '>='
|
168
144
|
- !ruby/object:Gem::Version
|
169
145
|
version: 2.2.0
|
170
146
|
- !ruby/object:Gem::Dependency
|
171
147
|
name: launchy
|
172
148
|
requirement: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
149
|
requirements:
|
175
|
-
- -
|
150
|
+
- - '>='
|
176
151
|
- !ruby/object:Gem::Version
|
177
152
|
version: 2.0.4
|
178
153
|
type: :development
|
179
154
|
prerelease: false
|
180
155
|
version_requirements: !ruby/object:Gem::Requirement
|
181
|
-
none: false
|
182
156
|
requirements:
|
183
|
-
- -
|
157
|
+
- - '>='
|
184
158
|
- !ruby/object:Gem::Version
|
185
159
|
version: 2.0.4
|
186
160
|
- !ruby/object:Gem::Dependency
|
187
161
|
name: yard
|
188
162
|
requirement: !ruby/object:Gem::Requirement
|
189
|
-
none: false
|
190
163
|
requirements:
|
191
|
-
- -
|
164
|
+
- - '>='
|
192
165
|
- !ruby/object:Gem::Version
|
193
166
|
version: 0.5.8
|
194
167
|
type: :development
|
195
168
|
prerelease: false
|
196
169
|
version_requirements: !ruby/object:Gem::Requirement
|
197
|
-
none: false
|
198
170
|
requirements:
|
199
|
-
- -
|
171
|
+
- - '>='
|
200
172
|
- !ruby/object:Gem::Version
|
201
173
|
version: 0.5.8
|
202
174
|
- !ruby/object:Gem::Dependency
|
203
175
|
name: fuubar
|
204
176
|
requirement: !ruby/object:Gem::Requirement
|
205
|
-
none: false
|
206
177
|
requirements:
|
207
|
-
- -
|
178
|
+
- - '>='
|
208
179
|
- !ruby/object:Gem::Version
|
209
180
|
version: 0.0.1
|
210
181
|
type: :development
|
211
182
|
prerelease: false
|
212
183
|
version_requirements: !ruby/object:Gem::Requirement
|
213
|
-
none: false
|
214
184
|
requirements:
|
215
|
-
- -
|
185
|
+
- - '>='
|
216
186
|
- !ruby/object:Gem::Version
|
217
187
|
version: 0.0.1
|
218
188
|
- !ruby/object:Gem::Dependency
|
219
189
|
name: cucumber
|
220
190
|
requirement: !ruby/object:Gem::Requirement
|
221
|
-
none: false
|
222
191
|
requirements:
|
223
|
-
- -
|
192
|
+
- - '>='
|
224
193
|
- !ruby/object:Gem::Version
|
225
194
|
version: 0.10.5
|
226
195
|
type: :development
|
227
196
|
prerelease: false
|
228
197
|
version_requirements: !ruby/object:Gem::Requirement
|
229
|
-
none: false
|
230
198
|
requirements:
|
231
|
-
- -
|
199
|
+
- - '>='
|
232
200
|
- !ruby/object:Gem::Version
|
233
201
|
version: 0.10.5
|
234
202
|
- !ruby/object:Gem::Dependency
|
235
203
|
name: rake
|
236
204
|
requirement: !ruby/object:Gem::Requirement
|
237
|
-
none: false
|
238
205
|
requirements:
|
239
|
-
- -
|
206
|
+
- - '>='
|
240
207
|
- !ruby/object:Gem::Version
|
241
208
|
version: '0'
|
242
209
|
type: :development
|
243
210
|
prerelease: false
|
244
211
|
version_requirements: !ruby/object:Gem::Requirement
|
245
|
-
none: false
|
246
212
|
requirements:
|
247
|
-
- -
|
213
|
+
- - '>='
|
248
214
|
- !ruby/object:Gem::Version
|
249
215
|
version: '0'
|
250
216
|
- !ruby/object:Gem::Dependency
|
251
217
|
name: pry
|
252
218
|
requirement: !ruby/object:Gem::Requirement
|
253
|
-
none: false
|
254
219
|
requirements:
|
255
|
-
- -
|
220
|
+
- - '>='
|
256
221
|
- !ruby/object:Gem::Version
|
257
222
|
version: '0'
|
258
223
|
type: :development
|
259
224
|
prerelease: false
|
260
225
|
version_requirements: !ruby/object:Gem::Requirement
|
261
|
-
none: false
|
262
226
|
requirements:
|
263
|
-
- -
|
227
|
+
- - '>='
|
264
228
|
- !ruby/object:Gem::Version
|
265
229
|
version: '0'
|
266
230
|
description: Capybara is an integration testing tool for rack based web applications.
|
@@ -275,6 +239,7 @@ files:
|
|
275
239
|
- lib/capybara/driver/base.rb
|
276
240
|
- lib/capybara/driver/node.rb
|
277
241
|
- lib/capybara/dsl.rb
|
242
|
+
- lib/capybara/empty.html
|
278
243
|
- lib/capybara/helpers.rb
|
279
244
|
- lib/capybara/node/actions.rb
|
280
245
|
- lib/capybara/node/base.rb
|
@@ -325,6 +290,8 @@ files:
|
|
325
290
|
- lib/capybara/spec/session/find_link_spec.rb
|
326
291
|
- lib/capybara/spec/session/find_spec.rb
|
327
292
|
- lib/capybara/spec/session/first_spec.rb
|
293
|
+
- lib/capybara/spec/session/go_back_spec.rb
|
294
|
+
- lib/capybara/spec/session/go_forward_spec.rb
|
328
295
|
- lib/capybara/spec/session/has_button_spec.rb
|
329
296
|
- lib/capybara/spec/session/has_css_spec.rb
|
330
297
|
- lib/capybara/spec/session/has_field_spec.rb
|
@@ -397,34 +364,47 @@ files:
|
|
397
364
|
- History.md
|
398
365
|
- License.txt
|
399
366
|
homepage: http://github.com/jnicklas/capybara
|
400
|
-
licenses:
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
367
|
+
licenses:
|
368
|
+
- MIT
|
369
|
+
metadata: {}
|
370
|
+
post_install_message: |+
|
371
|
+
IMPORTANT! Some of the defaults have changed in Capybara 2.1. If you're experiencing failures,
|
372
|
+
please revert to the old behaviour by setting:
|
373
|
+
|
374
|
+
Capybara.configure do |config|
|
375
|
+
config.match = :one
|
376
|
+
config.exact_options = true
|
377
|
+
config.ignore_hidden_elements = true
|
378
|
+
config.visible_text_only = true
|
379
|
+
end
|
380
|
+
|
381
|
+
If you're migrating from Capybara 1.x, try:
|
382
|
+
|
383
|
+
Capybara.configure do |config|
|
384
|
+
config.match = :prefer_exact
|
385
|
+
config.ignore_hidden_elements = false
|
386
|
+
end
|
387
|
+
|
388
|
+
Details here: http://www.elabs.se/blog/60-introducing-capybara-2-1
|
389
|
+
|
408
390
|
rdoc_options: []
|
409
391
|
require_paths:
|
410
392
|
- lib
|
411
393
|
required_ruby_version: !ruby/object:Gem::Requirement
|
412
|
-
none: false
|
413
394
|
requirements:
|
414
|
-
- -
|
395
|
+
- - '>='
|
415
396
|
- !ruby/object:Gem::Version
|
416
397
|
version: 1.9.3
|
417
398
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
418
|
-
none: false
|
419
399
|
requirements:
|
420
|
-
- -
|
400
|
+
- - '>'
|
421
401
|
- !ruby/object:Gem::Version
|
422
|
-
version:
|
402
|
+
version: 1.3.1
|
423
403
|
requirements: []
|
424
404
|
rubyforge_project: capybara
|
425
|
-
rubygems_version:
|
405
|
+
rubygems_version: 2.0.6
|
426
406
|
signing_key:
|
427
|
-
specification_version:
|
407
|
+
specification_version: 4
|
428
408
|
summary: Capybara aims to simplify the process of integration testing Rack applications,
|
429
409
|
such as Rails, Sinatra or Merb
|
430
410
|
test_files: []
|