capybara 1.0.1 → 1.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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
-