capybara 1.0.1 → 1.1.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 (39) hide show
  1. data/History.txt +25 -0
  2. data/README.rdoc +18 -3
  3. data/lib/capybara.rb +6 -1
  4. data/lib/capybara/driver/base.rb +4 -0
  5. data/lib/capybara/dsl.rb +23 -1
  6. data/lib/capybara/node/base.rb +19 -3
  7. data/lib/capybara/node/element.rb +39 -16
  8. data/lib/capybara/node/finders.rb +21 -29
  9. data/lib/capybara/node/matchers.rb +6 -6
  10. data/lib/capybara/node/simple.rb +3 -7
  11. data/lib/capybara/rack_test/browser.rb +21 -13
  12. data/lib/capybara/rack_test/driver.rb +1 -1
  13. data/lib/capybara/rack_test/node.rb +2 -1
  14. data/lib/capybara/selenium/driver.rb +8 -1
  15. data/lib/capybara/session.rb +16 -3
  16. data/lib/capybara/spec/driver.rb +5 -5
  17. data/lib/capybara/spec/public/test.js +5 -0
  18. data/lib/capybara/spec/session/click_button_spec.rb +1 -1
  19. data/lib/capybara/spec/session/click_link_spec.rb +6 -0
  20. data/lib/capybara/spec/session/current_host_spec.rb +6 -0
  21. data/lib/capybara/spec/session/find_spec.rb +6 -0
  22. data/lib/capybara/spec/session/javascript.rb +67 -0
  23. data/lib/capybara/spec/session/within_spec.rb +11 -0
  24. data/lib/capybara/spec/test_app.rb +13 -1
  25. data/lib/capybara/spec/views/form.erb +1 -1
  26. data/lib/capybara/spec/views/with_html.erb +1 -0
  27. data/lib/capybara/spec/views/with_js.erb +7 -2
  28. data/lib/capybara/version.rb +1 -1
  29. data/spec/driver/rack_test_driver_spec.rb +6 -0
  30. data/spec/driver/selenium_driver_spec.rb +21 -0
  31. data/spec/dsl_spec.rb +44 -0
  32. data/spec/fixtures/selenium_driver_rspec_failure.rb +8 -0
  33. data/spec/fixtures/selenium_driver_rspec_success.rb +8 -0
  34. data/spec/rspec_spec.rb +0 -1
  35. data/spec/session/rack_test_session_spec.rb +12 -0
  36. data/spec/spec_helper.rb +3 -0
  37. metadata +114 -173
  38. data/lib/capybara/spec/public/jquery-ui.js +0 -35
  39. data/lib/capybara/spec/public/jquery.js +0 -19
@@ -335,7 +335,7 @@
335
335
  </p>
336
336
  <p>
337
337
  <label for="html5_color">Html5 Color</label>
338
- <input type="color" name="form[html5_color]" value="#FFF" id="html5_color"/>
338
+ <input type="color" name="form[html5_color]" value="#FFFFFF" id="html5_color"/>
339
339
  </p>
340
340
 
341
341
  <p>
@@ -39,6 +39,7 @@
39
39
  <a href="#anchor">Anchor</a>
40
40
  <a href="/with_simple_html#anchor">Anchor on different page</a>
41
41
  <a href="/with_html#anchor">Anchor on same page</a>
42
+ <a href="with_html">Relative</a>
42
43
  <input type="text" value="" id="test_field">
43
44
  <input type="text" checked="checked" id="checked_field">
44
45
  <a href="/redirect"><img width="20" height="20" alt="very fine image" /></a>
@@ -2,8 +2,8 @@
2
2
  <head>
3
3
  <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
4
4
  <title>with_js</title>
5
- <script src="/jquery.js" type="text/javascript" charset="utf-8"></script>
6
- <script src="/jquery-ui.js" type="text/javascript" charset="utf-8"></script>
5
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
6
+ <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script>
7
7
  <script src="/test.js" type="text/javascript" charset="utf-8"></script>
8
8
  </head>
9
9
 
@@ -38,6 +38,11 @@
38
38
  <p>
39
39
  <input type="submit" id="fire_ajax_request" value="Fire Ajax Request"/>
40
40
  </p>
41
+
42
+ <p>
43
+ <a id="reload-link" href="#">Reload!</a>
44
+ <div id="reload-me"><em>waiting to be reloaded</em></div>
45
+ </p>
41
46
  </body>
42
47
  </html>
43
48
 
@@ -1,3 +1,3 @@
1
1
  module Capybara
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.0.rc1'
3
3
  end
@@ -79,5 +79,11 @@ describe Capybara::RackTest::Driver do
79
79
  @driver.find('.//input').first.click
80
80
  @driver.body.should include('foobar')
81
81
  end
