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.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/History.md +48 -1
  5. data/README.md +22 -18
  6. data/lib/capybara.rb +28 -3
  7. data/lib/capybara/cucumber.rb +0 -2
  8. data/lib/capybara/driver/base.rb +9 -1
  9. data/lib/capybara/empty.html +4 -0
  10. data/lib/capybara/node/actions.rb +1 -1
  11. data/lib/capybara/node/finders.rb +3 -3
  12. data/lib/capybara/node/matchers.rb +22 -18
  13. data/lib/capybara/node/simple.rb +5 -3
  14. data/lib/capybara/query.rb +1 -0
  15. data/lib/capybara/rack_test/browser.rb +5 -4
  16. data/lib/capybara/rack_test/form.rb +5 -2
  17. data/lib/capybara/rack_test/node.rb +2 -1
  18. data/lib/capybara/result.rb +2 -1
  19. data/lib/capybara/rspec.rb +7 -0
  20. data/lib/capybara/rspec/features.rb +2 -0
  21. data/lib/capybara/rspec/matchers.rb +6 -6
  22. data/lib/capybara/selector.rb +3 -1
  23. data/lib/capybara/selenium/driver.rb +14 -2
  24. data/lib/capybara/selenium/node.rb +18 -5
  25. data/lib/capybara/server.rb +3 -7
  26. data/lib/capybara/session.rb +59 -17
  27. data/lib/capybara/spec/public/test.js +1 -1
  28. data/lib/capybara/spec/session/assert_selector.rb +18 -0
  29. data/lib/capybara/spec/session/attach_file_spec.rb +5 -0
  30. data/lib/capybara/spec/session/check_spec.rb +14 -0
  31. data/lib/capybara/spec/session/choose_spec.rb +14 -0
  32. data/lib/capybara/spec/session/click_button_spec.rb +20 -1
  33. data/lib/capybara/spec/session/fill_in_spec.rb +18 -2
  34. data/lib/capybara/spec/session/go_back_spec.rb +10 -0
  35. data/lib/capybara/spec/session/go_forward_spec.rb +12 -0
  36. data/lib/capybara/spec/session/has_button_spec.rb +24 -0
  37. data/lib/capybara/spec/session/has_field_spec.rb +48 -0
  38. data/lib/capybara/spec/session/has_text_spec.rb +18 -0
  39. data/lib/capybara/spec/session/node_spec.rb +36 -1
  40. data/lib/capybara/spec/session/reset_session_spec.rb +17 -2
  41. data/lib/capybara/spec/session/save_page_spec.rb +10 -4
  42. data/lib/capybara/spec/session/visit_spec.rb +16 -0
  43. data/lib/capybara/spec/session/within_frame_spec.rb +7 -0
  44. data/lib/capybara/spec/session/within_window_spec.rb +7 -0
  45. data/lib/capybara/spec/test_app.rb +1 -0
  46. data/lib/capybara/spec/views/form.erb +40 -0
  47. data/lib/capybara/spec/views/with_html.erb +5 -0
  48. data/lib/capybara/spec/views/with_js.erb +8 -0
  49. data/lib/capybara/version.rb +1 -1
  50. data/spec/capybara_spec.rb +1 -1
  51. data/spec/result_spec.rb +14 -0
  52. data/spec/rspec/features_spec.rb +15 -0
  53. data/spec/rspec/matchers_spec.rb +24 -1
  54. data/spec/selenium_spec.rb +8 -1
  55. data/spec/server_spec.rb +13 -5
  56. metadata +78 -98
  57. 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 the filename" do
40
+ it "returns an absolute path in pwd" do
41
41
  result = @session.save_page
42
- path = Dir.glob("capybara-*.html").first
43
- filename = path.split("/").last
44
- result.should == filename
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>
@@ -1,3 +1,3 @@
1
1
  module Capybara
2
- VERSION = '2.1.0'
2
+ VERSION = '2.2.0.rc1'
3
3
  end
@@ -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 = 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
@@ -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
@@ -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
@@ -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
@@ -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(:selenium, TestApp)
11
+ Selenium = Capybara::Session.new(:selenium_focus, TestApp)
5
12
  end
6
13
 
