capybara 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +26 -0
- data/README.md +36 -14
- data/lib/capybara.rb +6 -3
- data/lib/capybara/driver/base.rb +37 -1
- data/lib/capybara/driver/node.rb +10 -2
- data/lib/capybara/helpers.rb +21 -13
- data/lib/capybara/node/base.rb +12 -7
- data/lib/capybara/node/element.rb +17 -1
- data/lib/capybara/node/finders.rb +22 -1
- data/lib/capybara/node/matchers.rb +26 -5
- data/lib/capybara/node/simple.rb +9 -2
- data/lib/capybara/rack_test/css_handlers.rb +3 -1
- data/lib/capybara/rack_test/form.rb +3 -2
- data/lib/capybara/rack_test/node.rb +3 -3
- data/lib/capybara/rspec.rb +1 -0
- data/lib/capybara/rspec/features.rb +2 -1
- data/lib/capybara/rspec/matchers.rb +50 -5
- data/lib/capybara/selenium/driver.rb +76 -12
- data/lib/capybara/selenium/node.rb +8 -0
- data/lib/capybara/server.rb +1 -1
- data/lib/capybara/session.rb +234 -29
- data/lib/capybara/spec/public/jquery.js +1 -1
- data/lib/capybara/spec/public/test.js +7 -0
- data/lib/capybara/spec/session/all_spec.rb +88 -17
- data/lib/capybara/spec/session/assert_selector.rb +6 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +15 -15
- data/lib/capybara/spec/session/body_spec.rb +4 -4
- data/lib/capybara/spec/session/check_spec.rb +16 -16
- data/lib/capybara/spec/session/choose_spec.rb +5 -5
- data/lib/capybara/spec/session/click_button_spec.rb +93 -84
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +8 -8
- data/lib/capybara/spec/session/click_link_spec.rb +26 -19
- data/lib/capybara/spec/session/current_scope_spec.rb +3 -3
- data/lib/capybara/spec/session/current_url_spec.rb +8 -8
- data/lib/capybara/spec/session/evaluate_script_spec.rb +1 -1
- data/lib/capybara/spec/session/execute_script_spec.rb +2 -2
- data/lib/capybara/spec/session/fill_in_spec.rb +22 -22
- data/lib/capybara/spec/session/find_button_spec.rb +4 -4
- data/lib/capybara/spec/session/find_by_id_spec.rb +3 -3
- data/lib/capybara/spec/session/find_field_spec.rb +7 -7
- data/lib/capybara/spec/session/find_link_spec.rb +4 -4
- data/lib/capybara/spec/session/find_spec.rb +46 -46
- data/lib/capybara/spec/session/first_spec.rb +23 -23
- data/lib/capybara/spec/session/go_back_spec.rb +3 -3
- data/lib/capybara/spec/session/go_forward_spec.rb +4 -4
- data/lib/capybara/spec/session/has_button_spec.rb +13 -13
- data/lib/capybara/spec/session/has_css_spec.rb +87 -87
- data/lib/capybara/spec/session/has_field_spec.rb +87 -87
- data/lib/capybara/spec/session/has_link_spec.rb +11 -11
- data/lib/capybara/spec/session/has_select_spec.rb +58 -58
- data/lib/capybara/spec/session/has_selector_spec.rb +48 -48
- data/lib/capybara/spec/session/has_table_spec.rb +7 -7
- data/lib/capybara/spec/session/has_text_spec.rb +73 -73
- data/lib/capybara/spec/session/has_title_spec.rb +10 -10
- data/lib/capybara/spec/session/has_xpath_spec.rb +44 -44
- data/lib/capybara/spec/session/headers.rb +1 -1
- data/lib/capybara/spec/session/html_spec.rb +9 -9
- data/lib/capybara/spec/session/node_spec.rb +81 -65
- data/lib/capybara/spec/session/reset_session_spec.rb +15 -15
- data/lib/capybara/spec/session/response_code.rb +1 -1
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +46 -0
- data/lib/capybara/spec/session/save_page_spec.rb +9 -9
- data/lib/capybara/spec/session/{screenshot.rb → screenshot_spec.rb} +4 -2
- data/lib/capybara/spec/session/select_spec.rb +22 -22
- data/lib/capybara/spec/session/text_spec.rb +15 -10
- data/lib/capybara/spec/session/title_spec.rb +2 -2
- data/lib/capybara/spec/session/uncheck_spec.rb +7 -7
- data/lib/capybara/spec/session/unselect_spec.rb +14 -14
- data/lib/capybara/spec/session/visit_spec.rb +24 -17
- data/lib/capybara/spec/session/window/become_closed_spec.rb +84 -0
- data/lib/capybara/spec/session/window/current_window_spec.rb +25 -0
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +28 -0
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +114 -0
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +83 -0
- data/lib/capybara/spec/session/window/window_spec.rb +141 -0
- data/lib/capybara/spec/session/window/windows_spec.rb +31 -0
- data/lib/capybara/spec/session/window/within_window_spec.rb +188 -0
- data/lib/capybara/spec/session/within_frame_spec.rb +9 -9
- data/lib/capybara/spec/session/within_spec.rb +16 -16
- data/lib/capybara/spec/spec_helper.rb +14 -4
- data/lib/capybara/spec/views/form.erb +7 -0
- data/lib/capybara/spec/views/popup_one.erb +1 -1
- data/lib/capybara/spec/views/popup_two.erb +1 -1
- data/lib/capybara/spec/views/with_js.erb +2 -0
- data/lib/capybara/spec/views/with_windows.erb +38 -0
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +123 -0
- data/spec/basic_node_spec.rb +32 -32
- data/spec/capybara_spec.rb +6 -7
- data/spec/dsl_spec.rb +48 -48
- data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
- data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
- data/spec/rack_test_spec.rb +33 -19
- data/spec/result_spec.rb +13 -13
- data/spec/rspec/features_spec.rb +20 -15
- data/spec/rspec/matchers_spec.rb +109 -109
- data/spec/rspec_spec.rb +10 -10
- data/spec/selenium_spec.rb +31 -6
- data/spec/selenium_spec_chrome.rb +2 -2
- data/spec/server_spec.rb +13 -13
- metadata +51 -62
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/capybara/spec/session/within_window_spec.rb +0 -45
- data/lib/capybara/spec/views/within_popups.erb +0 -25
- metadata.gz.sig +0 -0
data/spec/capybara_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Capybara do
|
4
|
-
|
3
|
+
RSpec.describe Capybara do
|
5
4
|
describe 'default_wait_time' do
|
6
5
|
after do
|
7
6
|
Capybara.default_wait_time = @previous_default_time
|
@@ -10,7 +9,7 @@ describe Capybara do
|
|
10
9
|
it "should be changeable" do
|
11
10
|
@previous_default_time = Capybara.default_wait_time
|
12
11
|
Capybara.default_wait_time = 5
|
13
|
-
Capybara.default_wait_time.
|
12
|
+
expect(Capybara.default_wait_time).to eq(5)
|
14
13
|
end
|
15
14
|
end
|
16
15
|
|
@@ -21,7 +20,7 @@ describe Capybara do
|
|
21
20
|
end
|
22
21
|
session = Capybara::Session.new(:schmoo, TestApp)
|
23
22
|
session.visit('/')
|
24
|
-
session.body.
|
23
|
+
expect(session.body).to include("Hello world!")
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
@@ -32,19 +31,19 @@ describe Capybara do
|
|
32
31
|
|
33
32
|
it "should default to a proc that calls run_default_server" do
|
34
33
|
mock_app = double('app')
|
35
|
-
Capybara.
|
34
|
+
expect(Capybara).to receive(:run_default_server).with(mock_app, 8000)
|
36
35
|
Capybara.server.call(mock_app, 8000)
|
37
36
|
end
|
38
37
|
|
39
38
|
it "should return a custom server proc" do
|
40
39
|
server = lambda {|app, port|}
|
41
40
|
Capybara.server(&server)
|
42
|
-
Capybara.server.
|
41
|
+
expect(Capybara.server).to eq(server)
|
43
42
|
end
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
47
|
-
describe Capybara::Session do
|
46
|
+
RSpec.describe Capybara::Session do
|
48
47
|
context 'with non-existant driver' do
|
49
48
|
it "should raise an error" do
|
50
49
|
expect {
|
data/spec/dsl_spec.rb
CHANGED
@@ -5,7 +5,7 @@ class TestClass
|
|
5
5
|
include Capybara::DSL
|
6
6
|
end
|
7
7
|
|
8
|
-
Capybara::SpecHelper.run_specs TestClass.new, "DSL", :
|
8
|
+
Capybara::SpecHelper.run_specs TestClass.new, "DSL", :capybara_skip => [
|
9
9
|
:js,
|
10
10
|
:screenshot,
|
11
11
|
:frames,
|
@@ -14,7 +14,7 @@ Capybara::SpecHelper.run_specs TestClass.new, "DSL", :skip => [
|
|
14
14
|
:hover
|
15
15
|
]
|
16
16
|
|
17
|
-
describe Capybara::DSL do
|
17
|
+
RSpec.describe Capybara::DSL do
|
18
18
|
after do
|
19
19
|
Capybara.session_name = nil
|
20
20
|
Capybara.default_driver = nil
|
@@ -25,36 +25,36 @@ describe Capybara::DSL do
|
|
25
25
|
|
26
26
|
describe '#default_driver' do
|
27
27
|
it "should default to rack_test" do
|
28
|
-
Capybara.default_driver.
|
28
|
+
expect(Capybara.default_driver).to eq(:rack_test)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should be changeable" do
|
32
32
|
Capybara.default_driver = :culerity
|
33
|
-
Capybara.default_driver.
|
33
|
+
expect(Capybara.default_driver).to eq(:culerity)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe '#current_driver' do
|
38
38
|
it "should default to the default driver" do
|
39
|
-
Capybara.current_driver.
|
39
|
+
expect(Capybara.current_driver).to eq(:rack_test)
|
40
40
|
Capybara.default_driver = :culerity
|
41
|
-
Capybara.current_driver.
|
41
|
+
expect(Capybara.current_driver).to eq(:culerity)
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should be changeable" do
|
45
45
|
Capybara.current_driver = :culerity
|
46
|
-
Capybara.current_driver.
|
46
|
+
expect(Capybara.current_driver).to eq(:culerity)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe '#javascript_driver' do
|
51
51
|
it "should default to selenium" do
|
52
|
-
Capybara.javascript_driver.
|
52
|
+
expect(Capybara.javascript_driver).to eq(:selenium)
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should be changeable" do
|
56
56
|
Capybara.javascript_driver = :culerity
|
57
|
-
Capybara.javascript_driver.
|
57
|
+
expect(Capybara.javascript_driver).to eq(:culerity)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -62,26 +62,26 @@ describe Capybara::DSL do
|
|
62
62
|
it "should restore the default driver" do
|
63
63
|
Capybara.current_driver = :culerity
|
64
64
|
Capybara.use_default_driver
|
65
|
-
Capybara.current_driver.
|
65
|
+
expect(Capybara.current_driver).to eq(:rack_test)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
69
|
describe '#using_driver' do
|
70
70
|
before do
|
71
|
-
Capybara.current_driver.
|
71
|
+
expect(Capybara.current_driver).not_to eq(:selenium)
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'should set the driver using Capybara.current_driver=' do
|
75
75
|
driver = nil
|
76
76
|
Capybara.using_driver(:selenium) { driver = Capybara.current_driver }
|
77
|
-
driver.
|
77
|
+
expect(driver).to eq(:selenium)
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'should return the driver to default if it has not been changed' do
|
81
81
|
Capybara.using_driver(:selenium) do
|
82
|
-
Capybara.current_driver.
|
82
|
+
expect(Capybara.current_driver).to eq(:selenium)
|
83
83
|
end
|
84
|
-
Capybara.current_driver.
|
84
|
+
expect(Capybara.current_driver).to eq(Capybara.default_driver)
|
85
85
|
end
|
86
86
|
|
87
87
|
it 'should reset the driver even if an exception occurs' do
|
@@ -90,24 +90,24 @@ describe Capybara::DSL do
|
|
90
90
|
Capybara.using_driver(:selenium) { raise "ohnoes!" }
|
91
91
|
rescue Exception
|
92
92
|
end
|
93
|
-
Capybara.current_driver.
|
93
|
+
expect(Capybara.current_driver).to eq(driver_before_block)
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'should return the driver to what it was previously' do
|
97
97
|
Capybara.current_driver = :selenium
|
98
98
|
Capybara.using_driver(:culerity) do
|
99
99
|
Capybara.using_driver(:rack_test) do
|
100
|
-
Capybara.current_driver.
|
100
|
+
expect(Capybara.current_driver).to eq(:rack_test)
|
101
101
|
end
|
102
|
-
Capybara.current_driver.
|
102
|
+
expect(Capybara.current_driver).to eq(:culerity)
|
103
103
|
end
|
104
|
-
Capybara.current_driver.
|
104
|
+
expect(Capybara.current_driver).to eq(:selenium)
|
105
105
|
end
|
106
106
|
|
107
107
|
it 'should yield the passed block' do
|
108
108
|
called = false
|
109
109
|
Capybara.using_driver(:selenium) { called = true }
|
110
|
-
called.
|
110
|
+
expect(called).to eq(true)
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
@@ -125,8 +125,8 @@ describe Capybara::DSL do
|
|
125
125
|
Capybara.using_wait_time 6 do
|
126
126
|
in_block = Capybara.default_wait_time
|
127
127
|
end
|
128
|
-
in_block.
|
129
|
-
Capybara.default_wait_time.
|
128
|
+
expect(in_block).to eq(6)
|
129
|
+
expect(Capybara.default_wait_time).to eq(@previous_wait_time)
|
130
130
|
end
|
131
131
|
|
132
132
|
it "should ensure wait time is reset" do
|
@@ -135,70 +135,70 @@ describe Capybara::DSL do
|
|
135
135
|
raise "hell"
|
136
136
|
end
|
137
137
|
end.to raise_error
|
138
|
-
Capybara.default_wait_time.
|
138
|
+
expect(Capybara.default_wait_time).to eq(@previous_wait_time)
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
142
142
|
describe '#app' do
|
143
143
|
it "should be changeable" do
|
144
144
|
Capybara.app = "foobar"
|
145
|
-
Capybara.app.
|
145
|
+
expect(Capybara.app).to eq('foobar')
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
149
|
describe '#current_session' do
|
150
150
|
it "should choose a session object of the current driver type" do
|
151
|
-
Capybara.current_session.
|
151
|
+
expect(Capybara.current_session).to be_a(Capybara::Session)
|
152
152
|
end
|
153
153
|
|
154
154
|
it "should use #app as the application" do
|
155
155
|
Capybara.app = proc {}
|
156
|
-
Capybara.current_session.app.
|
156
|
+
expect(Capybara.current_session.app).to eq(Capybara.app)
|
157
157
|
end
|
158
158
|
|
159
159
|
it "should change with the current driver" do
|
160
|
-
Capybara.current_session.mode.
|
160
|
+
expect(Capybara.current_session.mode).to eq(:rack_test)
|
161
161
|
Capybara.current_driver = :selenium
|
162
|
-
Capybara.current_session.mode.
|
162
|
+
expect(Capybara.current_session.mode).to eq(:selenium)
|
163
163
|
end
|
164
164
|
|
165
165
|
it "should be persistent even across driver changes" do
|
166
166
|
object_id = Capybara.current_session.object_id
|
167
|
-
Capybara.current_session.object_id.
|
167
|
+
expect(Capybara.current_session.object_id).to eq(object_id)
|
168
168
|
Capybara.current_driver = :selenium
|
169
|
-
Capybara.current_session.mode.
|
170
|
-
Capybara.current_session.object_id.
|
169
|
+
expect(Capybara.current_session.mode).to eq(:selenium)
|
170
|
+
expect(Capybara.current_session.object_id).not_to eq(object_id)
|
171
171
|
|
172
172
|
Capybara.current_driver = :rack_test
|
173
|
-
Capybara.current_session.object_id.
|
173
|
+
expect(Capybara.current_session.object_id).to eq(object_id)
|
174
174
|
end
|
175
175
|
|
176
176
|
it "should change when changing application" do
|
177
177
|
object_id = Capybara.current_session.object_id
|
178
|
-
Capybara.current_session.object_id.
|
178
|
+
expect(Capybara.current_session.object_id).to eq(object_id)
|
179
179
|
Capybara.app = proc {}
|
180
|
-
Capybara.current_session.object_id.
|
181
|
-
Capybara.current_session.app.
|
180
|
+
expect(Capybara.current_session.object_id).not_to eq(object_id)
|
181
|
+
expect(Capybara.current_session.app).to eq(Capybara.app)
|
182
182
|
end
|
183
183
|
|
184
184
|
it "should change when the session name changes" do
|
185
185
|
object_id = Capybara.current_session.object_id
|
186
186
|
Capybara.session_name = :administrator
|
187
|
-
Capybara.session_name.
|
188
|
-
Capybara.current_session.object_id.
|
187
|
+
expect(Capybara.session_name).to eq(:administrator)
|
188
|
+
expect(Capybara.current_session.object_id).not_to eq(object_id)
|
189
189
|
Capybara.session_name = :default
|
190
|
-
Capybara.session_name.
|
191
|
-
Capybara.current_session.object_id.
|
190
|
+
expect(Capybara.session_name).to eq(:default)
|
191
|
+
expect(Capybara.current_session.object_id).to eq(object_id)
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
195
|
describe "#using_session" do
|
196
196
|
it "should change the session name for the duration of the block" do
|
197
|
-
Capybara.session_name.
|
197
|
+
expect(Capybara.session_name).to eq(:default)
|
198
198
|
Capybara.using_session(:administrator) do
|
199
|
-
Capybara.session_name.
|
199
|
+
expect(Capybara.session_name).to eq(:administrator)
|
200
200
|
end
|
201
|
-
Capybara.session_name.
|
201
|
+
expect(Capybara.session_name).to eq(:default)
|
202
202
|
end
|
203
203
|
|
204
204
|
it "should reset the session to the default, even if an exception occurs" do
|
@@ -208,19 +208,19 @@ describe Capybara::DSL do
|
|
208
208
|
end
|
209
209
|
rescue Exception
|
210
210
|
end
|
211
|
-
Capybara.session_name.
|
211
|
+
expect(Capybara.session_name).to eq(:default)
|
212
212
|
end
|
213
213
|
|
214
214
|
it "should yield the passed block" do
|
215
215
|
called = false
|
216
216
|
Capybara.using_session(:administrator) { called = true }
|
217
|
-
called.
|
217
|
+
expect(called).to eq(true)
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
221
221
|
describe "#session_name" do
|
222
222
|
it "should default to :default" do
|
223
|
-
Capybara.session_name.
|
223
|
+
expect(Capybara.session_name).to eq(:default)
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
@@ -232,22 +232,22 @@ describe Capybara::DSL do
|
|
232
232
|
it "should be possible to include it in another class" do
|
233
233
|
@session.visit('/with_html')
|
234
234
|
@session.click_link('ullamco')
|
235
|
-
@session.body.
|
235
|
+
expect(@session.body).to include('Another World')
|
236
236
|
end
|
237
237
|
|
238
238
|
it "should provide a 'page' shortcut for more expressive tests" do
|
239
239
|
@session.page.visit('/with_html')
|
240
240
|
@session.page.click_link('ullamco')
|
241
|
-
@session.page.body.
|
241
|
+
expect(@session.page.body).to include('Another World')
|
242
242
|
end
|
243
243
|
|
244
244
|
it "should provide an 'using_session' shortcut" do
|
245
|
-
Capybara.
|
245
|
+
expect(Capybara).to receive(:using_session).with(:name)
|
246
246
|
@session.using_session(:name)
|
247
247
|
end
|
248
248
|
|
249
249
|
it "should provide a 'using_wait_time' shortcut" do
|
250
|
-
Capybara.
|
250
|
+
expect(Capybara).to receive(:using_wait_time).with(6)
|
251
251
|
@session.using_wait_time(6)
|
252
252
|
end
|
253
253
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Capybara::Selenium::Driver do
|
3
|
+
RSpec.describe Capybara::Selenium::Driver do
|
4
4
|
it "should exit with a non-zero exit status" do
|
5
5
|
browser = Capybara::Selenium::Driver.new(TestApp).browser
|
6
|
-
true.
|
6
|
+
expect(true).to eq(false)
|
7
7
|
end
|
8
8
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Capybara::Selenium::Driver do
|
3
|
+
RSpec.describe Capybara::Selenium::Driver do
|
4
4
|
it "should exit with a zero exit status" do
|
5
5
|
browser = Capybara::Selenium::Driver.new(TestApp).browser
|
6
|
-
true.
|
6
|
+
expect(true).to eq(true)
|
7
7
|
end
|
8
8
|
end
|
data/spec/rack_test_spec.rb
CHANGED
@@ -4,7 +4,7 @@ module TestSessions
|
|
4
4
|
RackTest = Capybara::Session.new(:rack_test, TestApp)
|
5
5
|
end
|
6
6
|
|
7
|
-
Capybara::SpecHelper.run_specs TestSessions::RackTest, "RackTest", :
|
7
|
+
Capybara::SpecHelper.run_specs TestSessions::RackTest, "RackTest", :capybara_skip => [
|
8
8
|
:js,
|
9
9
|
:screenshot,
|
10
10
|
:frames,
|
@@ -13,7 +13,7 @@ Capybara::SpecHelper.run_specs TestSessions::RackTest, "RackTest", :skip => [
|
|
13
13
|
:hover
|
14
14
|
]
|
15
15
|
|
16
|
-
describe Capybara::Session do
|
16
|
+
RSpec.describe Capybara::Session do
|
17
17
|
context 'with rack test driver' do
|
18
18
|
before do
|
19
19
|
@session = TestSessions::RackTest
|
@@ -21,13 +21,13 @@ describe Capybara::Session do
|
|
21
21
|
|
22
22
|
describe '#driver' do
|
23
23
|
it "should be a rack test driver" do
|
24
|
-
@session.driver.
|
24
|
+
expect(@session.driver).to be_an_instance_of(Capybara::RackTest::Driver)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe '#mode' do
|
29
29
|
it "should remember the mode" do
|
30
|
-
@session.mode.
|
30
|
+
expect(@session.mode).to eq(:rack_test)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -36,21 +36,21 @@ describe Capybara::Session do
|
|
36
36
|
@session.driver.options[:respect_data_method] = true
|
37
37
|
@session.visit "/with_html"
|
38
38
|
@session.click_link "A link with data-method"
|
39
|
-
@session.html.
|
39
|
+
expect(@session.html).to include('The requested object was deleted')
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should not use data-method if option is false" do
|
43
43
|
@session.driver.options[:respect_data_method] = false
|
44
44
|
@session.visit "/with_html"
|
45
45
|
@session.click_link "A link with data-method"
|
46
|
-
@session.html.
|
46
|
+
expect(@session.html).to include('Not deleted')
|
47
47
|
end
|
48
48
|
|
49
49
|
it "should use data-method if available even if it's capitalized" do
|
50
50
|
@session.driver.options[:respect_data_method] = true
|
51
51
|
@session.visit "/with_html"
|
52
52
|
@session.click_link "A link with capitalized data-method"
|
53
|
-
@session.html.
|
53
|
+
expect(@session.html).to include('The requested object was deleted')
|
54
54
|
end
|
55
55
|
|
56
56
|
after do
|
@@ -63,14 +63,14 @@ describe Capybara::Session do
|
|
63
63
|
it "should submit an empty form-data section if no file is submitted" do
|
64
64
|
@session.visit("/form")
|
65
65
|
@session.click_button("Upload Empty")
|
66
|
-
@session.html.
|
66
|
+
expect(@session.html).to include('Successfully ignored empty file field.')
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
describe Capybara::RackTest::Driver do
|
73
|
+
RSpec.describe Capybara::RackTest::Driver do
|
74
74
|
before do
|
75
75
|
@driver = TestSessions::RackTest.driver
|
76
76
|
end
|
@@ -79,27 +79,27 @@ describe Capybara::RackTest::Driver do
|
|
79
79
|
it 'should always set headers' do
|
80
80
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
81
81
|
@driver.visit('/get_header')
|
82
|
-
@driver.html.
|
82
|
+
expect(@driver.html).to include('foobar')
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'should keep headers on link clicks' do
|
86
86
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
87
87
|
@driver.visit('/header_links')
|
88
88
|
@driver.find_xpath('.//a').first.click
|
89
|
-
@driver.html.
|
89
|
+
expect(@driver.html).to include('foobar')
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'should keep headers on form submit' do
|
93
93
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
94
94
|
@driver.visit('/header_links')
|
95
95
|
@driver.find_xpath('.//input').first.click
|
96
|
-
@driver.html.
|
96
|
+
expect(@driver.html).to include('foobar')
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'should keep headers on redirects' do
|
100
100
|
@driver = Capybara::RackTest::Driver.new(TestApp, :headers => {'HTTP_FOO' => 'foobar'})
|
101
101
|
@driver.visit('/get_header_via_redirect')
|
102
|
-
@driver.html.
|
102
|
+
expect(@driver.html).to include('foobar')
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -108,16 +108,16 @@ describe Capybara::RackTest::Driver do
|
|
108
108
|
@driver = Capybara::RackTest::Driver.new(TestApp)
|
109
109
|
|
110
110
|
@driver.visit('/redirect')
|
111
|
-
@driver.response.header['Location'].
|
112
|
-
@driver.browser.current_url.
|
111
|
+
expect(@driver.response.header['Location']).to be_nil
|
112
|
+
expect(@driver.browser.current_url).to match %r{/landed$}
|
113
113
|
end
|
114
114
|
|
115
115
|
it "is possible to not follow redirects" do
|
116
116
|
@driver = Capybara::RackTest::Driver.new(TestApp, :follow_redirects => false)
|
117
117
|
|
118
118
|
@driver.visit('/redirect')
|
119
|
-
@driver.response.header['Location'].
|
120
|
-
@driver.browser.current_url.
|
119
|
+
expect(@driver.response.header['Location']).to match %r{/redirect_again$}
|
120
|
+
expect(@driver.browser.current_url).to match %r{/redirect$}
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -129,7 +129,7 @@ describe Capybara::RackTest::Driver do
|
|
129
129
|
|
130
130
|
it "should follow 5 redirects" do
|
131
131
|
@driver.visit("/redirect/5/times")
|
132
|
-
@driver.html.
|
132
|
+
expect(@driver.html).to include('redirection complete')
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should not follow more than 6 redirects" do
|
@@ -146,7 +146,7 @@ describe Capybara::RackTest::Driver do
|
|
146
146
|
|
147
147
|
it "should follow 21 redirects" do
|
148
148
|
@driver.visit("/redirect/21/times")
|
149
|
-
@driver.html.
|
149
|
+
expect(@driver.html).to include('redirection complete')
|
150
150
|
end
|
151
151
|
|
152
152
|
it "should not follow more than 21 redirects" do
|
@@ -157,3 +157,17 @@ describe Capybara::RackTest::Driver do
|
|
157
157
|
end
|
158
158
|
end
|
159
159
|
end
|
160
|
+
|
161
|
+
module CSSHandlerIncludeTester
|
162
|
+
def dont_extend_css_handler
|
163
|
+
raise 'should never be called'
|
164
|
+
end
|
165
|
+
end
|
166
|
+
include CSSHandlerIncludeTester
|
167
|
+
|
168
|
+
RSpec.describe Capybara::RackTest::CSSHandlers do
|
169
|
+
it "should not be extended by global includes" do
|
170
|
+
expect(Capybara::RackTest::CSSHandlers.new).not_to respond_to(:dont_extend_css_handler)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|