82
+
83
+ it 'should keep headers on redirects' do
84
+ @driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
85
+ @driver.visit('/get_header_via_redirect')
86
+ @driver.body.should include('foobar')
87
+ end
82
88
  end
83
89
  end
@@ -26,4 +26,25 @@ describe Capybara::Selenium::Driver do
26
26
  browser.quit
27
27
  end
28
28
  end
29
+
30
+ describe "exit codes" do
31
+ before do
32
+ @current_dir = Dir.getwd
33
+ Dir.chdir(File.join(File.dirname(__FILE__), '..', '..'))
34
+ end
35
+
36
+ after do
37
+ Dir.chdir(@current_dir)
38
+ end
39
+
40
+ it "should have return code 1 when running selenium_driver_rspec_failure.rb" do
41
+ `rspec spec/fixtures/selenium_driver_rspec_failure.rb`
42
+ $?.exitstatus.should be 1
43
+ end
44
+
45
+ it "should have return code 0 when running selenium_driver_rspec_success.rb" do
46
+ `rspec spec/fixtures/selenium_driver_rspec_success.rb`
47
+ $?.exitstatus.should be 0
48
+ end
49
+ end
29
50
  end
@@ -76,6 +76,17 @@ describe Capybara::DSL do
76
76
  Capybara.current_driver.should == Capybara.default_driver
77
77
  end
78
78
 
79
+ it 'should return the driver to what it was previously' do
80
+ Capybara.current_driver = :selenium
81
+ Capybara.using_driver(:culerity) do
82
+ Capybara.using_driver(:rack_test) do
83
+ Capybara.current_driver.should == :rack_test
84
+ end
85
+ Capybara.current_driver.should == :culerity
86
+ end
87
+ Capybara.current_driver.should == :selenium
88
+ end
89
+
79
90
  it 'should yield the passed block' do
80
91
  called = false
81
92
  Capybara.using_driver(:selenium) { called = true }
@@ -83,6 +94,30 @@ describe Capybara::DSL do
83
94
  end
84
95
  end
85
96
 
97
+ describe '#using_wait_time' do
98
+ it "should switch the wait time and switch it back" do
99
+ in_block = nil
100
+ Capybara.using_wait_time 6 do
101
+ in_block = Capybara.default_wait_time
102
+ end
103
+ in_block.should == 6
104
+ Capybara.default_wait_time.should == 0
105
+ end
106
+
107
+ it "should ensure wait time is reset" do
108
+ expect do
109
+ Capybara.using_wait_time 6 do
110
+ raise "hell"
111
+ end
112
+ end.to raise_error
113
+ Capybara.default_wait_time.should == 0
114
+ end
115
+
116
+ after do
117
+ Capybara.default_wait_time = 0
118
+ end
119
+ end
120
+
86
121
  describe '#app' do
87
122
  it "should be changeable" do
88
123
  Capybara.app = "foobar"
@@ -204,6 +239,15 @@ describe Capybara::DSL do
204
239
  foo = klass.new
205
240
  foo.using_session(:name)
206
241
  end
242
+
243
+ it "should provide a 'using_wait_time' shortcut" do
244
+ klass = Class.new do
245
+ include Capybara::DSL
246
+ end
247
+ Capybara.should_receive(:using_wait_time).with(6)
248
+ foo = klass.new
249
+ foo.using_wait_time(6)
250
+ end
207
251
  end
208
252
 
209
253
  end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe Capybara::Selenium::Driver do
4
+ it "should exit with a non-zero exit status" do
5
+ browser = Capybara::Selenium::Driver.new(TestApp).browser
6
+ true.should == false
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe Capybara::Selenium::Driver do
4
+ it "should exit with a zero exit status" do
5
+ browser = Capybara::Selenium::Driver.new(TestApp).browser
6
+ true.should == true
7
+ end
8
+ end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'capybara/rspec'
3
2
 
4
3
  Capybara.app = TestApp
5
4
 
@@ -20,10 +20,22 @@ describe Capybara::Session do
20
20
 
21
21
  describe '#click_link' do
22
22
  it "should use data-method if available" do
23
+ @session.driver.options[:respect_data_method] = true
23
24
  @session.visit "/with_html"
24
25
  @session.click_link "A link with data-method"
25
26
  @session.body.should include('The requested object was deleted')
26
27
  end
28
+
29
+ it "should not use data-method if option is false" do
30
+ @session.driver.options[:respect_data_method] = false
31
+ @session.visit "/with_html"
32
+ @session.click_link "A link with data-method"
33
+ @session.body.should include('Not deleted')
34
+ end
35
+
36
+ after do
37
+ @session.driver.options[:respect_data_method] = true
38
+ end
27
39
  end
28
40
 
29
41
  describe "#attach_file" do
@@ -14,6 +14,9 @@ RSpec.configure do |config|
14
14
  end
15
15
  end
16
16
 
