capybara 0.4.1.2 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/History.txt +46 -0
  2. data/README.rdoc +211 -64
  3. data/lib/capybara.rb +31 -15
  4. data/lib/capybara/cucumber.rb +12 -16
  5. data/lib/capybara/dsl.rb +65 -28
  6. data/lib/capybara/node/actions.rb +7 -5
  7. data/lib/capybara/node/document.rb +8 -0
  8. data/lib/capybara/node/finders.rb +11 -7
  9. data/lib/capybara/node/matchers.rb +32 -6
  10. data/lib/capybara/node/simple.rb +20 -0
  11. data/lib/capybara/rack_test/browser.rb +115 -0
  12. data/lib/capybara/rack_test/driver.rb +77 -0
  13. data/lib/capybara/rack_test/form.rb +80 -0
  14. data/lib/capybara/rack_test/node.rb +101 -0
  15. data/lib/capybara/rspec.rb +11 -3
  16. data/lib/capybara/rspec/features.rb +22 -0
  17. data/lib/capybara/rspec/matchers.rb +146 -0
  18. data/lib/capybara/selector.rb +27 -8
  19. data/lib/capybara/selenium/driver.rb +148 -0
  20. data/lib/capybara/selenium/node.rb +91 -0
  21. data/lib/capybara/session.rb +42 -15
  22. data/lib/capybara/spec/driver.rb +55 -1
  23. data/lib/capybara/spec/fixtures/capybara.jpg +0 -0
  24. data/lib/capybara/spec/public/test.js +7 -2
  25. data/lib/capybara/spec/session.rb +51 -7
  26. data/lib/capybara/spec/session/attach_file_spec.rb +9 -6
  27. data/lib/capybara/spec/session/click_button_spec.rb +35 -0
  28. data/lib/capybara/spec/session/current_host_spec.rb +62 -0
  29. data/lib/capybara/spec/session/fill_in_spec.rb +6 -0
  30. data/lib/capybara/spec/session/find_spec.rb +23 -1
  31. data/lib/capybara/spec/session/first_spec.rb +39 -6
  32. data/lib/capybara/spec/session/has_css_spec.rb +30 -0
  33. data/lib/capybara/spec/session/has_field_spec.rb +47 -11
  34. data/lib/capybara/spec/session/javascript.rb +0 -1
  35. data/lib/capybara/spec/session/text_spec.rb +19 -0
  36. data/lib/capybara/spec/test_app.rb +9 -0
  37. data/lib/capybara/spec/views/form.erb +8 -3
  38. data/lib/capybara/spec/views/header_links.erb +7 -0
  39. data/lib/capybara/spec/views/host_links.erb +12 -0
  40. data/lib/capybara/spec/views/with_html.erb +6 -2
  41. data/lib/capybara/spec/views/with_html_entities.erb +1 -0
  42. data/lib/capybara/spec/views/with_js.erb +4 -0
  43. data/lib/capybara/util/save_and_open_page.rb +7 -3
  44. data/lib/capybara/util/timeout.rb +2 -2
  45. data/lib/capybara/version.rb +1 -1
  46. data/spec/capybara_spec.rb +1 -1
  47. data/spec/driver/rack_test_driver_spec.rb +24 -2
  48. data/spec/driver/selenium_driver_spec.rb +2 -1
  49. data/spec/dsl_spec.rb +56 -4
  50. data/spec/rspec/features_spec.rb +45 -0
  51. data/spec/rspec/matchers_spec.rb +451 -0
  52. data/spec/rspec_spec.rb +9 -2
  53. data/spec/save_and_open_page_spec.rb +9 -13
  54. data/spec/server_spec.rb +4 -0
  55. data/spec/session/rack_test_session_spec.rb +2 -2
  56. data/spec/session/selenium_session_spec.rb +1 -1
  57. data/spec/spec_helper.rb +0 -14
  58. data/spec/string_spec.rb +1 -1
  59. metadata +60 -69
  60. data/lib/capybara/driver/celerity_driver.rb +0 -164
  61. data/lib/capybara/driver/culerity_driver.rb +0 -26
  62. data/lib/capybara/driver/rack_test_driver.rb +0 -303
  63. data/lib/capybara/driver/selenium_driver.rb +0 -161
  64. data/spec/driver/celerity_driver_spec.rb +0 -13
  65. data/spec/driver/culerity_driver_spec.rb +0 -14
  66. data/spec/driver/remote_culerity_driver_spec.rb +0 -22
  67. data/spec/driver/remote_selenium_driver_spec.rb +0 -16
  68. data/spec/session/celerity_session_spec.rb +0 -24
  69. data/spec/session/culerity_session_spec.rb +0 -26
