capybara 2.1.0 → 2.2.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|