17
+ # Required here instead of in rspec_spec to avoid RSpec deprecation warning
18
+ require 'capybara/rspec'
19
+
17
20
  require 'capybara/spec/driver'
18
21
  require 'capybara/spec/session'
19
22
 
metadata CHANGED
@@ -1,209 +1,157 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- - 1
9
- version: 1.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0.rc1
5
+ prerelease: 6
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Jonas Nicklas
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-08-12 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-30 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: nokogiri
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2157399040 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 3
31
- - 3
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
32
21
  version: 1.3.3
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: mime-types
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2157399040
25
+ - !ruby/object:Gem::Dependency
26
+ name: mime-types
27
+ requirement: &2157398520 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 1
45
- - 16
46
- version: "1.16"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '1.16'
47
33
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: selenium-webdriver
51
34
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2157398520
36
+ - !ruby/object:Gem::Dependency
37
+ name: selenium-webdriver
38
+ requirement: &2157398040 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
40
+ requirements:
55
41
  - - ~>
56
- - !ruby/object:Gem::Version
57
- segments:
58
- - 2
59
- - 0
60
- version: "2.0"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.0'
61
44
  type: :runtime
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: rack
65
45
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2157398040
47
+ - !ruby/object:Gem::Dependency
48
+ name: rack
49
+ requirement: &2157397560 !ruby/object:Gem::Requirement
67
50
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- segments:
72
- - 1
73
- - 0
74
- - 0
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
75
54
  version: 1.0.0
76
55
  type: :runtime
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: rack-test
80
56
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2157397560
58
+ - !ruby/object:Gem::Dependency
59
+ name: rack-test
60
+ requirement: &2157397080 !ruby/object:Gem::Requirement
82
61
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- segments:
87
- - 0
88
- - 5
89
- - 4
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
90
65
  version: 0.5.4
91
66
  type: :runtime
92
- version_requirements: *id005
93
- - !ruby/object:Gem::Dependency
94
- name: xpath
95
67
  prerelease: false
96
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2157397080
69
+ - !ruby/object:Gem::Dependency
70
+ name: xpath
71
+ requirement: &2157396600 !ruby/object:Gem::Requirement
97
72
  none: false
98
- requirements:
73
+ requirements:
99
74
  - - ~>
100
- - !ruby/object:Gem::Version
101
- segments:
102
- - 0
103
- - 1
104
- - 4
75
+ - !ruby/object:Gem::Version
105
76
  version: 0.1.4
106
77
  type: :runtime
107
- version_requirements: *id006
108
- - !ruby/object:Gem::Dependency
109
- name: sinatra
110
78
  prerelease: false
111
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *2157396600
80
+ - !ruby/object:Gem::Dependency
81
+ name: sinatra
82
+ requirement: &2157396120 !ruby/object:Gem::Requirement
112
83
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- segments:
117
- - 0
118
- - 9
119
- - 4
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
120
87
  version: 0.9.4
121
88
  type: :development
122
- version_requirements: *id007
123
- - !ruby/object:Gem::Dependency
124
- name: rspec
125
89
  prerelease: false
126
- requirement: &id008 !ruby/object:Gem::Requirement
90
+ version_requirements: *2157396120
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec
93
+ requirement: &2157395640 !ruby/object:Gem::Requirement
127
94
  none: false
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- segments:
132
- - 2
133
- - 0
134
- - 0
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
135
98
  version: 2.0.0
136
99
  type: :development
137
- version_requirements: *id008
138
- - !ruby/object:Gem::Dependency
139
- name: launchy
140
100
  prerelease: false
141
- requirement: &id009 !ruby/object:Gem::Requirement
101
+ version_requirements: *2157395640
102
+ - !ruby/object:Gem::Dependency
103
+ name: launchy
104
+ requirement: &2157395160 !ruby/object:Gem::Requirement
142
105
  none: false
143
- requirements:
106
+ requirements:
144
107
  - - ~>
145
- - !ruby/object:Gem::Version
146
- segments:
147
- - 2
148
- - 0
149
- - 2
150
- version: 2.0.2
108
+ - !ruby/object:Gem::Version
109
+ version: 2.0.4
151
110
  type: :development
152
- version_requirements: *id009
153
- - !ruby/object:Gem::Dependency
154
- name: yard
155
111
  prerelease: false
156
- requirement: &id010 !ruby/object:Gem::Requirement
112
+ version_requirements: *2157395160
113
+ - !ruby/object:Gem::Dependency
114
+ name: yard
115
+ requirement: &2157419240 !ruby/object:Gem::Requirement
157
116
  none: false
158
- requirements:
159
- - - ">="
160
- - !ruby/object:Gem::Version
161
- segments:
162
- - 0
163
- - 5
164
- - 8
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
165
120
  version: 0.5.8
166
121
  type: :development