@@ -3,8 +3,8 @@ require 'capybara/rspec'
3
3
 
4
4
  Capybara.app = TestApp
5
5
 
6
- describe 'capybara/rspec', :type => :acceptance do
7
- it "should include Capybara in rpsec" do
6
+ describe 'capybara/rspec', :type => :request do
7
+ it "should include Capybara in rspec" do
8
8
  visit('/foo')
9
9
  page.body.should include('Another World')
10
10
  end
@@ -45,3 +45,10 @@ describe 'capybara/rspec', :type => :other do
45
45
  expect { visit('/') }.to raise_error(NoMethodError)
46
46
  end
47
47
  end
48
+
49
+ feature "Feature DSL" do
50
+ scenario "is pulled in" do
51
+ visit('/foo')
52
+ page.body.should include('Another World')
53
+ end
54
+ end
@@ -3,10 +3,8 @@ require 'spec_helper'
3
3
  require 'capybara/util/save_and_open_page'
4
4
  require 'launchy'
5
5
  describe Capybara do
6
- describe ".save_and_open_page" do
6
+ describe ".save_page & .save_and_open_page" do
7
7
  before do
8
- @time = Time.new.strftime("%Y%m%d%H%M%S")
9
-
10
8
  @temp_file = mock("FILE")
11
9
  @temp_file.stub!(:write)
12
10
  @temp_file.stub!(:close)
@@ -41,9 +39,7 @@ describe Capybara do
41
39
  end
42
40
 
43
41
  def default_file_expectations
44
- @name = "capybara-#{@time}.html"
45
-
46
- @temp_file.stub!(:path).and_return(@name)
42
+ @temp_file.stub!(:path).and_return('page.html')
47
43
 
48
44
  File.should_receive(:exist?).and_return true
49
45
  File.should_receive(:new).and_return @temp_file
@@ -56,19 +52,19 @@ describe Capybara do
56
52
 
57
53
  it "should create a new temporary file" do
58
54
  @temp_file.should_receive(:write).with @html
59
- Capybara.save_and_open_page @html
55
+ Capybara.save_page @html, 'page.html'
60
56
  end
61
57
 
62
58
  it "should open the file in the browser" do
63
- Capybara.should_receive(:open_in_browser).with(@name)
64
- Capybara.save_and_open_page @html
59
+ Capybara.should_receive(:open_in_browser).with('page.html')
60
+ Capybara.save_and_open_page @html, 'page.html'
65
61
  end
66
62
  end
67
63
 
68
64
  describe "custom output path" do
69
65
  before do
70
66
  @custom_path = File.join('tmp', 'capybara')
71
- @custom_name = File.join(@custom_path, "capybara-#{@time}.html")
67
+ @custom_name = File.join(@custom_path, 'page.html')
72
68
 
73
69
  @temp_file.stub!(:path).and_return(@custom_name)
74
70
 
@@ -81,12 +77,12 @@ describe Capybara do
81
77
  File.should_receive(:new).and_return @temp_file
82
78
 
83
79
  @temp_file.should_receive(:write).with @html
84
- Capybara.save_and_open_page @html
80
+ Capybara.save_page @html, 'page.html'
85
81
  end
