capybara 2.0.0.beta2 → 2.0.0.beta4
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.
- data/History.txt +30 -1
- data/README.md +52 -31
- data/lib/capybara.rb +1 -0
- data/lib/capybara/driver/base.rb +1 -1
- data/lib/capybara/driver/node.rb +1 -0
- data/lib/capybara/dsl.rb +12 -5
- data/lib/capybara/helpers.rb +33 -0
- data/lib/capybara/node/actions.rb +4 -2
- data/lib/capybara/node/base.rb +52 -1
- data/lib/capybara/node/element.rb +0 -12
- data/lib/capybara/node/finders.rb +1 -1
- data/lib/capybara/node/matchers.rb +57 -47
- data/lib/capybara/node/simple.rb +4 -0
- data/lib/capybara/query.rb +11 -11
- data/lib/capybara/rack_test/browser.rb +14 -15
- data/lib/capybara/rack_test/driver.rb +2 -2
- data/lib/capybara/rack_test/node.rb +15 -2
- data/lib/capybara/result.rb +7 -19
- data/lib/capybara/rspec.rb +7 -4
- data/lib/capybara/rspec/features.rb +4 -1
- data/lib/capybara/rspec/matchers.rb +8 -3
- data/lib/capybara/selector.rb +1 -2
- data/lib/capybara/selenium/driver.rb +2 -2
- data/lib/capybara/selenium/node.rb +9 -7
- data/lib/capybara/session.rb +47 -31
- data/lib/capybara/spec/fixtures/another_test_file.txt +1 -0
- data/lib/capybara/spec/public/test.js +1 -1
- data/lib/capybara/spec/session/all_spec.rb +60 -62
- data/lib/capybara/spec/session/assert_selector.rb +123 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +72 -58
- data/lib/capybara/spec/session/body_spec.rb +21 -0
- data/lib/capybara/spec/session/check_spec.rb +67 -50
- data/lib/capybara/spec/session/choose_spec.rb +32 -21
- data/lib/capybara/spec/session/click_button_spec.rb +261 -221
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +40 -30
- data/lib/capybara/spec/session/click_link_spec.rb +95 -81
- data/lib/capybara/spec/session/current_url_spec.rb +70 -60
- data/lib/capybara/spec/session/evaluate_script_spec.rb +6 -0
- data/lib/capybara/spec/session/execute_script_spec.rb +7 -0
- data/lib/capybara/spec/session/fill_in_spec.rb +118 -92
- data/lib/capybara/spec/session/find_button_spec.rb +16 -14
- data/lib/capybara/spec/session/find_by_id_spec.rb +16 -14
- data/lib/capybara/spec/session/find_field_spec.rb +23 -21
- data/lib/capybara/spec/session/find_link_spec.rb +15 -14
- data/lib/capybara/spec/session/find_spec.rb +96 -91
- data/lib/capybara/spec/session/first_spec.rb +53 -55
- data/lib/capybara/spec/session/has_button_spec.rb +22 -24
- data/lib/capybara/spec/session/has_css_spec.rb +190 -205
- data/lib/capybara/spec/session/has_field_spec.rb +167 -169
- data/lib/capybara/spec/session/has_link_spec.rb +26 -29
- data/lib/capybara/spec/session/has_select_spec.rb +175 -176
- data/lib/capybara/spec/session/has_selector_spec.rb +94 -100
- data/lib/capybara/spec/session/has_table_spec.rb +22 -26
- data/lib/capybara/spec/session/has_text_spec.rb +159 -132
- data/lib/capybara/spec/session/has_xpath_spec.rb +100 -96
- data/lib/capybara/spec/session/headers.rb +4 -17
- data/lib/capybara/spec/session/html_spec.rb +15 -0
- data/lib/capybara/spec/session/node_spec.rb +172 -82
- data/lib/capybara/spec/session/reset_session_spec.rb +42 -0
- data/lib/capybara/spec/session/response_code.rb +4 -17
- data/lib/capybara/spec/session/save_page_spec.rb +46 -0
- data/lib/capybara/spec/session/screenshot.rb +8 -24
- data/lib/capybara/spec/session/select_spec.rb +100 -89
- data/lib/capybara/spec/session/source_spec.rb +12 -0
- data/lib/capybara/spec/session/text_spec.rb +15 -17
- data/lib/capybara/spec/session/uncheck_spec.rb +22 -17
- data/lib/capybara/spec/session/unselect_spec.rb +57 -52
- data/lib/capybara/spec/session/visit_spec.rb +58 -60
- data/lib/capybara/spec/session/within_frame_spec.rb +24 -26
- data/lib/capybara/spec/session/within_spec.rb +119 -121
- data/lib/capybara/spec/session/within_window_spec.rb +29 -31
- data/lib/capybara/spec/spec_helper.rb +84 -0
- data/lib/capybara/spec/test_app.rb +5 -3
- data/lib/capybara/spec/views/form.erb +1 -0
- data/lib/capybara/spec/views/with_html.erb +6 -1
- data/lib/capybara/spec/views/with_js.erb +1 -0
- data/lib/capybara/version.rb +1 -1
- data/spec/basic_node_spec.rb +2 -2
- data/spec/capybara_spec.rb +9 -0
- data/spec/dsl_spec.rb +22 -10
- data/spec/rack_test_spec.rb +28 -23
- data/spec/result_spec.rb +51 -0
- data/spec/rspec/features_spec.rb +19 -0
- data/spec/rspec/matchers_spec.rb +6 -0
- data/spec/rspec_spec.rb +1 -1
- data/spec/selenium_spec.rb +11 -25
- data/spec/server_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -46
- metadata +41 -98
- data/lib/capybara/spec/session.rb +0 -183
- data/lib/capybara/spec/session/javascript.rb +0 -290
- data/lib/capybara/util/save_and_open_page.rb +0 -45
- data/spec/save_and_open_page_spec.rb +0 -155
|
@@ -1,40 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
Capybara::SpecHelper.spec '#within_window', :requires => [:windows] do
|
|
2
|
+
before(:each) do
|
|
3
|
+
@session.visit('/within_popups')
|
|
4
|
+
end
|
|
5
|
+
after(:each) do
|
|
6
|
+
@session.within_window("firstPopup") do
|
|
7
|
+
@session.evaluate_script('window.close()')
|
|
5
8
|
end
|
|
6
|
-
|
|
7
|
-
@session.
|
|
8
|
-
@session.evaluate_script('window.close()')
|
|
9
|
-
end
|
|
10
|
-
@session.within_window("secondPopup") do
|
|
11
|
-
@session.evaluate_script('window.close()')
|
|
12
|
-
end
|
|
9
|
+
@session.within_window("secondPopup") do
|
|
10
|
+
@session.evaluate_script('window.close()')
|
|
13
11
|
end
|
|
12
|
+
end
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
it "should find the div in firstPopup" do
|
|
15
|
+
@session.within_window("firstPopup") do
|
|
16
|
+
@session.find("//*[@id='divInPopupOne']").text.should eql 'This is the text of divInPopupOne'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
it "should find the div in secondPopup" do
|
|
20
|
+
@session.within_window("secondPopup") do
|
|
21
|
+
@session.find("//*[@id='divInPopupTwo']").text.should eql 'This is the text of divInPopupTwo'
|
|
19
22
|
end
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
end
|
|
24
|
+
it "should find the divs in both popups" do
|
|
25
|
+
@session.within_window("secondPopup") do
|
|
26
|
+
@session.find("//*[@id='divInPopupTwo']").text.should eql 'This is the text of divInPopupTwo'
|
|
24
27
|
end
|
|
25
|
-
|
|
26
|
-
@session.
|
|
27
|
-
@session.find("//*[@id='divInPopupTwo']").text.should eql 'This is the text of divInPopupTwo'
|
|
28
|
-
end
|
|
29
|
-
@session.within_window("firstPopup") do
|
|
30
|
-
@session.find("//*[@id='divInPopupOne']").text.should eql 'This is the text of divInPopupOne'
|
|
31
|
-
end
|
|
28
|
+
@session.within_window("firstPopup") do
|
|
29
|
+
@session.find("//*[@id='divInPopupOne']").text.should eql 'This is the text of divInPopupOne'
|
|
32
30
|
end
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
@session.find("//*[@id='divInMainWindow']").text.should eql 'This is the text for divInMainWindow'
|
|
31
|
+
end
|
|
32
|
+
it "should find the div in the main window after finding a div in a popup" do
|
|
33
|
+
@session.within_window("secondPopup") do
|
|
34
|
+
@session.find("//*[@id='divInPopupTwo']").text.should eql 'This is the text of divInPopupTwo'
|
|
38
35
|
end
|
|
36
|
+
@session.find("//*[@id='divInMainWindow']").text.should eql 'This is the text for divInMainWindow'
|
|
39
37
|
end
|
|
40
38
|
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require "rspec"
|
|
2
|
+
require "capybara"
|
|
3
|
+
require "capybara/rspec" # Required here instead of in rspec_spec to avoid RSpec deprecation warning
|
|
4
|
+
require "capybara/spec/test_app"
|
|
5
|
+
require "capybara/spec/spec_helper"
|
|
6
|
+
require "nokogiri"
|
|
7
|
+
|
|
8
|
+
module Capybara
|
|
9
|
+
module SpecHelper
|
|
10
|
+
class << self
|
|
11
|
+
def configure(config)
|
|
12
|
+
filter = lambda do |requires, metadata|
|
|
13
|
+
if requires and metadata[:skip]
|
|
14
|
+
requires.any? do |require|
|
|
15
|
+
metadata[:skip].include?(require)
|
|
16
|
+
end
|
|
17
|
+
else
|
|
18
|
+
false
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
config.filter_run_excluding :requires => filter
|
|
22
|
+
config.before do
|
|
23
|
+
Capybara.app = TestApp
|
|
24
|
+
|
|
25
|
+
Capybara.configure do |config|
|
|
26
|
+
config.default_selector = :xpath
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Capybara.default_wait_time = 1
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def spec(name, options={}, &block)
|
|
34
|
+
@specs ||= []
|
|
35
|
+
@specs << [name, options, block]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def run_specs(session, name, options={})
|
|
39
|
+
specs = @specs
|
|
40
|
+
describe Capybara::Session, name, options do
|
|
41
|
+
include Capybara::SpecHelper
|
|
42
|
+
before do
|
|
43
|
+
@session = session
|
|
44
|
+
end
|
|
45
|
+
after do
|
|
46
|
+
@session.reset_session!
|
|
47
|
+
end
|
|
48
|
+
specs.each do |name, options, block|
|
|
49
|
+
describe name, options do
|
|
50
|
+
class_eval(&block)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end # class << self
|
|
56
|
+
|
|
57
|
+
def silence_stream(stream)
|
|
58
|
+
old_stream = stream.dup
|
|
59
|
+
stream.reopen(RbConfig::CONFIG['host_os'] =~ /rmswin|mingw/ ? 'NUL:' : '/dev/null')
|
|
60
|
+
stream.sync = true
|
|
61
|
+
yield
|
|
62
|
+
ensure
|
|
63
|
+
stream.reopen(old_stream)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def quietly
|
|
67
|
+
silence_stream(STDOUT) do
|
|
68
|
+
silence_stream(STDERR) do
|
|
69
|
+
yield
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def extract_results(session)
|
|
75
|
+
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.text.lstrip
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
RSpec.configure do |config|
|
|
81
|
+
Capybara::SpecHelper.configure(config)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
Dir[File.dirname(__FILE__)+'/session/*'].each { |group| require group }
|
|
@@ -151,9 +151,11 @@ class TestApp < Sinatra::Base
|
|
|
151
151
|
|
|
152
152
|
post '/upload_multiple' do
|
|
153
153
|
begin
|
|
154
|
-
buffer = []
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
buffer = ["#{params[:form][:multiple_documents].size}"]
|
|
155
|
+
params[:form][:multiple_documents].each do |doc|
|
|
156
|
+
buffer << "Content-type: #{doc[:type]}"
|
|
157
|
+
buffer << "File content: #{doc[:tempfile].read}"
|
|
158
|
+
end
|
|
157
159
|
buffer.join(' | ')
|
|
158
160
|
rescue
|
|
159
161
|
'No files uploaded'
|
|
@@ -253,6 +253,7 @@
|
|
|
253
253
|
<button type="submit" id="click_me_123" title="Click Title button" value="click_me">Click me!</button>
|
|
254
254
|
<button type="submit" name="form[no_value]">No Value!</button>
|
|
255
255
|
<button id="no_type">No Type!</button>
|
|
256
|
+
<input type="button" disabled value="Disabled button"/>
|
|
256
257
|
</p>
|
|
257
258
|
</form>
|
|
258
259
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
|
|
22
22
|
dolore eu fugiat <a href="/redirect" id="red">Redirect</a> pariatur. Excepteur sint occaecat cupidatat non proident,
|
|
23
23
|
sunt in culpa qui officia
|
|
24
|
-
text with
|
|
24
|
+
text with
|
|
25
25
|
whitespace
|
|
26
26
|
id est laborum.
|
|
27
27
|
</p>
|
|
@@ -45,6 +45,7 @@ banana</textarea>
|
|
|
45
45
|
<a href="/with_simple_html#anchor">Anchor on different page</a>
|
|
46
46
|
<a href="/with_html#anchor">Anchor on same page</a>
|
|
47
47
|
<a href="with_html">Relative</a>
|
|
48
|
+
<a href="//<%= request.host_with_port %>/foo">Protocol</a>
|
|
48
49
|
<input type="text" checked="checked" id="checked_field">
|
|
49
50
|
<a href="/redirect"><img width="20" height="20" alt="very fine image" /></a>
|
|
50
51
|
<a href="/with_simple_html"><img width="20" height="20" alt="fine image" /></a>
|
|
@@ -72,6 +73,10 @@ banana</textarea>
|
|
|
72
73
|
<a id="visible" class="visibility">visible link</a>
|
|
73
74
|
</div>
|
|
74
75
|
|
|
76
|
+
<div>
|
|
77
|
+
Number 42
|
|
78
|
+
</div>
|
|
79
|
+
|
|
75
80
|
<ul>
|
|
76
81
|
<li id="john_monkey">Monkey John</li>
|
|
77
82
|
<li id="paul_monkey">Monkey Paul</li>
|
data/lib/capybara/version.rb
CHANGED
data/spec/basic_node_spec.rb
CHANGED
|
@@ -36,8 +36,8 @@ describe Capybara do
|
|
|
36
36
|
Capybara.add_selector :lifeform do
|
|
37
37
|
xpath { |name| "//option[contains(.,'#{name}')]" }
|
|
38
38
|
end
|
|
39
|
-
string.should have_selector(:page)
|
|
40
|
-
string.should_not have_selector(:'does-not-exist')
|
|
39
|
+
string.should have_selector(:id, "page")
|
|
40
|
+
string.should_not have_selector(:id, 'does-not-exist')
|
|
41
41
|
string.should have_selector(:lifeform, "Monkey")
|
|
42
42
|
string.should_not have_selector(:lifeform, "Gorilla")
|
|
43
43
|
end
|
data/spec/capybara_spec.rb
CHANGED
|
@@ -42,5 +42,14 @@ describe Capybara do
|
|
|
42
42
|
Capybara.server.should == server
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
|
+
end
|
|
45
46
|
|
|
47
|
+
describe Capybara::Session do
|
|
48
|
+
context 'with non-existant driver' do
|
|
49
|
+
it "should raise an error" do
|
|
50
|
+
expect {
|
|
51
|
+
Capybara::Session.new(:quox, TestApp).driver
|
|
52
|
+
}.to raise_error(Capybara::DriverNotFoundError)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
46
55
|
end
|
data/spec/dsl_spec.rb
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'capybara/dsl'
|
|
3
3
|
|
|
4
|
+
class TestClass
|
|
5
|
+
include Capybara::DSL
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
Capybara::SpecHelper.run_specs TestClass.new, "DSL", :skip => [
|
|
9
|
+
:js,
|
|
10
|
+
:screenshot,
|
|
11
|
+
:frames,
|
|
12
|
+
:windows
|
|
13
|
+
]
|
|
14
|
+
|
|
4
15
|
describe Capybara::DSL do
|
|
5
16
|
after do
|
|
6
17
|
Capybara.session_name = nil
|
|
7
18
|
Capybara.default_driver = nil
|
|
19
|
+
Capybara.javascript_driver = nil
|
|
8
20
|
Capybara.use_default_driver
|
|
9
21
|
Capybara.app = TestApp
|
|
10
22
|
end
|
|
@@ -98,13 +110,21 @@ describe Capybara::DSL do
|
|
|
98
110
|
end
|
|
99
111
|
|
|
100
112
|
describe '#using_wait_time' do
|
|
113
|
+
before do
|
|
114
|
+
@previous_wait_time = Capybara.default_wait_time
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
after do
|
|
118
|
+
Capybara.default_wait_time = @previous_wait_time
|
|
119
|
+
end
|
|
120
|
+
|
|
101
121
|
it "should switch the wait time and switch it back" do
|
|
102
122
|
in_block = nil
|
|
103
123
|
Capybara.using_wait_time 6 do
|
|
104
124
|
in_block = Capybara.default_wait_time
|
|
105
125
|
end
|
|
106
126
|
in_block.should == 6
|
|
107
|
-
Capybara.default_wait_time.should ==
|
|
127
|
+
Capybara.default_wait_time.should == @previous_wait_time
|
|
108
128
|
end
|
|
109
129
|
|
|
110
130
|
it "should ensure wait time is reset" do
|
|
@@ -113,11 +133,7 @@ describe Capybara::DSL do
|
|
|
113
133
|
raise "hell"
|
|
114
134
|
end
|
|
115
135
|
end.to raise_error
|
|
116
|
-
Capybara.default_wait_time.should ==
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
after do
|
|
120
|
-
Capybara.default_wait_time = 0
|
|
136
|
+
Capybara.default_wait_time.should == @previous_wait_time
|
|
121
137
|
end
|
|
122
138
|
end
|
|
123
139
|
|
|
@@ -211,10 +227,6 @@ describe Capybara::DSL do
|
|
|
211
227
|
@session = Class.new { include Capybara::DSL }.new
|
|
212
228
|
end
|
|
213
229
|
|
|
214
|
-
it_should_behave_like "session"
|
|
215
|
-
it_should_behave_like "session without javascript support"
|
|
216
|
-
it_should_behave_like "session without screenshot support"
|
|
217
|
-
|
|
218
230
|
it "should be possible to include it in another class" do
|
|
219
231
|
klass = Class.new do
|
|
220
232
|
include Capybara::DSL
|
data/spec/rack_test_spec.rb
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
+
module TestSessions
|
|
4
|
+
RackTest = Capybara::Session.new(:rack_test, TestApp)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Capybara::SpecHelper.run_specs TestSessions::RackTest, "RackTest", :skip => [
|
|
8
|
+
:js,
|
|
9
|
+
:screenshot,
|
|
10
|
+
:frames,
|
|
11
|
+
:windows
|
|
12
|
+
]
|
|
13
|
+
|
|
3
14
|
describe Capybara::Session do
|
|
4
15
|
context 'with rack test driver' do
|
|
5
16
|
before do
|
|
@@ -23,21 +34,21 @@ describe Capybara::Session do
|
|
|
23
34
|
@session.driver.options[:respect_data_method] = true
|
|
24
35
|
@session.visit "/with_html"
|
|
25
36
|
@session.click_link "A link with data-method"
|
|
26
|
-
@session.
|
|
37
|
+
@session.html.should include('The requested object was deleted')
|
|
27
38
|
end
|
|
28
39
|
|
|
29
40
|
it "should not use data-method if option is false" do
|
|
30
41
|
@session.driver.options[:respect_data_method] = false
|
|
31
42
|
@session.visit "/with_html"
|
|
32
43
|
@session.click_link "A link with data-method"
|
|
33
|
-
@session.
|
|
44
|
+
@session.html.should include('Not deleted')
|
|
34
45
|
end
|
|
35
46
|
|
|
36
47
|
it "should use data-method if available even if it's capitalized" do
|
|
37
48
|
@session.driver.options[:respect_data_method] = true
|
|
38
49
|
@session.visit "/with_html"
|
|
39
50
|
@session.click_link "A link with capitalized data-method"
|
|
40
|
-
@session.
|
|
51
|
+
@session.html.should include('The requested object was deleted')
|
|
41
52
|
end
|
|
42
53
|
|
|
43
54
|
after do
|
|
@@ -50,16 +61,10 @@ describe Capybara::Session do
|
|
|
50
61
|
it "should submit an empty form-data section if no file is submitted" do
|
|
51
62
|
@session.visit("/form")
|
|
52
63
|
@session.click_button("Upload Empty")
|
|
53
|
-
@session.
|
|
64
|
+
@session.html.should include('Successfully ignored empty file field.')
|
|
54
65
|
end
|
|
55
66
|
end
|
|
56
67
|
end
|
|
57
|
-
|
|
58
|
-
it_should_behave_like "session"
|
|
59
|
-
it_should_behave_like "session without javascript support"
|
|
60
|
-
it_should_behave_like "session without screenshot support"
|
|
61
|
-
it_should_behave_like "session with headers support"
|
|
62
|
-
it_should_behave_like "session with status code support"
|
|
63
68
|
end
|
|
64
69
|
end
|
|
65
70
|
|
|
@@ -72,27 +77,27 @@ describe Capybara::RackTest::Driver do
|
|
|
72
77
|
it 'should always set headers' do
|
|
73
78
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
|
74
79
|
@driver.visit('/get_header')
|
|
75
|
-
@driver.
|
|
80
|
+
@driver.html.should include('foobar')
|
|
76
81
|
end
|
|
77
82
|
|
|
78
83
|
it 'should keep headers on link clicks' do
|
|
79
84
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
|
80
85
|
@driver.visit('/header_links')
|
|
81
86
|
@driver.find('.//a').first.click
|
|
82
|
-
@driver.
|
|
87
|
+
@driver.html.should include('foobar')
|
|
83
88
|
end
|
|
84
89
|
|
|
85
90
|
it 'should keep headers on form submit' do
|
|
86
91
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
|
87
92
|
@driver.visit('/header_links')
|
|
88
93
|
@driver.find('.//input').first.click
|
|
89
|
-
@driver.
|
|
94
|
+
@driver.html.should include('foobar')
|
|
90
95
|
end
|
|
91
96
|
|
|
92
97
|
it 'should keep headers on redirects' do
|
|
93
98
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
|
94
99
|
@driver.visit('/get_header_via_redirect')
|
|
95
|
-
@driver.
|
|
100
|
+
@driver.html.should include('foobar')
|
|
96
101
|
end
|
|
97
102
|
end
|
|
98
103
|
|
|
@@ -102,15 +107,15 @@ describe Capybara::RackTest::Driver do
|
|
|
102
107
|
|
|
103
108
|
@driver.visit('/redirect')
|
|
104
109
|
@driver.response.header['Location'].should be_nil
|
|
105
|
-
@driver.browser.current_url.should
|
|
110
|
+
@driver.browser.current_url.should match %r{/landed$}
|
|
106
111
|
end
|
|
107
112
|
|
|
108
113
|
it "is possible to not follow redirects" do
|
|
109
114
|
@driver = Capybara::RackTest::Driver.new(TestApp, :follow_redirects => false)
|
|
110
115
|
|
|
111
116
|
@driver.visit('/redirect')
|
|
112
|
-
@driver.response.header['Location'].should
|
|
113
|
-
@driver.browser.current_url.should
|
|
117
|
+
@driver.response.header['Location'].should match %r{/redirect_again$}
|
|
118
|
+
@driver.browser.current_url.should match %r{/redirect$}
|
|
114
119
|
end
|
|
115
120
|
end
|
|
116
121
|
|
|
@@ -122,13 +127,13 @@ describe Capybara::RackTest::Driver do
|
|
|
122
127
|
|
|
123
128
|
it "should follow 5 redirects" do
|
|
124
129
|
@driver.visit("/redirect/5/times")
|
|
125
|
-
@driver.
|
|
130
|
+
@driver.html.should include('redirection complete')
|
|
126
131
|
end
|
|
127
132
|
|
|
128
133
|
it "should not follow more than 6 redirects" do
|
|
129
|
-
|
|
134
|
+
expect do
|
|
130
135
|
@driver.visit("/redirect/6/times")
|
|
131
|
-
end.
|
|
136
|
+
end.to raise_error(Capybara::InfiniteRedirectError)
|
|
132
137
|
end
|
|
133
138
|
end
|
|
134
139
|
|
|
@@ -139,13 +144,13 @@ describe Capybara::RackTest::Driver do
|
|
|
139
144
|
|
|
140
145
|
it "should follow 21 redirects" do
|
|
141
146
|
@driver.visit("/redirect/21/times")
|
|
142
|
-
@driver.
|
|
147
|
+
@driver.html.should include('redirection complete')
|
|
143
148
|
end
|
|
144
149
|
|
|
145
150
|
it "should not follow more than 21 redirects" do
|
|
146
|
-
|
|
151
|
+
expect do
|
|
147
152
|
@driver.visit("/redirect/22/times")
|
|
148
|
-
end.
|
|
153
|
+
end.to raise_error(Capybara::InfiniteRedirectError)
|
|
149
154
|
end
|
|
150
155
|
end
|
|
151
156
|
end
|