capybara 1.1.4 → 2.0.0.beta2
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 +100 -0
- data/License.txt +22 -0
- data/README.md +829 -0
- data/lib/capybara.rb +124 -6
- data/lib/capybara/cucumber.rb +2 -5
- data/lib/capybara/driver/base.rb +5 -5
- data/lib/capybara/driver/node.rb +2 -2
- data/lib/capybara/dsl.rb +3 -121
- data/lib/capybara/node/actions.rb +12 -28
- data/lib/capybara/node/base.rb +5 -13
- data/lib/capybara/node/element.rb +21 -21
- data/lib/capybara/node/finders.rb +27 -89
- data/lib/capybara/node/matchers.rb +107 -69
- data/lib/capybara/node/simple.rb +11 -13
- data/lib/capybara/query.rb +78 -0
- data/lib/capybara/rack_test/browser.rb +16 -27
- data/lib/capybara/rack_test/driver.rb +11 -1
- data/lib/capybara/rack_test/node.rb +17 -1
- data/lib/capybara/result.rb +84 -0
- data/lib/capybara/rspec/matchers.rb +28 -63
- data/lib/capybara/selector.rb +97 -33
- data/lib/capybara/selenium/driver.rb +14 -61
- data/lib/capybara/selenium/node.rb +6 -15
- data/lib/capybara/server.rb +32 -27
- data/lib/capybara/session.rb +54 -30
- data/lib/capybara/spec/public/jquery-ui.js +791 -0
- data/lib/capybara/spec/public/jquery.js +9046 -0
- data/lib/capybara/spec/public/test.js +4 -1
- data/lib/capybara/spec/session.rb +56 -27
- data/lib/capybara/spec/session/all_spec.rb +8 -4
- data/lib/capybara/spec/session/attach_file_spec.rb +12 -9
- data/lib/capybara/spec/session/check_spec.rb +6 -3
- data/lib/capybara/spec/session/choose_spec.rb +4 -1
- data/lib/capybara/spec/session/click_button_spec.rb +5 -14
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +2 -1
- data/lib/capybara/spec/session/click_link_spec.rb +3 -17
- data/lib/capybara/spec/session/current_url_spec.rb +77 -9
- data/lib/capybara/spec/session/fill_in_spec.rb +8 -18
- data/lib/capybara/spec/session/find_spec.rb +19 -46
- data/lib/capybara/spec/session/first_spec.rb +2 -34
- data/lib/capybara/spec/session/has_css_spec.rb +1 -1
- data/lib/capybara/spec/session/has_field_spec.rb +28 -0
- data/lib/capybara/spec/session/has_select_spec.rb +84 -31
- data/lib/capybara/spec/session/has_table_spec.rb +7 -69
- data/lib/capybara/spec/session/has_text_spec.rb +168 -0
- data/lib/capybara/spec/session/javascript.rb +65 -81
- data/lib/capybara/spec/session/node_spec.rb +115 -0
- data/lib/capybara/spec/session/screenshot.rb +29 -0
- data/lib/capybara/spec/session/select_spec.rb +12 -12
- data/lib/capybara/spec/session/text_spec.rb +9 -4
- data/lib/capybara/spec/session/unselect_spec.rb +12 -6
- data/lib/capybara/spec/session/visit_spec.rb +76 -0
- data/lib/capybara/spec/session/within_frame_spec.rb +33 -0
- data/lib/capybara/spec/session/within_spec.rb +47 -58
- data/lib/capybara/spec/session/within_window_spec.rb +40 -0
- data/lib/capybara/spec/test_app.rb +27 -3
- data/lib/capybara/spec/views/form.erb +11 -10
- data/lib/capybara/spec/views/host_links.erb +2 -2
- data/lib/capybara/spec/views/tables.erb +6 -66
- data/lib/capybara/spec/views/with_html.erb +3 -3
- data/lib/capybara/spec/views/with_js.erb +11 -8
- data/lib/capybara/util/save_and_open_page.rb +4 -3
- data/lib/capybara/version.rb +1 -1
- data/spec/basic_node_spec.rb +15 -3
- data/spec/dsl_spec.rb +12 -10
- data/spec/rack_test_spec.rb +152 -0
- data/spec/rspec/features_spec.rb +0 -2
- data/spec/rspec/matchers_spec.rb +164 -89
- data/spec/rspec_spec.rb +0 -2
- data/spec/selenium_spec.rb +67 -0
- data/spec/server_spec.rb +35 -23
- data/spec/spec_helper.rb +18 -2
- metadata +30 -30
- data/README.rdoc +0 -722
- data/lib/capybara/spec/driver.rb +0 -301
- data/lib/capybara/spec/session/current_host_spec.rb +0 -68
- data/lib/capybara/spec/session/has_content_spec.rb +0 -106
- data/lib/capybara/util/timeout.rb +0 -27
- data/spec/driver/rack_test_driver_spec.rb +0 -89
- data/spec/driver/selenium_driver_spec.rb +0 -37
- data/spec/session/rack_test_session_spec.rb +0 -55
- data/spec/session/selenium_session_spec.rb +0 -26
- data/spec/string_spec.rb +0 -77
- data/spec/timeout_spec.rb +0 -28
@@ -3,8 +3,14 @@ require 'rack'
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
class TestApp < Sinatra::Base
|
6
|
+
class TestAppError < StandardError; end
|
7
|
+
|
6
8
|
set :root, File.dirname(__FILE__)
|
7
9
|
set :static, true
|
10
|
+
set :raise_errors, true
|
11
|
+
set :show_exceptions, false
|
12
|
+
|
13
|
+
# Also check lib/capybara/spec/views/*.erb for pages not listed here
|
8
14
|
|
9
15
|
get '/' do
|
10
16
|
'Hello world! <a href="with_html">Relative</a>'
|
@@ -22,8 +28,22 @@ class TestApp < Sinatra::Base
|
|
22
28
|
redirect '/landed'
|
23
29
|
end
|
24
30
|
|
31
|
+
get '/referer_base' do
|
32
|
+
'<a href="/get_referer">direct link</a>' +
|
33
|
+
'<a href="/redirect_to_get_referer">link via redirect</a>' +
|
34
|
+
'<form action="/get_referer" method="get"><input type="submit"></form>'
|
35
|
+
end
|
36
|
+
|
37
|
+
get '/redirect_to_get_referer' do
|
38
|
+
redirect '/get_referer'
|
39
|
+
end
|
40
|
+
|
41
|
+
get '/get_referer' do
|
42
|
+
request.referer.nil? ? "No referer" : "Got referer: #{request.referer}"
|
43
|
+
end
|
44
|
+
|
25
45
|
get '/host' do
|
26
|
-
"Current host is #{request.scheme}://#{request.host}"
|
46
|
+
"Current host is #{request.scheme}://#{request.host}:#{request.port}"
|
27
47
|
end
|
28
48
|
|
29
49
|
get '/redirect/:times/times' do
|
@@ -72,7 +92,7 @@ class TestApp < Sinatra::Base
|
|
72
92
|
end
|
73
93
|
|
74
94
|
get '/redirect_secure' do
|
75
|
-
redirect "https://#{request.host}/host"
|
95
|
+
redirect "https://#{request.host}:#{request.port}/host"
|
76
96
|
end
|
77
97
|
|
78
98
|
get '/slow_response' do
|
@@ -98,6 +118,10 @@ class TestApp < Sinatra::Base
|
|
98
118
|
redirect '/get_header'
|
99
119
|
end
|
100
120
|
|
121
|
+
get '/error' do
|
122
|
+
raise TestAppError, "some error"
|
123
|
+
end
|
124
|
+
|
101
125
|
get '/:view' do |view|
|
102
126
|
erb view.to_sym
|
103
127
|
end
|
@@ -107,7 +131,7 @@ class TestApp < Sinatra::Base
|
|
107
131
|
end
|
108
132
|
|
109
133
|
post '/upload_empty' do
|
110
|
-
if params[:form]
|
134
|
+
if params[:form][:file].nil?
|
111
135
|
'Successfully ignored empty file field.'
|
112
136
|
else
|
113
137
|
'Something went wrong.'
|
@@ -32,7 +32,7 @@
|
|
32
32
|
<label for="form_last_name">Last Name</label>
|
33
33
|
<input type="text" name="form[last_name]" value="Smith" id="form_last_name"/>
|
34
34
|
</p>
|
35
|
-
|
35
|
+
|
36
36
|
<p>
|
37
37
|
<label for="form_name_explanation">Explanation of Name</label>
|
38
38
|
<textarea name="form[name_explanation]" id="form_name_explanation"></textarea>
|
@@ -47,7 +47,7 @@
|
|
47
47
|
<label for="form_schmooo">Schmooo</label>
|
48
48
|
<input type="schmooo" name="form[schmooo]" value="This is Schmooo!" id="form_schmooo"/>
|
49
49
|
</p>
|
50
|
-
|
50
|
+
|
51
51
|
<p>
|
52
52
|
<label>Street<br/>
|
53
53
|
<input type="text" maxlength="" name="form[street]" value="Sesame street 66"/>
|
@@ -74,7 +74,7 @@
|
|
74
74
|
<label for="form_image">Image</label>
|
75
75
|
<input type="file" name="form[image]" id="form_image"/>
|
76
76
|
</p>
|
77
|
-
|
77
|
+
|
78
78
|
<p>
|
79
79
|
<input type="hidden" name="form[token]" value="12345" id="form_token"/>
|
80
80
|
</p>
|
@@ -155,7 +155,7 @@
|
|
155
155
|
<p>
|
156
156
|
<label for="form_underwear">Underwear</label>
|
157
157
|
<select name="form[underwear][]" id="form_underwear" multiple="multiple">
|
158
|
-
<option selected="selected">
|
158
|
+
<option selected="selected">Boxerbriefs</option>
|
159
159
|
<option>Boxers</option>
|
160
160
|
<option selected="selected">Briefs</option>
|
161
161
|
<option selected="selected">Commando</option>
|
@@ -163,7 +163,7 @@
|
|
163
163
|
<option selected="selected" value="thermal">Long Johns</option>
|
164
164
|
</select>
|
165
165
|
</p>
|
166
|
-
|
166
|
+
|
167
167
|
<p>
|
168
168
|
<span>First address<span>
|
169
169
|
<label for='address1_street'>Street</label>
|
@@ -185,7 +185,7 @@
|
|
185
185
|
<input type="text" name="form[addresses][][street]" value="" id="address2_street">
|
186
186
|
|
187
187
|
<label for='address2_city'>City</label>
|
188
|
-
<input type="text" name="form[addresses][][city]" value="" id="address2_city">
|
188
|
+
<input type="text" name="form[addresses][][city]" value="" id="address2_city">
|
189
189
|
|
190
190
|
<label for='address2_country'>Country</label>
|
191
191
|
<select name="form[addresses][][country]" id="address2_country">
|
@@ -274,6 +274,7 @@
|
|
274
274
|
</p>
|
275
275
|
|
276
276
|
<p>
|
277
|
+
<input type="hidden" name="form[dummy]" value="ensure params[:form] exists"/>
|
277
278
|
<input type="submit" value="Upload Empty"/>
|
278
279
|
<p>
|
279
280
|
</form>
|
@@ -285,12 +286,12 @@
|
|
285
286
|
</p>
|
286
287
|
|
287
288
|
<p>
|
288
|
-
<label for="form_document">Document</label>
|
289
|
+
<label for="form_document">Single Document</label>
|
289
290
|
<input type="file" name="form[document]" id="form_document"/>
|
290
291
|
</p>
|
291
|
-
|
292
|
+
|
292
293
|
<p>
|
293
|
-
<input type="submit" value="Upload"/>
|
294
|
+
<input type="submit" value="Upload Single"/>
|
294
295
|
<p>
|
295
296
|
</form>
|
296
297
|
|
@@ -337,7 +338,7 @@
|
|
337
338
|
<label for="html5_color">Html5 Color</label>
|
338
339
|
<input type="color" name="form[html5_color]" value="#FFFFFF" id="html5_color"/>
|
339
340
|
</p>
|
340
|
-
|
341
|
+
|
341
342
|
<p>
|
342
343
|
<input type="submit" name="form[html5_submit]" value="html5_submit"/>
|
343
344
|
</p>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<p>
|
2
2
|
<a href="/host">Relative Host</a>
|
3
|
-
<a href="
|
3
|
+
<a href="<%= params[:absolute_host] %>/host">Absolute Host</a>
|
4
4
|
</p>
|
5
5
|
|
6
6
|
<form action="/host">
|
7
7
|
<p><input type="submit" value="Relative Host"/></p>
|
8
8
|
</form>
|
9
9
|
|
10
|
-
<form action="
|
10
|
+
<form action="<%= params[:absolute_host] %>/host">
|
11
11
|
<p><input type="submit" value="Absolute Host"/></p>
|
12
12
|
</form>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<form action="/form" method="post">
|
2
2
|
<table id="agent_table">
|
3
3
|
<caption>Agent</caption>
|
4
|
-
|
4
|
+
|
5
5
|
<tr>
|
6
6
|
<td>
|
7
7
|
<label for="form_agent_name">Name</label>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<input type="text" name="form[agent_name]" value="James" id="form_agent_name"/>
|
11
11
|
</td>
|
12
12
|
</tr>
|
13
|
-
|
13
|
+
|
14
14
|
<tr>
|
15
15
|
<td colspan="2">
|
16
16
|
<input type="submit" value="Create"/>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<form action="/form" method="post">
|
23
23
|
<table id="girl_table">
|
24
24
|
<caption>Girl</caption>
|
25
|
-
|
25
|
+
|
26
26
|
<tr>
|
27
27
|
<td>
|
28
28
|
<label for="form_girl_name">Name</label>
|
@@ -31,7 +31,7 @@
|
|
31
31
|
<input type="text" name="form[girl_name]" value="Vesper" id="form_girl_name"/>
|
32
32
|
</td>
|
33
33
|
</tr>
|
34
|
-
|
34
|
+
|
35
35
|
<tr>
|
36
36
|
<td colspan="2">
|
37
37
|
<input type="submit" value="Create"/>
|
@@ -43,7 +43,7 @@
|
|
43
43
|
<form action="/form" method="post">
|
44
44
|
<table id="villain_table">
|
45
45
|
<caption>Villain</caption>
|
46
|
-
|
46
|
+
|
47
47
|
<tr>
|
48
48
|
<td>
|
49
49
|
<label for="form_villain_name">Name</label>
|
@@ -52,7 +52,7 @@
|
|
52
52
|
<input type="text" name="form[villain_name]" value="Ernst" id="form_villain_name"/>
|
53
53
|
</td>
|
54
54
|
</tr>
|
55
|
-
|
55
|
+
|
56
56
|
<tr>
|
57
57
|
<td colspan="2">
|
58
58
|
<input type="submit" value="Create"/>
|
@@ -60,63 +60,3 @@
|
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</form>
|
63
|
-
|
64
|
-
<table>
|
65
|
-
<caption>Ransom</caption>
|
66
|
-
|
67
|
-
<thead>
|
68
|
-
<tr>
|
69
|
-
<th>Year</th>
|
70
|
-
<th>Governmental</th>
|
71
|
-
<th>Private</th>
|
72
|
-
</tr>
|
73
|
-
</thead>
|
74
|
-
|
75
|
-
<tbody>
|
76
|
-
<tr>
|
77
|
-
<th scope="row">2007</th>
|
78
|
-
<td>$300</td>
|
79
|
-
<td>$100</td>
|
80
|
-
</tr>
|
81
|
-
<tr>
|
82
|
-
<th scope="row">2008</th>
|
83
|
-
<td>$123</td>
|
84
|
-
<td>$897</td>
|
85
|
-
</tr>
|
86
|
-
<tr>
|
87
|
-
<th scope="row">2009</th>
|
88
|
-
<td>$543</td>
|
89
|
-
<td>$99</td>
|
90
|
-
</tr>
|
91
|
-
</tbody>
|
92
|
-
</table>
|
93
|
-
|
94
|
-
<table>
|
95
|
-
<caption>Deaths</caption>
|
96
|
-
|
97
|
-
<thead>
|
98
|
-
<tr>
|
99
|
-
<th>Year</th>
|
100
|
-
<th>Sharks with lasers</th>
|
101
|
-
<th>Flaming volcano</th>
|
102
|
-
</tr>
|
103
|
-
</thead>
|
104
|
-
|
105
|
-
<tbody>
|
106
|
-
<tr>
|
107
|
-
<th scope="row">2007</th>
|
108
|
-
<td>66</td>
|
109
|
-
<td>7</td>
|
110
|
-
</tr>
|
111
|
-
<tr>
|
112
|
-
<th scope="row">2008</th>
|
113
|
-
<td>123</td>
|
114
|
-
<td>12</td>
|
115
|
-
</tr>
|
116
|
-
<tr>
|
117
|
-
<th scope="row">2009</th>
|
118
|
-
<td>913</td>
|
119
|
-
<td>13</td>
|
120
|
-
</tr>
|
121
|
-
</tbody>
|
122
|
-
</table>
|
@@ -37,14 +37,14 @@ banana</textarea>
|
|
37
37
|
<a title="twas a fine link" href="/redirect">A link came first</a>
|
38
38
|
<a title="a fine link" href="/with_simple_html">A link</a>
|
39
39
|
<a title="a fine link with data method" data-method="delete" href="/delete">A link with data-method</a>
|
40
|
+
<a title="a fine link with capitalized data method" data-method="DELETE" href="/delete">A link with capitalized data-method</a>
|
40
41
|
<a>No Href</a>
|
41
42
|
<a href="">Blank Href</a>
|
42
43
|
<a href="#">Blank Anchor</a>
|
43
|
-
<a href="#anchor">Anchor</a>
|
44
|
+
<a href="#anchor">Normal Anchor</a>
|
44
45
|
<a href="/with_simple_html#anchor">Anchor on different page</a>
|
45
46
|
<a href="/with_html#anchor">Anchor on same page</a>
|
46
47
|
<a href="with_html">Relative</a>
|
47
|
-
<input type="text" value="" id="test_field">
|
48
48
|
<input type="text" checked="checked" id="checked_field">
|
49
49
|
<a href="/redirect"><img width="20" height="20" alt="very fine image" /></a>
|
50
50
|
<a href="/with_simple_html"><img width="20" height="20" alt="fine image" /></a>
|
@@ -57,7 +57,7 @@ banana</textarea>
|
|
57
57
|
|
58
58
|
<div id="hidden" style="display: none;">
|
59
59
|
<div id="hidden_via_ancestor">Inside element with hidden ancestor</div>
|
60
|
-
<a href="/with_simple_html" title="
|
60
|
+
<a href="/with_simple_html" title="hidden link" class="simple">hidden link</a>
|
61
61
|
</div>
|
62
62
|
|
63
63
|
<div style="display: none;">
|
@@ -2,14 +2,14 @@
|
|
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="
|
6
|
-
<script src="
|
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>
|
7
7
|
<script src="/test.js" type="text/javascript" charset="utf-8"></script>
|
8
8
|
</head>
|
9
|
-
|
9
|
+
|
10
10
|
<body id="with_js">
|
11
11
|
<h1>FooBar</h1>
|
12
|
-
|
12
|
+
|
13
13
|
<p id="change">This is text</p>
|
14
14
|
<div id="drag">
|
15
15
|
<p>This is a draggable element.</p>
|
@@ -17,20 +17,24 @@
|
|
17
17
|
<div id="drop">
|
18
18
|
<p>It should be dropped here.</p>
|
19
19
|
</div>
|
20
|
-
|
20
|
+
|
21
21
|
<p><a href="#" id="clickable">Click me</a></p>
|
22
|
-
|
22
|
+
|
23
23
|
<p>
|
24
24
|
<select id="waiter">
|
25
25
|
<option>Foo</option>
|
26
26
|
<option>My Waiting Option</option>
|
27
27
|
</select>
|
28
28
|
</p>
|
29
|
-
|
29
|
+
|
30
30
|
<p>
|
31
31
|
<input type="text" name="with_focus_event" value="" id="with_focus_event"/>
|
32
32
|
</p>
|
33
33
|
|
34
|
+
<p>
|
35
|
+
<input type="text" name="with_change_event" value="default value" id="with_change_event"/>
|
36
|
+
</p>
|
37
|
+
|
34
38
|
<p>
|
35
39
|
<input type="checkbox" id="checkbox_with_event"/>
|
36
40
|
</p>
|
@@ -41,7 +45,6 @@
|
|
41
45
|
|
42
46
|
<p>
|
43
47
|
<a id="reload-link" href="#">Reload!</a>
|
44
|
-
<em>this won't change</em>
|
45
48
|
<div id="reload-me"><em>waiting to be reloaded</em></div>
|
46
49
|
</p>
|
47
50
|
|
@@ -22,11 +22,12 @@ module Capybara
|
|
22
22
|
protected
|
23
23
|
|
24
24
|
def open_in_browser(path) # :nodoc
|
25
|
-
require "launchy"
|
25
|
+
require "launchy" # could raise LoadError
|
26
|
+
raise LoadError unless Launchy::Version::MAJOR >= 2
|
26
27
|
Launchy.open(path)
|
27
28
|
rescue LoadError
|
28
|
-
warn "
|
29
|
-
"
|
29
|
+
warn "You need launchy >=2.0.0 to open pages with `save_and_open_page`:\n" <<
|
30
|
+
"gem 'launchy', '>= 2.0.0', :require => false, :group => :test"
|
30
31
|
end
|
31
32
|
|
32
33
|
def rewrite_css_and_image_references(response_html) # :nodoc:
|
data/lib/capybara/version.rb
CHANGED
data/spec/basic_node_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe Capybara do
|
|
6
6
|
Capybara.string <<-STRING
|
7
7
|
<div id="page">
|
8
8
|
<div id="content">
|
9
|
-
<h1 data="fantastic">
|
9
|
+
<h1 data="fantastic">Totally awesome</h1>
|
10
10
|
<p>Yes it is</p>
|
11
11
|
</div>
|
12
12
|
|
@@ -19,6 +19,10 @@ describe Capybara do
|
|
19
19
|
<option selected="selected">Capybara</option>
|
20
20
|
</select>
|
21
21
|
</div>
|
22
|
+
|
23
|
+
<section>
|
24
|
+
<div class="subsection"></div>
|
25
|
+
</div>
|
22
26
|
</div>
|
23
27
|
STRING
|
24
28
|
end
|
@@ -38,8 +42,16 @@ describe Capybara do
|
|
38
42
|
string.should_not have_selector(:lifeform, "Gorilla")
|
39
43
|
end
|
40
44
|
|
45
|
+
it 'allows custom matcher using css' do
|
46
|
+
Capybara.add_selector :section do
|
47
|
+
css { |css_class| "section .#{css_class}" }
|
48
|
+
end
|
49
|
+
string.should have_selector(:section, 'subsection')
|
50
|
+
string.should_not have_selector(:section, 'section_8')
|
51
|
+
end
|
52
|
+
|
41
53
|
it "allows using matchers with text option" do
|
42
|
-
string.should have_css('h1', :text => '
|
54
|
+
string.should have_css('h1', :text => 'Totally awesome')
|
43
55
|
string.should_not have_css('h1', :text => 'Not so awesome')
|
44
56
|
end
|
45
57
|
|
@@ -49,7 +61,7 @@ describe Capybara do
|
|
49
61
|
end
|
50
62
|
|
51
63
|
it "allows finding elements and extracting text from them" do
|
52
|
-
string.find('//h1').text.should == '
|
64
|
+
string.find('//h1').text.should == 'Totally awesome'
|
53
65
|
end
|
54
66
|
|
55
67
|
it "allows finding elements and extracting attributes from them" do
|
data/spec/dsl_spec.rb
CHANGED
@@ -1,18 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
|
3
2
|
require 'capybara/dsl'
|
4
3
|
|
5
4
|
describe Capybara::DSL do
|
6
|
-
|
7
|
-
before do
|
8
|
-
Capybara.app = TestApp
|
9
|
-
end
|
10
|
-
|
11
5
|
after do
|
12
6
|
Capybara.session_name = nil
|
13
7
|
Capybara.default_driver = nil
|
14
|
-
Capybara.javascript_driver = nil
|
15
8
|
Capybara.use_default_driver
|
9
|
+
Capybara.app = TestApp
|
16
10
|
end
|
17
11
|
|
18
12
|
describe '#default_driver' do
|
@@ -69,12 +63,20 @@ describe Capybara::DSL do
|
|
69
63
|
driver.should == :selenium
|
70
64
|
end
|
71
65
|
|
72
|
-
it 'should
|
66
|
+
it 'should return the driver to default if it has not been changed' do
|
67
|
+
Capybara.using_driver(:selenium) do
|
68
|
+
Capybara.current_driver.should == :selenium
|
69
|
+
end
|
70
|
+
Capybara.current_driver.should == Capybara.default_driver
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should reset the driver even if an exception occurs' do
|
74
|
+
driver_before_block = Capybara.current_driver
|
73
75
|
begin
|
74
76
|
Capybara.using_driver(:selenium) { raise "ohnoes!" }
|
75
77
|
rescue Exception
|
76
78
|
end
|
77
|
-
Capybara.current_driver.should ==
|
79
|
+
Capybara.current_driver.should == driver_before_block
|
78
80
|
end
|
79
81
|
|
80
82
|
it 'should return the driver to what it was previously' do
|
@@ -211,6 +213,7 @@ describe Capybara::DSL do
|
|
211
213
|
|
212
214
|
it_should_behave_like "session"
|
213
215
|
it_should_behave_like "session without javascript support"
|
216
|
+
it_should_behave_like "session without screenshot support"
|
214
217
|
|
215
218
|
it "should be possible to include it in another class" do
|
216
219
|
klass = Class.new do
|
@@ -250,5 +253,4 @@ describe Capybara::DSL do
|
|
250
253
|
foo.using_wait_time(6)
|
251
254
|
end
|
252
255
|
end
|
253
|
-
|
254
256
|
end
|