86
82
 
87
83
  it "should open the file - in the custom path - in the browser" do
88
84
  Capybara.should_receive(:open_in_browser).with(@custom_name)
89
- Capybara.save_and_open_page @html
85
+ Capybara.save_and_open_page @html, 'page.html'
90
86
  end
91
87
 
92
88
  it "should be possible to configure output path" do
@@ -140,7 +136,7 @@ describe Capybara do
140
136
  def test_with_directories(directories)
141
137
  @temp_file.should_receive(:write) \
142
138
  .with expected_html_for_asset_root_with(directories)
143
- Capybara.save_and_open_page @html
139
+ Capybara.save_page @html, 'page.html'
144
140
  end
145
141
 
146
142
  context "asset_root contains some directories" do
@@ -63,6 +63,8 @@ describe Capybara::Server do
63
63
  end
64
64
 
65
65
  it "should wait specified time for the app to boot" do
66
+ pending 'this test does not work: https://groups.google.com/d/msg/ruby-capybara/QrSKTbjh5rY/egvcVFYiWZMJ'
67
+
66
68
  @slow_app = proc { |env| sleep(1); [200, {}, "Hello Slow Server!"] }
67
69
 
68
70
  Capybara.server_boot_timeout = 1.5
@@ -73,6 +75,8 @@ describe Capybara::Server do
73
75
  end
74
76
 
75
77
  it "should raise an exception if boot timeout is exceeded" do
78
+ pending 'this test does not work: https://groups.google.com/d/msg/ruby-capybara/QrSKTbjh5rY/egvcVFYiWZMJ'
79
+
76
80
  @slow_app = proc { |env| sleep(1); [200, {}, "Hello Slow Server!"] }
77
81
 
78
82
  Capybara.server_boot_timeout = 0.5
@@ -8,7 +8,7 @@ describe Capybara::Session do
8
8
 
9
9
  describe '#driver' do
10
10
  it "should be a rack test driver" do
11
- @session.driver.should be_an_instance_of(Capybara::Driver::RackTest)
11
+ @session.driver.should be_an_instance_of(Capybara::RackTest::Driver)
12
12
  end
13
13
  end
14
14
 
@@ -22,7 +22,7 @@ describe Capybara::Session do
22
22
  it "should use data-method if available" do
23
23
  @session.visit "/with_html"
24
24
  @session.click_link "A link with data-method"
25
- @session.body.should == 'The requested object was deleted'
25
+ @session.body.should include('The requested object was deleted')
26
26
  end
27
27
  end
28
28
 
@@ -8,7 +8,7 @@ describe Capybara::Session do
8
8
 
9
9
  describe '#driver' do
10
10
  it "should be a selenium driver" do
11
- @session.driver.should be_an_instance_of(Capybara::Driver::Selenium)
11
+ @session.driver.should be_an_instance_of(Capybara::Selenium::Driver)
12
12
  end
13
13
  end
14
14
 
@@ -15,23 +15,9 @@ Capybara.default_wait_time = 0 # less timeout so tests run faster
15
15
  module TestSessions
16
16
  RackTest = Capybara::Session.new(:rack_test, TestApp)
17
17
  Selenium = Capybara::Session.new(:selenium, TestApp)
18
- Culerity = Capybara::Session.new(:culerity, TestApp)
19
- Celerity = Capybara::Session.new(:celerity, TestApp)
20
18
  end
21
19
 
22
20
  RSpec.configure do |config|
23
-
24
- running_with_jruby = RUBY_PLATFORM =~ /java/
25
- jruby_installed = `which jruby` && $?.success?
26
-
27
- warn "** Skipping Celerity specs because platform is not Java" unless running_with_jruby
28
- warn "** Skipping Culerity specs because JRuby is not installed" unless jruby_installed
29
-
30
- config.filter_run_excluding(:jruby => lambda { |value|
31
- return true if value == :platform && !running_with_jruby
32
- return true if value == :installed && !jruby_installed
33
- })
34
-
35
21
  config.before do
