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.
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: []