7
14
  Capybara::SpecHelper.run_specs TestSessions::Selenium, "selenium", :skip => [
@@ -18,13 +18,21 @@ describe Capybara::Server do
18
18
  end
19
19
 
20
20
  it "should bind to the specified host" do
21
- Capybara.server_host = '0.0.0.0'
21
+ begin
22
+ app = proc { |env| [200, {}, ['Hello Server!']] }
22
23
 
23
- app = proc { |env| [200, {}, ["Hello Server!"]]}
24
- server = Capybara::Server.new(app).boot
25
- server.host.should == '0.0.0.0'
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
- Capybara.server_host = nil
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.1.0
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
- - !binary |-
13
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURQRENDQWlTZ0F3SUJB
14
- Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJFTVJZd0ZBWURWUVFEREExcWIy
15
- NWgKY3k1dWFXTnJiR0Z6TVJVd0V3WUtDWkltaVpQeUxHUUJHUllGWjIxaGFX
16
- d3hFekFSQmdvSmtpYUprL0lzWkFFWgpGZ05qYjIwd0hoY05NVE13TWpFMU1q
17
- RTFOVE0yV2hjTk1UUXdNakUxTWpFMU5UTTJXakJFTVJZd0ZBWURWUVFECkRB
18
- MXFiMjVoY3k1dWFXTnJiR0Z6TVJVd0V3WUtDWkltaVpQeUxHUUJHUllGWjIx
19
- aGFXd3hFekFSQmdvSmtpYUoKay9Jc1pBRVpGZ05qYjIwd2dnRWlNQTBHQ1Nx
20
- R1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURiOUFaagpnTmRVS0lF
21
- Rmt0blJUZXJmWXNDcXBBRlk5N3F0VGJydWo0dUVLSmV5SFJMUjRGTTNzVWU0
22
- TjZZYjQ4YTNKTHBBCkhRMUVMaDVjU2RKZHl4OFRFWG1Lc2NycUVjYzJsWFNn
23
- YmtvRnB5bzZJQWNFT1NwQzl2bEFleUdwd2tLSS8rYlAKYld3M2pWMjM2cTBD
24
- cjdhRk1INm5tVXZKSnNhZE93TnlVWVpXQVRxT3Q2WDNRb0xpRXBoZjdTd2hM
25
- ekFaSnI2ZgpIaHZqSjBYbzJ5L0xpSmo5TjBnb09oVUw2dEM1d3M1ajR3eFA4
26
- WitZRlkwUTd4N1E2UlFCV2NDVWhjL0dBV2V4CjBlWFJqMlFPVHpWcnJJT25Q
27
- TjFqcWlmbnFxVTMwWW9NRk1oL2U2bzN4L3ppWU1uN3pBYkZYU2J0WERLQ0s0
28
- QlQKM3pHWmdDaXVlY3NwSHk5L0FnTUJBQUdqT1RBM01Ba0dBMVVkRXdRQ01B
29
- QXdIUVlEVlIwT0JCWUVGUGI4K0RZMApmbTlCWmxkYy9lYUtaeGZJNlh1Y01B
30
- c0dBMVVkRHdRRUF3SUVzREFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBCkp0
31
- WnJqZDlEczVyY0JWUDJMOXZFYTZGMm9zZXE3eWU4YmF2UW85VWg4MWZEQ2JW
32
- ZG5hWlBoeU10aDVRaGRJQkwKcEcrdWFmQ01BZmdVMHZRZU5YbkF6SXhtbHRu
33
- UDQrZTNJd1IwT2UyMWVVRDZsU1BTdkNvSWFRMmVEVnhvSFBQSgo1TnJKS3hq
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
- post_install_message: ! "IMPORTANT! Some of the defaults have changed in Capybara
402
- 2.1. If you're experiencing failures,\nplease revert to the old behaviour by setting:\n\n
403
- \ Capybara.configure do |config|\n config.match = :one\n config.exact_options
404
- = true\n config.ignore_hidden_elements = true\n config.visible_text_only
405
- = true\n end\n\nIf you're migrating from Capybara 1.x, try:\n\n Capybara.configure
406
- do |config|\n config.match = :prefer_exact\n config.ignore_hidden_elements
407
- = false\n end\n\nDetails here: http://www.elabs.se/blog/60-introducing-capybara-2-1\n\n"
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: '0'
402
+ version: 1.3.1
423
403
  requirements: []
424
404
  rubyforge_project: capybara
425
- rubygems_version: 1.8.25
405
+ rubygems_version: 2.0.6
426
406
  signing_key:
427
- specification_version: 3
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: []