36
22
  Capybara.configure do |config|
37
23
  config.default_selector = :xpath
@@ -64,7 +64,7 @@ describe Capybara do
64
64
  string.find('//h1').path.should == '/html/body/div/div[1]/h1'
65
65
  end
66
66
 
67
- it "allows finding elements and extracting the path" do
67
+ it "allows finding elements and extracting the value" do
68
68
  string.find('//input').value.should == 'bar'
69
69
  string.find('//select').value.should == 'Capybara'
70
70
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ prerelease: true
5
5
  segments:
6
- - 0
7
- - 4
8
6
  - 1
9
- - 2
10
- version: 0.4.1.2
7
+ - 0
8
+ - 0
9
+ - beta1
10
+ version: 1.0.0.beta1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jonas Nicklas
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-10 00:00:00 +01:00
18
+ date: 2011-04-25 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -47,40 +47,10 @@ dependencies:
47
47
  version: "1.16"
48
48
  type: :runtime
49
49
  version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: culerity
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- segments:
59
- - 0
60
- - 2
61
- - 4
62
- version: 0.2.4
63
- type: :runtime
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: celerity
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- segments:
74
- - 0
75
- - 7
76
- - 9
77
- version: 0.7.9
78
- type: :runtime
79
- version_requirements: *id004
80
50
  - !ruby/object:Gem::Dependency
81
51
  name: selenium-webdriver
82
52
  prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
84
54
  none: false
85
55
  requirements:
86
56
  - - ">="
@@ -91,11 +61,11 @@ dependencies:
91
61
  - 27
92
62
  version: 0.0.27
93
63
  type: :runtime
94
- version_requirements: *id005
64
+ version_requirements: *id003
95
65
  - !ruby/object:Gem::Dependency
96
66
  name: rack
97
67
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ requirement: &id004 !ruby/object:Gem::Requirement
99
69
  none: false
100
70
  requirements:
101
71
  - - ">="
@@ -106,11 +76,11 @@ dependencies:
106
76
  - 0
107
77
  version: 1.0.0
108
78
  type: :runtime
109
- version_requirements: *id006
79
+ version_requirements: *id004
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: rack-test
112
82
  prerelease: false
113
- requirement: &id007 !ruby/object:Gem::Requirement
83
+ requirement: &id005 !ruby/object:Gem::Requirement
114
84
  none: false
115
85
  requirements:
116
86
  - - ">="
@@ -121,11 +91,11 @@ dependencies:
121
91
  - 4
122
92
  version: 0.5.4
123
93
  type: :runtime
124
- version_requirements: *id007
94
+ version_requirements: *id005
125
95
  - !ruby/object:Gem::Dependency
126
96
  name: xpath
127
97
  prerelease: false
128
- requirement: &id008 !ruby/object:Gem::Requirement
98
+ requirement: &id006 !ruby/object:Gem::Requirement
129
99
  none: false
130
100
  requirements:
131
101
  - - ~>
@@ -133,14 +103,14 @@ dependencies:
133
103
  segments:
134
104
  - 0
135
105
  - 1
136
- - 3
137
- version: 0.1.3
106
+ - 4
107
+ version: 0.1.4
138
108
  type: :runtime
139
- version_requirements: *id008
109
+ version_requirements: *id006
140
110
  - !ruby/object:Gem::Dependency
141
111
  name: sinatra
142
112
  prerelease: false
143
- requirement: &id009 !ruby/object:Gem::Requirement
113
+ requirement: &id007 !ruby/object:Gem::Requirement
144
114
  none: false
145
115
  requirements:
146
116
  - - ">="
@@ -151,11 +121,11 @@ dependencies:
151
121
  - 4
152
122
  version: 0.9.4
153
123
  type: :development
154
- version_requirements: *id009
124
+ version_requirements: *id007
155
125
  - !ruby/object:Gem::Dependency
