capybara 0.4.1.2 → 1.0.0.beta1

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 (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