167
- version_requirements: *id010
168
- - !ruby/object:Gem::Dependency
169
- name: fuubar
170
122
  prerelease: false
171
- requirement: &id011 !ruby/object:Gem::Requirement
123
+ version_requirements: *2157419240
124
+ - !ruby/object:Gem::Dependency
125
+ name: fuubar
126
+ requirement: &2157418760 !ruby/object:Gem::Requirement
172
127
  none: false
173
- requirements:
174
- - - ">="
175
- - !ruby/object:Gem::Version
176
- segments:
177
- - 0
178
- - 0
179
- - 1
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
180
131
  version: 0.0.1
181
132
  type: :development
182
- version_requirements: *id011
183
- - !ruby/object:Gem::Dependency
184
- name: cucumber
185
133
  prerelease: false
186
- requirement: &id012 !ruby/object:Gem::Requirement
134
+ version_requirements: *2157418760
135
+ - !ruby/object:Gem::Dependency
136
+ name: cucumber
137
+ requirement: &2157418280 !ruby/object:Gem::Requirement
187
138
  none: false
188
- requirements:
189
- - - ">="
190
- - !ruby/object:Gem::Version
191
- segments:
192
- - 0
193
- - 10
194
- version: "0.10"
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0.10'
195
143
  type: :development
196
- version_requirements: *id012
197
- description: Capybara is an integration testing tool for rack based web applications. It simulates how a user would interact with a website
198
- email:
144
+ prerelease: false
145
+ version_requirements: *2157418280
146
+ description: Capybara is an integration testing tool for rack based web applications.
147
+ It simulates how a user would interact with a website
148
+ email:
199
149
  - jonas.nicklas@gmail.com
200
150
  executables: []
201
-
202
151
  extensions: []
203
-
204
- extra_rdoc_files:
152
+ extra_rdoc_files:
205
153
  - README.rdoc
206
- files:
154
+ files:
207
155
  - lib/capybara/cucumber.rb
208
156
  - lib/capybara/driver/base.rb
209
157
  - lib/capybara/driver/node.rb
@@ -231,8 +179,6 @@ files:
231
179
  - lib/capybara/spec/driver.rb
232
180
  - lib/capybara/spec/fixtures/capybara.jpg
233
181
  - lib/capybara/spec/fixtures/test_file.txt
234
- - lib/capybara/spec/public/jquery-ui.js
235
- - lib/capybara/spec/public/jquery.js
236
182
  - lib/capybara/spec/public/test.js
237
183
  - lib/capybara/spec/session/all_spec.rb
238
184
  - lib/capybara/spec/session/attach_file_spec.rb
@@ -296,6 +242,8 @@ files:
296
242
  - spec/driver/rack_test_driver_spec.rb
297
243
  - spec/driver/selenium_driver_spec.rb
298
244
  - spec/dsl_spec.rb
245
+ - spec/fixtures/selenium_driver_rspec_failure.rb
246
+ - spec/fixtures/selenium_driver_rspec_success.rb
299
247
  - spec/rspec/features_spec.rb
300
248
  - spec/rspec/matchers_spec.rb
301
249
  - spec/rspec_spec.rb
@@ -308,38 +256,31 @@ files:
308
256
  - spec/timeout_spec.rb
309
257
  - README.rdoc
310
258
  - History.txt
311
- has_rdoc: true
312
259
  homepage: http://github.com/jnicklas/capybara
313
260
  licenses: []
314
-
315
261
  post_install_message:
316
- rdoc_options:
262
+ rdoc_options:
317
263
  - --main
318
264
  - README.rdoc
319
- require_paths:
265
+ require_paths:
320
266
  - lib
321
- required_ruby_version: !ruby/object:Gem::Requirement
267
+ required_ruby_version: !ruby/object:Gem::Requirement
322
268
  none: false
323
- requirements:
324
- - - ">="
325
- - !ruby/object:Gem::Version
326
- segments:
327
- - 0
328
- version: "0"
329
- required_rubygems_version: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ! '>='
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ required_rubygems_version: !ruby/object:Gem::Requirement
330
274
  none: false
331
- requirements:
332
- - - ">="
333
- - !ruby/object:Gem::Version
334
- segments:
335
- - 0
336
- version: "0"
275
+ requirements:
276
+ - - ! '>'
277
+ - !ruby/object:Gem::Version
278
+ version: 1.3.1
337
279
  requirements: []
338
-
339
280
  rubyforge_project: capybara
340
- rubygems_version: 1.3.7
281
+ rubygems_version: 1.8.6
341
282
  signing_key:
342
283
  specification_version: 3
343
- summary: Capybara aims to simplify the process of integration testing Rack applications, such as Rails, Sinatra or Merb
284
+ summary: Capybara aims to simplify the process of integration testing Rack applications,
285
+ such as Rails, Sinatra or Merb
344
286
  test_files: []
345
-