156
126
  name: rspec
157
127
  prerelease: false
158
- requirement: &id010 !ruby/object:Gem::Requirement
128
+ requirement: &id008 !ruby/object:Gem::Requirement
159
129
  none: false
160
130
  requirements:
161
131
  - - ">="
@@ -166,11 +136,11 @@ dependencies:
166
136
  - 0
167
137
  version: 2.0.0
168
138
  type: :development
169
- version_requirements: *id010
139
+ version_requirements: *id008
170
140
  - !ruby/object:Gem::Dependency
171
141
  name: launchy
172
142
  prerelease: false
173
- requirement: &id011 !ruby/object:Gem::Requirement
143
+ requirement: &id009 !ruby/object:Gem::Requirement
174
144
  none: false
175
145
  requirements:
176
146
  - - ">="
@@ -181,11 +151,11 @@ dependencies:
181
151
  - 5
182
152
  version: 0.3.5
183
153
  type: :development
184
- version_requirements: *id011
154
+ version_requirements: *id009
185
155
  - !ruby/object:Gem::Dependency
186
156
  name: yard
187
157
  prerelease: false
188
- requirement: &id012 !ruby/object:Gem::Requirement
158
+ requirement: &id010 !ruby/object:Gem::Requirement
189
159
  none: false
190
160
  requirements:
191
161
  - - ">="
@@ -196,11 +166,11 @@ dependencies:
196
166
  - 8
197
167
  version: 0.5.8
198
168
  type: :development
199
- version_requirements: *id012
169
+ version_requirements: *id010
200
170
  - !ruby/object:Gem::Dependency
201
171
  name: fuubar
202
172
  prerelease: false
203
- requirement: &id013 !ruby/object:Gem::Requirement
173
+ requirement: &id011 !ruby/object:Gem::Requirement
204
174
  none: false
205
175
  requirements:
206
176
  - - ">="
@@ -211,7 +181,21 @@ dependencies:
211
181
  - 1
212
182
  version: 0.0.1
213
183
  type: :development
214
- version_requirements: *id013
184
+ version_requirements: *id011
185
+ - !ruby/object:Gem::Dependency
186
+ name: cucumber
187
+ prerelease: false
188
+ requirement: &id012 !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ segments:
194
+ - 0
195
+ - 10
196
+ version: "0.10"
197
+ type: :development
198
+ version_requirements: *id012
215
199
  description: Capybara is an integration testing tool for rack based web applications. It simulates how a user would interact with a website
216
200
  email:
217
201
  - jonas.nicklas@gmail.com
@@ -224,11 +208,7 @@ extra_rdoc_files:
224
208
  files:
225
209
  - lib/capybara/cucumber.rb
226
210
  - lib/capybara/driver/base.rb
227
- - lib/capybara/driver/celerity_driver.rb
228
- - lib/capybara/driver/culerity_driver.rb
229
211
  - lib/capybara/driver/node.rb
230
- - lib/capybara/driver/rack_test_driver.rb
231
- - lib/capybara/driver/selenium_driver.rb
232
212
  - lib/capybara/dsl.rb
233
213
  - lib/capybara/node/actions.rb
234
214
  - lib/capybara/node/base.rb
@@ -237,9 +217,17 @@ files:
237
217
  - lib/capybara/node/finders.rb
238
218
  - lib/capybara/node/matchers.rb
239
219
  - lib/capybara/node/simple.rb
220
+ - lib/capybara/rack_test/browser.rb
221
+ - lib/capybara/rack_test/driver.rb
222
+ - lib/capybara/rack_test/form.rb
223
+ - lib/capybara/rack_test/node.rb
240
224
  - lib/capybara/rails.rb
225
+ - lib/capybara/rspec/features.rb
226
+ - lib/capybara/rspec/matchers.rb
241
227
  - lib/capybara/rspec.rb
242
228
  - lib/capybara/selector.rb
229
+ - lib/capybara/selenium/driver.rb
230
+ - lib/capybara/selenium/node.rb
243
231
  - lib/capybara/server.rb
244
232
  - lib/capybara/session.rb
245
233
  - lib/capybara/spec/driver.rb
@@ -255,6 +243,7 @@ files:
255
243
  - lib/capybara/spec/session/click_button_spec.rb
256
244
  - lib/capybara/spec/session/click_link_or_button_spec.rb
257
245
  - lib/capybara/spec/session/click_link_spec.rb
246
+ - lib/capybara/spec/session/current_host_spec.rb
258
247
  - lib/capybara/spec/session/current_url_spec.rb
259
248
  - lib/capybara/spec/session/fill_in_spec.rb
260
249
  - lib/capybara/spec/session/find_button_spec.rb
@@ -276,6 +265,7 @@ files:
276
265
  - lib/capybara/spec/session/javascript.rb
277
266
  - lib/capybara/spec/session/response_code.rb
278
267
  - lib/capybara/spec/session/select_spec.rb
268
+ - lib/capybara/spec/session/text_spec.rb
279
269
  - lib/capybara/spec/session/uncheck_spec.rb
280
270
  - lib/capybara/spec/session/unselect_spec.rb
281
271
  - lib/capybara/spec/session/within_spec.rb
@@ -286,11 +276,14 @@ files:
286
276
  - lib/capybara/spec/views/form.erb
287
277
  - lib/capybara/spec/views/frame_one.erb
288
278
  - lib/capybara/spec/views/frame_two.erb
279
+ - lib/capybara/spec/views/header_links.erb
280
+ - lib/capybara/spec/views/host_links.erb
289
281
  - lib/capybara/spec/views/popup_one.erb
290
282
  - lib/capybara/spec/views/popup_two.erb
291
283
  - lib/capybara/spec/views/postback.erb
292
284
  - lib/capybara/spec/views/tables.erb
293
285
  - lib/capybara/spec/views/with_html.erb
286
+ - lib/capybara/spec/views/with_html_entities.erb
294
287
  - lib/capybara/spec/views/with_js.erb
295
288
  - lib/capybara/spec/views/with_scope.erb
296
289
  - lib/capybara/spec/views/with_simple_html.erb
@@ -302,18 +295,14 @@ files:
302
295
  - lib/capybara.rb
303
296
  - spec/basic_node_spec.rb
304
297
  - spec/capybara_spec.rb
305
- - spec/driver/celerity_driver_spec.rb
306
- - spec/driver/culerity_driver_spec.rb
307
298
  - spec/driver/rack_test_driver_spec.rb
308
- - spec/driver/remote_culerity_driver_spec.rb
309
- - spec/driver/remote_selenium_driver_spec.rb
310
299
  - spec/driver/selenium_driver_spec.rb
311
300
  - spec/dsl_spec.rb
301
+ - spec/rspec/features_spec.rb
302
+ - spec/rspec/matchers_spec.rb
312
303
  - spec/rspec_spec.rb
313
304
  - spec/save_and_open_page_spec.rb
314
305
  - spec/server_spec.rb
315
- - spec/session/celerity_session_spec.rb
316
- - spec/session/culerity_session_spec.rb
317
306
  - spec/session/rack_test_session_spec.rb
318
307
  - spec/session/selenium_session_spec.rb
319
308
  - spec/spec_helper.rb
@@ -342,11 +331,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
342
331
  required_rubygems_version: !ruby/object:Gem::Requirement
343
332
  none: false
344
333
  requirements:
345
- - - ">="
334
+ - - ">"
346
335
  - !ruby/object:Gem::Version
347
336
  segments:
348
- - 0
349
- version: "0"
337
+ - 1
338
+ - 3
339
+ - 1
340
+ version: 1.3.1
350
341
  requirements: []
351
342
 
352
343
  rubyforge_project: capybara