capybara-webkit 1.12.0 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ require 'capybara/webkit/cookie_jar'
4
4
  describe Capybara::Webkit::CookieJar do
5
5
  let(:browser) {
6
6
  browser = double("Browser")
7
- browser.stub(:get_cookies) { [
7
+ allow(browser).to receive(:get_cookies) { [
8
8
  "cookie1=1; domain=.example.org; path=/",
9
9
  "cookie1=2; domain=.example.org; path=/dir1/",
10
10
  "cookie1=3; domain=.facebook.com; path=/",
@@ -17,32 +17,32 @@ describe Capybara::Webkit::CookieJar do
17
17
 
18
18
  describe "#find" do
19
19
  it "returns a cookie object" do
20
- subject.find("cookie1", "www.facebook.com").domain.should eq ".facebook.com"
20
+ expect(subject.find("cookie1", "www.facebook.com").domain).to eq ".facebook.com"
21
21
  end
22
22
 
23
23
  it "returns the right cookie for every given domain/path" do
24
- subject.find("cookie1", "example.org").value.should eq "1"
25
- subject.find("cookie1", "www.facebook.com").value.should eq "3"
26
- subject.find("cookie2", "sub1.example.org").value.should eq "4"
24
+ expect(subject.find("cookie1", "example.org").value).to eq "1"
25
+ expect(subject.find("cookie1", "www.facebook.com").value).to eq "3"
26
+ expect(subject.find("cookie2", "sub1.example.org").value).to eq "4"
27
27
  end
28
28
 
29
29
  it "does not return a cookie from other domain" do
30
- subject.find("cookie2", "www.example.org").should eq nil
30
+ expect(subject.find("cookie2", "www.example.org")).to eq nil
31
31
  end
32
32
 
33
33
  it "respects path precedence rules" do
34
- subject.find("cookie1", "www.example.org").value.should eq "1"
35
- subject.find("cookie1", "www.example.org", "/dir1/123").value.should eq "2"
34
+ expect(subject.find("cookie1", "www.example.org").value).to eq "1"
35
+ expect(subject.find("cookie1", "www.example.org", "/dir1/123").value).to eq "2"
36
36
  end
37
37
  end
38
38
 
39
39
  describe "#[]" do
40
40
  it "returns the first matching cookie's value" do
41
- subject["cookie1", "example.org"].should eq "1"
41
+ expect(subject["cookie1", "example.org"]).to eq "1"
42
42
  end
43
43
 
44
44
  it "returns nil if no cookie is found" do
45
- subject["notexisting"].should eq nil
45
+ expect(subject["notexisting"]).to eq nil
46
46
  end
47
47
  end
48
48
  end
@@ -34,16 +34,16 @@ describe Capybara::Webkit::Driver, "rendering an image" do
34
34
  before { render({}) }
35
35
 
36
36
  it "should be a PNG" do
37
- @image[:format].should eq "PNG"
37
+ expect(@image[:format]).to eq "PNG"
38
38
  end
39
39
 
40
40
  it "width default to 1000px (with 15px less for the scrollbar)" do
41
- @image[:width].should be < 1001
42
- @image[:width].should be > 1000-17
41
+ expect(@image[:width]).to be < 1001
42
+ expect(@image[:width]).to be > 1000-17
43
43
  end
44
44
 
45
45
  it "height should be at least 10px" do
46
- @image[:height].should be >= 10
46
+ expect(@image[:height]).to be >= 10
47
47
  end
48
48
  end
49
49
 
@@ -51,16 +51,16 @@ describe Capybara::Webkit::Driver, "rendering an image" do
51
51
  before { render(:width => 500, :height => 400) }
52
52
 
53
53
  it "width should match the width given" do
54
- @image[:width].should eq 500
54
+ expect(@image[:width]).to eq 500
55
55
  end
56
56
 
57
57
  it "height should match the height given" do
58
- @image[:height].should eq 400
58
+ expect(@image[:height]).to eq 400
59
59
  end
60
60
 
61
61
  it "should reset window dimensions to their default value" do
62
- driver.evaluate_script('window.innerWidth').should eq 1680
63
- driver.evaluate_script('window.innerHeight').should eq 1050
62
+ expect(driver.evaluate_script('window.innerWidth')).to eq 1680
63
+ expect(driver.evaluate_script('window.innerHeight')).to eq 1050
64
64
  end
65
65
  end
66
66
 
@@ -68,16 +68,16 @@ describe Capybara::Webkit::Driver, "rendering an image" do
68
68
  before { render(:width => 50, :height => 10) }
69
69
 
70
70
  it "width should be greater than the width given" do
71
- @image[:width].should be > 50
71
+ expect(@image[:width]).to be > 50
72
72
  end
73
73
 
74
74
  it "height should be greater than the height given" do
75
- @image[:height].should be > 10
75
+ expect(@image[:height]).to be > 10
76
76
  end
77
77
 
78
78
  it "should restore viewport dimensions after rendering" do
79
- driver.evaluate_script('window.innerWidth').should eq 1680
80
- driver.evaluate_script('window.innerHeight').should eq 1050
79
+ expect(driver.evaluate_script('window.innerWidth')).to eq 1680
80
+ expect(driver.evaluate_script('window.innerHeight')).to eq 1050
81
81
  end
82
82
  end
83
83
 
@@ -86,8 +86,8 @@ describe Capybara::Webkit::Driver, "rendering an image" do
86
86
 
87
87
  it "should restore viewport dimensions after rendering" do
88
88
  render({})
89
- driver.evaluate_script('window.innerWidth').should eq 800
90
- driver.evaluate_script('window.innerHeight').should eq 600
89
+ expect(driver.evaluate_script('window.innerWidth')).to eq 800
90
+ expect(driver.evaluate_script('window.innerHeight')).to eq 600
91
91
  end
92
92
  end
93
93
 
@@ -27,23 +27,23 @@ describe Capybara::Webkit::Driver, "#resize_window(width, height)" do
27
27
  driver.visit("#{AppRunner.app_host}/")
28
28
 
29
29
  driver.resize_window(800, 600)
30
- driver.html.should include("[800x600]")
30
+ expect(driver.html).to include("[800x600]")
31
31
 
32
32
  driver.resize_window(300, 100)
33
- driver.html.should include("[300x100]")
33
+ expect(driver.html).to include("[300x100]")
34
34
  end
35
35
 
36
36
  it "resizes the window to the specified size even before the document has loaded" do
37
37
  driver.resize_window(800, 600)
38
38
  driver.visit("#{AppRunner.app_host}/")
39
- driver.html.should include("[800x600]")
39
+ expect(driver.html).to include("[800x600]")
40
40
  end
41
41
 
42
42
  it "resets the window to the default size when the driver is reset" do
43
43
  driver.resize_window(800, 600)
44
44
  driver.reset!
45
45
  driver.visit("#{AppRunner.app_host}/")
46
- driver.html.should include(DEFAULT_DIMENTIONS)
46
+ expect(driver.html).to include(DEFAULT_DIMENTIONS)
47
47
  end
48
48
 
49
49
  it "resizes windows by handle" do
@@ -54,8 +54,8 @@ describe Capybara::Webkit::Driver, "#resize_window(width, height)" do
54
54
  driver.resize_window_to(driver.window_handles.first, 800, 600)
55
55
  driver.resize_window_to(driver.window_handles.last, 400, 300)
56
56
 
57
- driver.window_size(driver.window_handles.first).should eq [800, 600]
58
- driver.window_size(driver.window_handles.last).should eq [400, 300]
57
+ expect(driver.window_size(driver.window_handles.first)).to eq [800, 600]
58
+ expect(driver.window_size(driver.window_handles.last)).to eq [400, 300]
59
59
  end
60
60
 
61
61
  it "maximizes a window" do
@@ -64,7 +64,7 @@ describe Capybara::Webkit::Driver, "#resize_window(width, height)" do
64
64
  driver.maximize_window(driver.current_window_handle)
65
65
  width, height = *driver.window_size(driver.current_window_handle)
66
66
 
67
- width.should be > 400
68
- height.should be > 300
67
+ expect(width).to be > 400
68
+ expect(height).to be > 300
69
69
  end
70
70
  end
@@ -90,13 +90,13 @@ describe Capybara::Webkit::Driver do
90
90
 
91
91
  it "finds frames by index" do
92
92
  driver.within_frame(0) do
93
- driver.find_xpath("//*[contains(., 'goodbye')]").should_not be_empty
93
+ expect(driver.find_xpath("//*[contains(., 'goodbye')]")).not_to be_empty
94
94
  end
95
95
  end
96
96
 
97
97
  it "finds frames by id" do
98
98
  driver.within_frame("f") do
99
- driver.find_xpath("//*[contains(., 'goodbye')]").should_not be_empty
99
+ expect(driver.find_xpath("//*[contains(., 'goodbye')]")).not_to be_empty
100
100
  end
101
101
  end
102
102
 
@@ -104,7 +104,7 @@ describe Capybara::Webkit::Driver do
104
104
  frame = driver.find_xpath('//iframe').first
105
105
  element = double(Capybara::Node::Base, base: frame)
106
106
  driver.within_frame(element) do
107
- driver.find_xpath("//*[contains(., 'goodbye')]").should_not be_empty
107
+ expect(driver.find_xpath("//*[contains(., 'goodbye')]")).not_to be_empty
108
108
  end
109
109
  end
110
110
 
@@ -112,7 +112,7 @@ describe Capybara::Webkit::Driver do
112
112
  frame = driver.find_xpath('//iframe').first
113
113
  element = double(Capybara::Node::Base, base: frame)
114
114
  driver.switch_to_frame(element)
115
- driver.find_xpath("//*[contains(., 'goodbye')]").should_not be_empty
115
+ expect(driver.find_xpath("//*[contains(., 'goodbye')]")).not_to be_empty
116
116
  driver.switch_to_frame(:parent)
117
117
  end
118
118
 
@@ -121,8 +121,8 @@ describe Capybara::Webkit::Driver do
121
121
  element = double(Capybara::Node::Base, base: frame)
122
122
  driver.switch_to_frame(element)
123
123
  driver.switch_to_frame(:parent)
124
- driver.find_xpath("//*[contains(., 'greeting')]").should_not be_empty
125
- driver.find_xpath("//*[contains(., 'goodbye')]").should be_empty
124
+ expect(driver.find_xpath("//*[contains(., 'greeting')]")).not_to be_empty
125
+ expect(driver.find_xpath("//*[contains(., 'goodbye')]")).to be_empty
126
126
  end
127
127
 
128
128
  it "can switch to the top frame" do
@@ -132,11 +132,11 @@ describe Capybara::Webkit::Driver do
132
132
  frame2 = driver.find_xpath('//iframe[@id="g"]').first
133
133
  element2 = double(Capybara::Node::Base, base: frame2)
134
134
  driver.switch_to_frame(element2)
135
- driver.find_xpath("//div[contains(., 'In frame 2')]").should_not be_empty
135
+ expect(driver.find_xpath("//div[contains(., 'In frame 2')]")).not_to be_empty
136
136
  driver.switch_to_frame(:top)
137
- driver.find_xpath("//*[contains(., 'greeting')]").should_not be_empty
138
- driver.find_xpath("//*[contains(., 'goodbye')]").should be_empty
139
- driver.find_xpath("//div[contains(., 'In frame 2')]").should be_empty
137
+ expect(driver.find_xpath("//*[contains(., 'greeting')]")).not_to be_empty
138
+ expect(driver.find_xpath("//*[contains(., 'goodbye')]")).to be_empty
139
+ expect(driver.find_xpath("//div[contains(., 'In frame 2')]")).to be_empty
140
140
  end
141
141
 
142
142
  it "raises error for missing frame by index" do
@@ -151,42 +151,42 @@ describe Capybara::Webkit::Driver do
151
151
 
152
152
  it "returns an attribute's value" do
153
153
  driver.within_frame("f") do
154
- driver.find_xpath("//p").first["id"].should eq "farewell"
154
+ expect(driver.find_xpath("//p").first["id"]).to eq "farewell"
155
155
  end
156
156
  end
157
157
 
158
158
  it "returns an attribute's innerHTML" do
159
- driver.find_xpath('//body').first.inner_html.should =~ %r{<iframe.*</iframe>.*<script.*</script>.*}m
159
+ expect(driver.find_xpath('//body').first.inner_html).to match %r{<iframe.*</iframe>.*<script.*</script>.*}m
160
160
  end
161
161
 
162
162
  it "receive an attribute's innerHTML" do
163
163
  driver.find_xpath('//body').first.inner_html = 'foobar'
164
- driver.find_xpath("//body[contains(., 'foobar')]").should_not be_empty
164
+ expect(driver.find_xpath("//body[contains(., 'foobar')]")).not_to be_empty
165
165
  end
166
166
 
167
167
  it "returns a node's text" do
168
168
  driver.within_frame("f") do
169
- driver.find_xpath("//p").first.visible_text.should eq "goodbye"
169
+ expect(driver.find_xpath("//p").first.visible_text).to eq "goodbye"
170
170
  end
171
171
  end
172
172
 
173
173
  it "returns the current URL" do
174
174
  driver.within_frame("f") do
175
- driver.current_url.should eq driver_url(driver, "/iframe")
175
+ expect(driver.current_url).to eq driver_url(driver, "/iframe")
176
176
  end
177
177
  end
178
178
 
179
179
  it "evaluates Javascript" do
180
180
  driver.within_frame("f") do
181
181
  result = driver.evaluate_script(%<document.getElementById('farewell').innerText>)
182
- result.should eq "goodbye"
182
+ expect(result).to eq "goodbye"
183
183
  end
184
184
  end
185
185
 
186
186
  it "executes Javascript" do
187
187
  driver.within_frame("f") do
188
188
  driver.execute_script(%<document.getElementById('farewell').innerHTML = 'yo'>)
189
- driver.find_xpath("//p[contains(., 'yo')]").should_not be_empty
189
+ expect(driver.find_xpath("//p[contains(., 'yo')]")).not_to be_empty
190
190
  end
191
191
  end
192
192
 
@@ -195,24 +195,24 @@ describe Capybara::Webkit::Driver do
195
195
 
196
196
  driver.within_frame("f") {}
197
197
 
198
- driver.current_url.should eq original_url
198
+ expect(driver.current_url).to eq original_url
199
199
  end
200
200
 
201
201
  it "returns the headers for the page" do
202
202
  driver.within_frame("f") do
203
- driver.response_headers['X-Redirected'].should eq "true"
203
+ expect(driver.response_headers['X-Redirected']).to eq "true"
204
204
  end
205
205
  end
206
206
 
207
207
  it "returns the status code for the page" do
208
208
  driver.within_frame("f") do
209
- driver.status_code.should eq 200
209
+ expect(driver.status_code).to eq 200
210
210
  end
211
211
  end
212
212
 
213
213
  it "returns the document title" do
214
214
  driver.within_frame("f") do
215
- driver.title.should eq "Title"
215
+ expect(driver.title).to eq "Title"
216
216
  end
217
217
  end
218
218
  end
@@ -281,35 +281,35 @@ describe Capybara::Webkit::Driver do
281
281
  it "should redirect without content type" do
282
282
  visit("/form")
283
283
  driver.find_xpath("//input").first.click
284
- driver.find_xpath("//p").first.visible_text.should eq ""
284
+ expect(driver.find_xpath("//p").first.visible_text).to eq ""
285
285
  end
286
286
 
287
287
  it "returns the current URL when changed by pushState after a redirect" do
288
288
  visit("/redirect-me")
289
- driver.current_url.should eq driver_url(driver, "/target")
289
+ expect(driver.current_url).to eq driver_url(driver, "/target")
290
290
  driver.execute_script("window.history.pushState({}, '', '/pushed-after-redirect')")
291
- driver.current_url.should eq driver_url(driver, "/pushed-after-redirect")
291
+ expect(driver.current_url).to eq driver_url(driver, "/pushed-after-redirect")
292
292
  end
293
293
 
294
294
  it "returns the current URL when changed by replaceState after a redirect" do
295
295
  visit("/redirect-me")
296
- driver.current_url.should eq driver_url(driver, "/target")
296
+ expect(driver.current_url).to eq driver_url(driver, "/target")
297
297
  driver.execute_script("window.history.replaceState({}, '', '/replaced-after-redirect')")
298
- driver.current_url.should eq driver_url(driver, "/replaced-after-redirect")
298
+ expect(driver.current_url).to eq driver_url(driver, "/replaced-after-redirect")
299
299
  end
300
300
 
301
301
  it "should make headers available through response_headers" do
302
302
  visit('/redirect-me')
303
- driver.response_headers['X-Redirected'].should eq "true"
303
+ expect(driver.response_headers['X-Redirected']).to eq "true"
304
304
  visit('/target')
305
- driver.response_headers['X-Redirected'].should eq "false"
305
+ expect(driver.response_headers['X-Redirected']).to eq "false"
306
306
  end
307
307
 
308
308
  it "should make the status code available through status_code" do
309
309
  visit('/redirect-me')
310
- driver.status_code.should eq 200
310
+ expect(driver.status_code).to eq 200
311
311
  visit('/target')
312
- driver.status_code.should eq 200
312
+ expect(driver.status_code).to eq 200
313
313
  end
314
314
  end
315
315
 
@@ -326,15 +326,15 @@ describe Capybara::Webkit::Driver do
326
326
  before { visit("/") }
327
327
 
328
328
  it "renders unsupported content types gracefully" do
329
- driver.html.should =~ /css/
329
+ expect(driver.html).to match /css/
330
330
  end
331
331
 
332
332
  it "sets the response headers with respect to the unsupported request" do
333
- driver.response_headers["Content-Type"].should eq "text/css"
333
+ expect(driver.response_headers["Content-Type"]).to eq "text/css"
334
334
  end
335
335
 
336
336
  it "does not wrap the content in HTML tags" do
337
- driver.html.should_not =~ /<html>/
337
+ expect(driver.html).not_to match /<html>/
338
338
  end
339
339
  end
340
340
 
@@ -355,7 +355,7 @@ describe Capybara::Webkit::Driver do
355
355
  before { visit("/") }
356
356
 
357
357
  it "does not strip HTML tags" do
358
- driver.html.should =~ /<html>/
358
+ expect(driver.html).to match /<html>/
359
359
  end
360
360
  end
361
361
 
@@ -373,7 +373,7 @@ describe Capybara::Webkit::Driver do
373
373
 
374
374
  it "should return the binary content" do
375
375
  src = driver.html.force_encoding('binary')
376
- src.should eq "Hello\xFF\xFF\xFF\xFFWorld".force_encoding('binary')
376
+ expect(src).to eq "Hello\xFF\xFF\xFF\xFFWorld".force_encoding('binary')
377
377
  end
378
378
  end
379
379
 
@@ -417,28 +417,28 @@ describe Capybara::Webkit::Driver do
417
417
  it "doesn't return text if the ancestor is hidden" do
418
418
  visit("/")
419
419
 
420
- driver.find_css("#hidden-ancestor div").first.text.should eq ''
420
+ expect(driver.find_css("#hidden-ancestor div").first.text).to eq ''
421
421
  end
422
422
 
423
423
  it "handles anchor tags" do
424
424
  visit("#test")
425
- driver.find_xpath("//*[contains(., 'hello')]").should_not be_empty
425
+ expect(driver.find_xpath("//*[contains(., 'hello')]")).not_to be_empty
426
426
  visit("#test")
427
- driver.find_xpath("//*[contains(., 'hello')]").should_not be_empty
427
+ expect(driver.find_xpath("//*[contains(., 'hello')]")).not_to be_empty
428
428
  end
429
429
 
430
430
  it "finds content after loading a URL" do
431
- driver.find_xpath("//*[contains(., 'hello')]").should_not be_empty
431
+ expect(driver.find_xpath("//*[contains(., 'hello')]")).not_to be_empty
432
432
  end
433
433
 
434
434
  it "has an empty page after reseting" do
435
435
  driver.reset!
436
- driver.find_xpath("//*[contains(., 'hello')]").should be_empty
436
+ expect(driver.find_xpath("//*[contains(., 'hello')]")).to be_empty
437
437
  end
438
438
 
439
439
  it "has a blank location after reseting" do
440
440
  driver.reset!
441
- driver.current_url.should eq "about:blank"
441
+ expect(driver.current_url).to eq "about:blank"
442
442
  end
443
443
 
444
444
  it "raises an error for an invalid xpath query" do
@@ -452,119 +452,119 @@ describe Capybara::Webkit::Driver do
452
452
  end
453
453
 
454
454
  it "returns an attribute's value" do
455
- driver.find_xpath("//p").first["id"].should eq "greeting"
455
+ expect(driver.find_xpath("//p").first["id"]).to eq "greeting"
456
456
  end
457
457
 
458
458
  it "parses xpath with quotes" do
459
- driver.find_xpath('//*[contains(., "hello")]').should_not be_empty
459
+ expect(driver.find_xpath('//*[contains(., "hello")]')).not_to be_empty
460
460
  end
461
461
 
462
462
  it "returns a node's visible text" do
463
- driver.find_xpath("//*[@id='hidden-text']").first.visible_text.should eq "Some of this text is"
463
+ expect(driver.find_xpath("//*[@id='hidden-text']").first.visible_text).to eq "Some of this text is"
464
464
  end
465
465
 
466
466
  it "normalizes a node's text" do
467
- driver.find_xpath("//div[contains(@class, 'normalize')]").first.visible_text.should eq "Spaces not normalized"
467
+ expect(driver.find_xpath("//div[contains(@class, 'normalize')]").first.visible_text).to eq "Spaces not normalized"
468
468
  end
469
469
 
470
470
  it "returns all of a node's text" do
471
- driver.find_xpath("//*[@id='hidden-text']").first.all_text.should eq "Some of this text is hidden!"
471
+ expect(driver.find_xpath("//*[@id='hidden-text']").first.all_text).to eq "Some of this text is hidden!"
472
472
  end
473
473
 
474
474
  it "returns the current URL" do
475
475
  visit "/hello/world?success=true"
476
- driver.current_url.should eq driver_url(driver, "/hello/world?success=true")
476
+ expect(driver.current_url).to eq driver_url(driver, "/hello/world?success=true")
477
477
  end
478
478
 
479
479
  it "returns the current URL when changed by pushState" do
480
480
  driver.execute_script("window.history.pushState({}, '', '/pushed')")
481
- driver.current_url.should eq driver_url(driver, "/pushed")
481
+ expect(driver.current_url).to eq driver_url(driver, "/pushed")
482
482
  end
483
483
 
484
484
  it "returns the current URL when changed by replaceState" do
485
485
  driver.execute_script("window.history.replaceState({}, '', '/replaced')")
486
- driver.current_url.should eq driver_url(driver, "/replaced")
486
+ expect(driver.current_url).to eq driver_url(driver, "/replaced")
487
487
  end
488
488
 
489
489
  it "does not double-encode URLs" do
490
490
  visit("/hello/world?success=%25true")
491
- driver.current_url.should =~ /success=\%25true/
491
+ expect(driver.current_url).to match /success=\%25true/
492
492
  end
493
493
 
494
494
  it "returns the current URL with encoded characters" do
495
495
  visit("/hello/world?success[value]=true")
496
496
  current_url = Rack::Utils.unescape(driver.current_url)
497
- current_url.should include('success[value]=true')
497
+ expect(current_url).to include('success[value]=true')
498
498
  end
499
499
 
500
500
  it "visits a page with an anchor" do
501
501
  visit("/hello#display_none")
502
- driver.current_url.should =~ /hello#display_none/
502
+ expect(driver.current_url).to match /hello#display_none/
503
503
  end
504
504
 
505
505
  it "evaluates Javascript and returns a string" do
506
506
  result = driver.evaluate_script(%<document.getElementById('greeting').innerText>)
507
- result.should eq "hello"
507
+ expect(result).to eq "hello"
508
508
  end
509
509
 
510
510
  it "evaluates Javascript and returns an array" do
511
511
  result = driver.evaluate_script(%<["hello", "world"]>)
512
- result.should eq %w(hello world)
512
+ expect(result).to eq %w(hello world)
513
513
  end
514
514
 
515
515
  it "evaluates Javascript and returns an int" do
516
516
  result = driver.evaluate_script(%<123>)
517
- result.should eq 123
517
+ expect(result).to eq 123
518
518
  end
519
519
 
520
520
  it "evaluates Javascript and returns a float" do
521
521
  result = driver.evaluate_script(%<1.5>)
522
- result.should eq 1.5
522
+ expect(result).to eq 1.5
523
523
  end
524
524
 
525
525
  it "evaluates Javascript and returns null" do
526
526
  result = driver.evaluate_script(%<(function () {})()>)
527
- result.should eq nil
527
+ expect(result).to eq nil
528
528
  end
529
529
 
530
530
  it "evaluates Infinity and returns null" do
531
531
  result = driver.evaluate_script(%<Infinity>)
532
- result.should eq nil
532
+ expect(result).to eq nil
533
533
  end
534
534
 
535
535
  it "evaluates Javascript and returns a date" do
536
536
  result = driver.evaluate_script(%<new Date("2016-04-01T00:00:00Z")>)
537
- result.should eq "2016-04-01T00:00:00Z"
537
+ expect(result).to eq "2016-04-01T00:00:00Z"
538
538
  end
539
539
 
540
540
  it "evaluates Javascript and returns an object" do
541
541
  result = driver.evaluate_script(%<({ 'one' : 1 })>)
542
- result.should eq 'one' => 1
542
+ expect(result).to eq 'one' => 1
543
543
  end
544
544
 
545
545
  it "evaluates Javascript and returns true" do
546
546
  result = driver.evaluate_script(%<true>)
547
- result.should === true
547
+ expect(result).to be true
548
548
  end
549
549
 
550
550
  it "evaluates Javascript and returns false" do
551
551
  result = driver.evaluate_script(%<false>)
552
- result.should === false
552
+ expect(result).to be false
553
553
  end
554
554
 
555
555
  it "evaluates Javascript and returns an escaped string" do
556
556
  result = driver.evaluate_script(%<'"'>)
557
- result.should === "\""
557
+ expect(result).to eq "\""
558
558
  end
559
559
 
560
560
  it "evaluates Javascript with multiple lines" do
561
561
  result = driver.evaluate_script("[1,\n2]")
562
- result.should eq [1, 2]
562
+ expect(result).to eq [1, 2]
563
563
  end
564
564
 
565
565
  it "executes Javascript" do
566
566
  driver.execute_script(%<document.getElementById('greeting').innerHTML = 'yo'>)
567
- driver.find_xpath("//p[contains(., 'yo')]").should_not be_empty
567
+ expect(driver.find_xpath("//p[contains(., 'yo')]")).not_to be_empty
568
568
  end
569
569
 
570
570
  it "raises an error for failing Javascript" do
@@ -574,65 +574,64 @@ describe Capybara::Webkit::Driver do
574
574
 
575
575
  it "passes arguments to executed Javascript" do
576
576
  driver.execute_script(%<document.getElementById('greeting').innerHTML = arguments[0]>, "My argument")
577
- driver.find_xpath("//p[contains(., 'My argument')]").should_not be_empty
577
+ expect(driver.find_xpath("//p[contains(., 'My argument')]")).not_to be_empty
578
578
  end
579
579
 
580
580
  it "passes multiple arguments to executed Javascript" do
581
581
  driver.execute_script(
582
582
  %<document.getElementById('greeting').innerHTML = arguments[0] + arguments[1] + arguments[2].color>,
583
583
  "random", 4, {color: 'red'})
584
- driver.find_xpath("//p[contains(., 'random4red')]").should_not be_empty
584
+ expect(driver.find_xpath("//p[contains(., 'random4red')]")).not_to be_empty
585
585
  end
586
586
 
587
587
  it "passes page elements to executed Javascript" do
588
588
  greeting = driver.find_xpath("//p[@id='greeting']").first
589
589
  driver.execute_script(%<arguments[0].innerHTML = arguments[1]>, greeting, "new content")
590
- driver.find_xpath("//p[@id='greeting'][contains(., 'new content')]").should_not be_empty
590
+ expect(driver.find_xpath("//p[@id='greeting'][contains(., 'new content')]")).not_to be_empty
591
591
  end
592
592
 
593
593
  it "passes arguments to evaaluated Javascript" do
594
- driver.evaluate_script(%<arguments[0]>, 3).should eq 3
594
+ expect(driver.evaluate_script(%<arguments[0]>, 3)).to eq 3
595
595
  end
596
596
 
597
597
  it "passes multiple arguments to evaluated Javascript" do
598
- driver.evaluate_script(%<arguments[0] + arguments[1] + arguments[2].num>, 3, 4, {num: 5}).should eq 12
598
+ expect(driver.evaluate_script(%<arguments[0] + arguments[1] + arguments[2].num>, 3, 4, {num: 5})).to eq 12
599
599
  end
600
600
 
601
601
  it "passes page elements to evaluated Javascript" do
602
602
  greeting = driver.find_xpath("//p[@id='greeting']").first
603
- driver.evaluate_script(%<arguments[1].innerHTML = arguments[0]; arguments[2]>, "newer content", greeting, 7).should eq 7
604
- driver.find_xpath("//p[@id='greeting'][contains(., 'newer content')]").should_not be_empty
603
+ expect(driver.evaluate_script(%<arguments[1].innerHTML = arguments[0]; arguments[2]>, "newer content", greeting, 7)).to eq 7
604
+ expect(driver.find_xpath("//p[@id='greeting'][contains(., 'newer content')]")).not_to be_empty
605
605
  end
606
606
 
607
607
  it "doesn't raise an error for Javascript that doesn't return anything" do
608
- lambda { driver.execute_script(%<(function () { "returns nothing" })()>) }.
609
- should_not raise_error
608
+ expect { driver.execute_script(%<(function () { "returns nothing" })()>) }.not_to raise_error
610
609
  end
611
610
 
612
611
  it "returns a node's tag name" do
613
- driver.find_xpath("//p").first.tag_name.should eq "p"
612
+ expect(driver.find_xpath("//p").first.tag_name).to eq "p"
614
613
  end
615
614
 
616
615
  it "reads disabled property" do
617
- driver.find_xpath("//input").first.should be_disabled
616
+ expect(driver.find_xpath("//input").first).to be_disabled
618
617
  end
619
618
 
620
619
  it "reads checked property" do
621
- driver.find_xpath("//input[@id='checktest']").first.should be_checked
620
+ expect(driver.find_xpath("//input[@id='checktest']").first).to be_checked
622
621
  end
623
622
 
624
623
  it "finds visible elements" do
625
- driver.find_xpath("//p").first.should be_visible
626
- driver.find_xpath("//*[@id='invisible']").first.should_not be_visible
627
- driver.find_xpath("//*[@id='invisible_with_visibility']").first.should_not be_visible
624
+ expect(driver.find_xpath("//p").first).to be_visible
625
+ expect(driver.find_xpath("//*[@id='invisible']").first).not_to be_visible
626
+ expect(driver.find_xpath("//*[@id='invisible_with_visibility']").first).not_to be_visible
628
627
  end
629
628
 
630
629
  it "returns the document title" do
631
- driver.title.should eq "Title"
630
+ expect(driver.title).to eq "Title"
632
631
  end
633
632
 
634
633
  it "finds elements by CSS" do
635
- driver.find_css("p").first.visible_text.should eq "hello"
634
+ expect(driver.find_css("p").first.visible_text).to eq "hello"
636
635
  end
637
636
  end
638
637
 
@@ -652,7 +651,7 @@ describe Capybara::Webkit::Driver do
652
651
  before { visit("/") }
653
652
 
654
653
  it "should handle text for svg elements" do
655
- driver.find_xpath("//*[@id='navy_text']").first.visible_text.should eq "In the navy!"
654
+ expect(driver.find_xpath("//*[@id='navy_text']").first.visible_text).to eq "In the navy!"
656
655
  end
657
656
  end
658
657
 
@@ -670,7 +669,7 @@ describe Capybara::Webkit::Driver do
670
669
  before { visit("/") }
671
670
 
672
671
  it "has no visible text" do
673
- driver.find_xpath("/html").first.text.should be_empty
672
+ expect(driver.find_xpath("/html").first.text).to be_empty
674
673
  end
675
674
  end
676
675
 
@@ -699,34 +698,34 @@ describe Capybara::Webkit::Driver do
699
698
  it "collects messages logged to the console" do
700
699
  url = driver_url(driver, "/")
701
700
  message = driver.console_messages.first
702
- message.should include :source => url, :message => "hello"
703
- [6, 7].should include message[:line_number]
704
- driver.console_messages.length.should eq 5
701
+ expect(message).to include :source => url, :message => "hello"
702
+ expect([6, 7]).to include message[:line_number]
703
+ expect(driver.console_messages.length).to eq 5
705
704
  end
706
705
 
707
706
  it "logs errors to the console" do
708
- driver.error_messages.length.should eq 1
707
+ expect(driver.error_messages.length).to eq 1
709
708
  end
710
709
 
711
710
  it "supports multi-line console messages" do
712
711
  message = driver.console_messages[2]
713
- message[:message].should eq "hello\nnewline"
712
+ expect(message[:message]).to eq "hello\nnewline"
714
713
  end
715
714
 
716
715
  it "empties the array when reset" do
717
716
  driver.reset!
718
- driver.console_messages.should be_empty
717
+ expect(driver.console_messages).to be_empty
719
718
  end
720
719
 
721
720
  it "supports console messages from an unknown source" do
722
721
  driver.execute_script("console.log('hello')")
723
- driver.console_messages.last[:message].should eq 'hello'
724
- driver.console_messages.last[:source].should be_nil
725
- driver.console_messages.last[:line_number].should be_nil
722
+ expect(driver.console_messages.last[:message]).to eq 'hello'
723
+ expect(driver.console_messages.last[:source]).to be_nil
724
+ expect(driver.console_messages.last[:line_number]).to be_nil
726
725
  end
727
726
 
728
727
  it "escapes unicode console messages" do
729
- driver.console_messages[3][:message].should eq '𝄞'
728
+ expect(driver.console_messages[3][:message]).to eq '𝄞'
730
729
  end
731
730
  end
732
731
 
@@ -821,14 +820,14 @@ describe Capybara::Webkit::Driver do
821
820
  alert_message = driver.accept_modal(:alert) do
822
821
  visit("/")
823
822
  end
824
- alert_message.should eq "Alert Text\nGoes Here"
823
+ expect(alert_message).to eq "Alert Text\nGoes Here"
825
824
  end
826
825
 
827
826
  it 'accepts an alert modal if it matches' do
828
827
  alert_message = driver.accept_modal(:alert, text: "Alert Text\nGoes Here") do
829
828
  visit("/")
830
829
  end
831
- alert_message.should eq "Alert Text\nGoes Here"
830
+ expect(alert_message).to eq "Alert Text\nGoes Here"
832
831
  end
833
832
 
834
833
  it 'raises an error when accepting an alert modal that does not match' do
@@ -856,7 +855,7 @@ describe Capybara::Webkit::Driver do
856
855
  alert_message = driver.accept_modal(:alert) do
857
856
  driver.find_xpath("//input").first.click
858
857
  end
859
- alert_message.should eq "Alert Text\nGoes Here"
858
+ expect(alert_message).to eq "Alert Text\nGoes Here"
860
859
  end
861
860
 
862
861
  it 'times out waiting for an async alert modal' do
@@ -878,13 +877,13 @@ describe Capybara::Webkit::Driver do
878
877
 
879
878
  it "should let me read my alert messages" do
880
879
  visit("/")
881
- driver.alert_messages.first.should eq "Alert Text\nGoes Here"
880
+ expect(driver.alert_messages.first).to eq "Alert Text\nGoes Here"
882
881
  end
883
882
 
884
883
  it "empties the array when reset" do
885
884
  visit("/")
886
885
  driver.reset!
887
- driver.alert_messages.should be_empty
886
+ expect(driver.alert_messages).to be_empty
888
887
  end
889
888
 
890
889
  it "clears alerts from ajax requests in between sessions" do
@@ -892,7 +891,7 @@ describe Capybara::Webkit::Driver do
892
891
  driver.find("//input").first.click
893
892
  driver.reset!
894
893
  sleep 0.5
895
- driver.alert_messages.should eq([])
894
+ expect(driver.alert_messages).to eq([])
896
895
  expect { visit("/") }.not_to raise_error
897
896
  end
898
897
  end
@@ -941,14 +940,14 @@ describe Capybara::Webkit::Driver do
941
940
  driver.accept_modal(:confirm) do
942
941
  driver.find_xpath("//input").first.click
943
942
  end
944
- driver.console_messages.first[:message].should eq "hello"
943
+ expect(driver.console_messages.first[:message]).to eq "hello"
945
944
  end
946
945
 
947
946
  it 'dismisses a confirm modal that does not match' do
948
947
  begin
949
948
  driver.accept_modal(:confirm, text: 'No?') do
950
949
  driver.find_xpath("//input").first.click
951
- driver.console_messages.first[:message].should eq "goodbye"
950
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
952
951
  end
953
952
  rescue Capybara::ModalNotFound
954
953
  end
@@ -966,7 +965,7 @@ describe Capybara::Webkit::Driver do
966
965
  driver.dismiss_modal(:confirm) do
967
966
  driver.find_xpath("//input").first.click
968
967
  end
969
- driver.console_messages.first[:message].should eq "goodbye"
968
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
970
969
  end
971
970
 
972
971
  it 'raises an error when dismissing a confirm modal that does not match' do
@@ -982,7 +981,7 @@ describe Capybara::Webkit::Driver do
982
981
  confirm_message = driver.accept_modal(:confirm) do
983
982
  driver.find_css("input[name=test_async]").first.click
984
983
  end
985
- confirm_message.should eq "Yes?"
984
+ expect(confirm_message).to eq "Yes?"
986
985
  end
987
986
 
988
987
  it 'allows the nesting of dismiss and accept' do
@@ -991,7 +990,7 @@ describe Capybara::Webkit::Driver do
991
990
  driver.find_css("input[name=test_complex]").first.click
992
991
  end
993
992
  end
994
- driver.console_messages.first[:message].should eq "goodbye"
993
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
995
994
  end
996
995
 
997
996
  it 'raises an error when an unexpected modal is displayed' do
@@ -1006,7 +1005,7 @@ describe Capybara::Webkit::Driver do
1006
1005
  begin
1007
1006
  driver.accept_modal(:prompt) do
1008
1007
  driver.find_xpath("//input").first.click
1009
- driver.console_messages.first[:message].should eq "goodbye"
1008
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1010
1009
  end
1011
1010
  rescue Capybara::ModalNotFound
1012
1011
  end
@@ -1014,31 +1013,31 @@ describe Capybara::Webkit::Driver do
1014
1013
 
1015
1014
  it "should default to accept the confirm" do
1016
1015
  driver.find_xpath("//input").first.click
1017
- driver.console_messages.first[:message].should eq "hello"
1016
+ expect(driver.console_messages.first[:message]).to eq "hello"
1018
1017
  end
1019
1018
 
1020
1019
  it "can dismiss the confirm" do
1021
1020
  driver.dismiss_js_confirms!
1022
1021
  driver.find_xpath("//input").first.click
1023
- driver.console_messages.first[:message].should eq "goodbye"
1022
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1024
1023
  end
1025
1024
 
1026
1025
  it "can accept the confirm explicitly" do
1027
1026
  driver.dismiss_js_confirms!
1028
1027
  driver.accept_js_confirms!
1029
1028
  driver.find_xpath("//input").first.click
1030
- driver.console_messages.first[:message].should eq "hello"
1029
+ expect(driver.console_messages.first[:message]).to eq "hello"
1031
1030
  end
1032
1031
 
1033
1032
  it "should collect the javascript confirm dialog contents" do
1034
1033
  driver.find_xpath("//input").first.click
1035
- driver.confirm_messages.first.should eq "Yes?"
1034
+ expect(driver.confirm_messages.first).to eq "Yes?"
1036
1035
  end
1037
1036
 
1038
1037
  it "empties the array when reset" do
1039
1038
  driver.find_xpath("//input").first.click
1040
1039
  driver.reset!
1041
- driver.confirm_messages.should be_empty
1040
+ expect(driver.confirm_messages).to be_empty
1042
1041
  end
1043
1042
 
1044
1043
  it "resets to the default of accepting confirms" do
@@ -1046,12 +1045,12 @@ describe Capybara::Webkit::Driver do
1046
1045
  driver.reset!
1047
1046
  visit("/")
1048
1047
  driver.find_xpath("//input").first.click
1049
- driver.console_messages.first[:message].should eq "hello"
1048
+ expect(driver.console_messages.first[:message]).to eq "hello"
1050
1049
  end
1051
1050
 
1052
1051
  it "supports multi-line confirmation messages" do
1053
1052
  driver.execute_script("confirm('Hello\\nnewline')")
1054
- driver.confirm_messages.first.should eq "Hello\nnewline"
1053
+ expect(driver.confirm_messages.first).to eq "Hello\nnewline"
1055
1054
  end
1056
1055
 
1057
1056
  end
@@ -1099,14 +1098,14 @@ describe Capybara::Webkit::Driver do
1099
1098
  driver.accept_modal(:prompt) do
1100
1099
  driver.find_xpath("//input").first.click
1101
1100
  end
1102
- driver.console_messages.first[:message].should eq "hello John Smith"
1101
+ expect(driver.console_messages.first[:message]).to eq "hello John Smith"
1103
1102
  end
1104
1103
 
1105
1104
  it 'accepts any prompt modal with the provided response' do
1106
1105
  driver.accept_modal(:prompt, with: 'Capy') do
1107
1106
  driver.find_xpath("//input").first.click
1108
1107
  end
1109
- driver.console_messages.first[:message].should eq "hello Capy"
1108
+ expect(driver.console_messages.first[:message]).to eq "hello Capy"
1110
1109
  end
1111
1110
 
1112
1111
  it 'raises an error when accepting a prompt modal that does not match' do
@@ -1121,14 +1120,14 @@ describe Capybara::Webkit::Driver do
1121
1120
  driver.dismiss_modal(:prompt) do
1122
1121
  driver.find_xpath("//input").first.click
1123
1122
  end
1124
- driver.console_messages.first[:message].should eq "goodbye"
1123
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1125
1124
  end
1126
1125
 
1127
1126
  it 'dismisses a prompt modal that does not match' do
1128
1127
  begin
1129
1128
  driver.accept_modal(:prompt, text: 'Your age?') do
1130
1129
  driver.find_xpath("//input").first.click
1131
- driver.console_messages.first[:message].should eq "goodbye"
1130
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1132
1131
  end
1133
1132
  rescue Capybara::ModalNotFound
1134
1133
  end
@@ -1147,7 +1146,7 @@ describe Capybara::Webkit::Driver do
1147
1146
  prompt_message = driver.accept_modal(:prompt) do
1148
1147
  driver.find_css("input[name=test_async]").first.click
1149
1148
  end
1150
- prompt_message.should eq "Your name?"
1149
+ expect(prompt_message).to eq "Your name?"
1151
1150
  end
1152
1151
 
1153
1152
  it 'allows the nesting of dismiss and accept' do
@@ -1156,7 +1155,7 @@ describe Capybara::Webkit::Driver do
1156
1155
  driver.find_css("input[name=test_complex]").first.click
1157
1156
  end
1158
1157
  end
1159
- driver.console_messages.first[:message].should eq "goodbye"
1158
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1160
1159
  end
1161
1160
 
1162
1161
  it 'raises an error when an unexpected modal is displayed' do
@@ -1171,7 +1170,7 @@ describe Capybara::Webkit::Driver do
1171
1170
  begin
1172
1171
  driver.accept_modal(:confirm) do
1173
1172
  driver.find_xpath("//input").first.click
1174
- driver.console_messages.first[:message].should eq "goodbye"
1173
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1175
1174
  end
1176
1175
  rescue Capybara::ModalNotFound
1177
1176
  end
@@ -1179,48 +1178,48 @@ describe Capybara::Webkit::Driver do
1179
1178
 
1180
1179
  it "should default to dismiss the prompt" do
1181
1180
  driver.find_xpath("//input").first.click
1182
- driver.console_messages.first[:message].should eq "goodbye"
1181
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1183
1182
  end
1184
1183
 
1185
1184
  it "can accept the prompt without providing text" do
1186
1185
  driver.accept_js_prompts!
1187
1186
  driver.find_xpath("//input").first.click
1188
- driver.console_messages.first[:message].should eq "hello John Smith"
1187
+ expect(driver.console_messages.first[:message]).to eq "hello John Smith"
1189
1188
  end
1190
1189
 
1191
1190
  it "can accept the prompt with input" do
1192
1191
  driver.js_prompt_input = "Capy"
1193
1192
  driver.accept_js_prompts!
1194
1193
  driver.find_xpath("//input").first.click
1195
- driver.console_messages.first[:message].should eq "hello Capy"
1194
+ expect(driver.console_messages.first[:message]).to eq "hello Capy"
1196
1195
  end
1197
1196
 
1198
1197
  it "can return to dismiss the prompt after accepting prompts" do
1199
1198
  driver.accept_js_prompts!
1200
1199
  driver.dismiss_js_prompts!
1201
1200
  driver.find_xpath("//input").first.click
1202
- driver.console_messages.first[:message].should eq "goodbye"
1201
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1203
1202
  end
1204
1203
 
1205
1204
  it "should let me remove the prompt input text" do
1206
1205
  driver.js_prompt_input = "Capy"
1207
1206
  driver.accept_js_prompts!
1208
1207
  driver.find_xpath("//input").first.click
1209
- driver.console_messages.first[:message].should eq "hello Capy"
1208
+ expect(driver.console_messages.first[:message]).to eq "hello Capy"
1210
1209
  driver.js_prompt_input = nil
1211
1210
  driver.find_xpath("//input").first.click
1212
- driver.console_messages.last[:message].should eq "hello John Smith"
1211
+ expect(driver.console_messages.last[:message]).to eq "hello John Smith"
1213
1212
  end
1214
1213
 
1215
1214
  it "should collect the javascript prompt dialog contents" do
1216
1215
  driver.find_xpath("//input").first.click
1217
- driver.prompt_messages.first.should eq "Your name?"
1216
+ expect(driver.prompt_messages.first).to eq "Your name?"
1218
1217
  end
1219
1218
 
1220
1219
  it "empties the array when reset" do
1221
1220
  driver.find_xpath("//input").first.click
1222
1221
  driver.reset!
1223
- driver.prompt_messages.should be_empty
1222
+ expect(driver.prompt_messages).to be_empty
1224
1223
  end
1225
1224
 
1226
1225
  it "returns the prompt action to dismiss on reset" do
@@ -1228,12 +1227,12 @@ describe Capybara::Webkit::Driver do
1228
1227
  driver.reset!
1229
1228
  visit("/")
1230
1229
  driver.find_xpath("//input").first.click
1231
- driver.console_messages.first[:message].should eq "goodbye"
1230
+ expect(driver.console_messages.first[:message]).to eq "goodbye"
1232
1231
  end
1233
1232
 
1234
1233
  it "supports multi-line prompt messages" do
1235
1234
  driver.execute_script("prompt('Hello\\nnewline')")
1236
- driver.prompt_messages.first.should eq "Hello\nnewline"
1235
+ expect(driver.prompt_messages.first).to eq "Hello\nnewline"
1237
1236
  end
1238
1237
 
1239
1238
  end
@@ -1281,66 +1280,66 @@ describe Capybara::Webkit::Driver do
1281
1280
  before { visit("/") }
1282
1281
 
1283
1282
  it "returns a textarea's value" do
1284
- driver.find_xpath("//textarea").first.value.should eq "what a wonderful area for text"
1283
+ expect(driver.find_xpath("//textarea").first.value).to eq "what a wonderful area for text"
1285
1284
  end
1286
1285
 
1287
1286
  it "returns a text input's value" do
1288
- driver.find_xpath("//input").first.value.should eq "bar"
1287
+ expect(driver.find_xpath("//input").first.value).to eq "bar"
1289
1288
  end
1290
1289
 
1291
1290
  it "returns a select's value" do
1292
- driver.find_xpath("//select").first.value.should eq "Capybara"
1291
+ expect(driver.find_xpath("//select").first.value).to eq "Capybara"
1293
1292
  end
1294
1293
 
1295
1294
  it "sets an input's value" do
1296
1295
  input = driver.find_xpath("//input").first
1297
1296
  input.set("newvalue")
1298
- input.value.should eq "newvalue"
1297
+ expect(input.value).to eq "newvalue"
1299
1298
  end
1300
1299
 
1301
1300
  it "sets an input's value greater than the max length" do
1302
1301
  input = driver.find_xpath("//input[@name='maxlength_foo']").first
1303
1302
  input.set("allegories (poems)")
1304
- input.value.should eq "allegories"
1303
+ expect(input.value).to eq "allegories"
1305
1304
  end
1306
1305
 
1307
1306
  it "sets an input's value equal to the max length" do
1308
1307
  input = driver.find_xpath("//input[@name='maxlength_foo']").first
1309
1308
  input.set("allegories")
1310
- input.value.should eq "allegories"
1309
+ expect(input.value).to eq "allegories"
1311
1310
  end
1312
1311
 
1313
1312
  it "sets an input's value less than the max length" do
1314
1313
  input = driver.find_xpath("//input[@name='maxlength_foo']").first
1315
1314
  input.set("poems")
1316
- input.value.should eq "poems"
1315
+ expect(input.value).to eq "poems"
1317
1316
  end
1318
1317
 
1319
1318
  it "sets an input's nil value" do
1320
1319
  input = driver.find_xpath("//input").first
1321
1320
  input.set(nil)
1322
- input.value.should eq ""
1321
+ expect(input.value).to eq ""
1323
1322
  end
1324
1323
 
1325
1324
  it "sets a select's value" do
1326
1325
  select = driver.find_xpath("//select").first
1327
1326
  select.set("Monkey")
1328
- select.value.should eq "Monkey"
1327
+ expect(select.value).to eq "Monkey"
1329
1328
  end
1330
1329
 
1331
1330
  it "sets a textarea's value" do
1332
1331
  textarea = driver.find_xpath("//textarea").first
1333
1332
  textarea.set("newvalue")
1334
- textarea.value.should eq "newvalue"
1333
+ expect(textarea.value).to eq "newvalue"
1335
1334
  end
1336
1335
 
1337
1336
  context "#send_keys" do
1338
1337
  it "should support :backspace" do
1339
1338
  input = driver.find_xpath("//input").first
1340
1339
  input.set("dog")
1341
- input.value.should eq "dog"
1340
+ expect(input.value).to eq "dog"
1342
1341
  input.send_keys(*[:backspace])
1343
- input.value.should eq "do"
1342
+ expect(input.value).to eq "do"
1344
1343
  end
1345
1344
  end
1346
1345
 
@@ -1357,52 +1356,52 @@ describe Capybara::Webkit::Driver do
1357
1356
 
1358
1357
  context "a select element's selection has been changed" do
1359
1358
  before do
1360
- animal_select.value.should eq "Capybara"
1359
+ expect(animal_select.value).to eq "Capybara"
1361
1360
  monkey_option.select_option
1362
1361
  end
1363
1362
 
1364
1363
  it "returns the new selection" do
1365
- animal_select.value.should eq "Monkey"
1364
+ expect(animal_select.value).to eq "Monkey"
1366
1365
  end
1367
1366
 
1368
1367
  it "does not modify the selected attribute of a new selection" do
1369
- monkey_option['selected'].should be_nil
1368
+ expect(monkey_option['selected']).to be_nil
1370
1369
  end
1371
1370
 
1372
1371
  it "returns the old value when a reset button is clicked" do
1373
1372
  reset_button.click
1374
1373
 
1375
- animal_select.value.should eq "Capybara"
1374
+ expect(animal_select.value).to eq "Capybara"
1376
1375
  end
1377
1376
  end
1378
1377
 
1379
1378
  context "a multi-select element's option has been unselected" do
1380
1379
  before do
1381
- toppings_select.value.should include("Apple", "Banana", "Cherry")
1380
+ expect(toppings_select.value).to include("Apple", "Banana", "Cherry")
1382
1381
 
1383
1382
  apple_option.unselect_option
1384
1383
  end
1385
1384
 
1386
1385
  it "does not return the deselected option" do
1387
- toppings_select.value.should_not include("Apple")
1386
+ expect(toppings_select.value).not_to include("Apple")
1388
1387
  end
1389
1388
 
1390
1389
  it "returns the deselected option when a reset button is clicked" do
1391
1390
  reset_button.click
1392
1391
 
1393
- toppings_select.value.should include("Apple", "Banana", "Cherry")
1392
+ expect(toppings_select.value).to include("Apple", "Banana", "Cherry")
1394
1393
  end
1395
1394
  end
1396
1395
 
1397
1396
  context "a multi-select (with empty multiple attribute) element's option has been unselected" do
1398
1397
  before do
1399
- guitars_select.value.should include("Fender", "Gibson")
1398
+ expect(guitars_select.value).to include("Fender", "Gibson")
1400
1399
 
1401
1400
  fender_option.unselect_option
1402
1401
  end
1403
1402
 
1404
1403
  it "does not return the deselected option" do
1405
- guitars_select.value.should_not include("Fender")
1404
+ expect(guitars_select.value).not_to include("Fender")
1406
1405
  end
1407
1406
  end
1408
1407
 
@@ -1411,73 +1410,73 @@ describe Capybara::Webkit::Driver do
1411
1410
  banana_option.unselect_option
1412
1411
  cherry_option.unselect_option
1413
1412
 
1414
- toppings_select.value.should eq []
1413
+ expect(toppings_select.value).to eq []
1415
1414
 
1416
1415
  apple_option.select_option
1417
1416
  banana_option.select_option
1418
1417
  cherry_option.select_option
1419
1418
 
1420
- toppings_select.value.should include("Apple", "Banana", "Cherry")
1419
+ expect(toppings_select.value).to include("Apple", "Banana", "Cherry")
1421
1420
  end
1422
1421
 
1423
1422
  let(:checked_box) { driver.find_xpath("//input[@name='checkedbox']").first }
1424
1423
  let(:unchecked_box) { driver.find_xpath("//input[@name='uncheckedbox']").first }
1425
1424
 
1426
1425
  it "knows a checked box is checked" do
1427
- checked_box['checked'].should be_true
1426
+ expect(checked_box['checked']).to be true
1428
1427
  end
1429
1428
 
1430
1429
  it "knows a checked box is checked using checked?" do
1431
- checked_box.should be_checked
1430
+ expect(checked_box).to be_checked
1432
1431
  end
1433
1432
 
1434
1433
  it "knows an unchecked box is unchecked" do
1435
- unchecked_box['checked'].should_not be_true
1434
+ expect(unchecked_box['checked']).not_to be_truthy
1436
1435
  end
1437
1436
 
1438
1437
  it "knows an unchecked box is unchecked using checked?" do
1439
- unchecked_box.should_not be_checked
1438
+ expect(unchecked_box).not_to be_checked
1440
1439
  end
1441
1440
 
1442
1441
  it "checks an unchecked box" do
1443
1442
  unchecked_box.set(true)
1444
- unchecked_box.should be_checked
1443
+ expect(unchecked_box).to be_checked
1445
1444
  end
1446
1445
 
1447
1446
  it "unchecks a checked box" do
1448
1447
  checked_box.set(false)
1449
- checked_box.should_not be_checked
1448
+ expect(checked_box).not_to be_checked
1450
1449
  end
1451
1450
 
1452
1451
  it "leaves a checked box checked" do
1453
1452
  checked_box.set(true)
1454
- checked_box.should be_checked
1453
+ expect(checked_box).to be_checked
1455
1454
  end
1456
1455
 
1457
1456
  it "leaves an unchecked box unchecked" do
1458
1457
  unchecked_box.set(false)
1459
- unchecked_box.should_not be_checked
1458
+ expect(unchecked_box).not_to be_checked
1460
1459
  end
1461
1460
 
1462
1461
  let(:enabled_input) { driver.find_xpath("//input[@name='foo']").first }
1463
1462
  let(:disabled_input) { driver.find_xpath("//input[@id='disabled_input']").first }
1464
1463
 
1465
1464
  it "knows a disabled input is disabled" do
1466
- disabled_input['disabled'].should be_true
1465
+ expect(disabled_input['disabled']).to be true
1467
1466
  end
1468
1467
 
1469
1468
  it "knows a not disabled input is not disabled" do
1470
- enabled_input['disabled'].should_not be_true
1469
+ expect(enabled_input['disabled']).not_to be_truthy
1471
1470
  end
1472
1471
 
1473
1472
  it "does not modify a readonly input" do
1474
1473
  readonly_input = driver.find_css("#readonly_input").first
1475
1474
  readonly_input.set('enabled')
1476
- readonly_input.value.should eq 'readonly'
1475
+ expect(readonly_input.value).to eq 'readonly'
1477
1476
  end
1478
1477
 
1479
1478
  it "should see enabled options in disabled select as disabled" do
1480
- driver.find_css("#select-option-disabled").first.should be_disabled
1479
+ expect(driver.find_css("#select-option-disabled").first).to be_disabled
1481
1480
  end
1482
1481
  end
1483
1482
 
@@ -1516,18 +1515,18 @@ describe Capybara::Webkit::Driver do
1516
1515
 
1517
1516
  it "triggers mouse events" do
1518
1517
  watch.click
1519
- fired_events.should eq %w(mousedown mouseup click)
1518
+ expect(fired_events).to eq %w(mousedown mouseup click)
1520
1519
  end
1521
1520
 
1522
1521
  it "triggers double click" do
1523
1522
  # check event order at http://www.quirksmode.org/dom/events/click.html
1524
1523
  watch.double_click
1525
- fired_events.should eq %w(mousedown mouseup click mousedown mouseup click dblclick)
1524
+ expect(fired_events).to eq %w(mousedown mouseup click mousedown mouseup click dblclick)
1526
1525
  end
1527
1526
 
1528
1527
  it "triggers right click" do
1529
1528
  watch.right_click
1530
- fired_events.should eq %w(mousedown contextmenu mouseup)
1529
+ expect(fired_events).to eq %w(mousedown contextmenu mouseup)
1531
1530
  end
1532
1531
  end
1533
1532
 
@@ -1591,29 +1590,29 @@ describe Capybara::Webkit::Driver do
1591
1590
  it "triggers text input events on inputs of type #{field_type}" do
1592
1591
  driver.find_xpath("//input[@type='#{field_type}']").first.set(newtext)
1593
1592
  driver.find_xpath("//body").first.click
1594
- driver.find_xpath("//li").map(&:visible_text).should eq textevents
1593
+ expect(driver.find_xpath("//li").map(&:visible_text)).to eq textevents
1595
1594
  end
1596
1595
  end
1597
1596
 
1598
1597
  it "triggers events for cleared inputs" do
1599
1598
  driver.find_xpath("//input[@type='text']").first.set('')
1600
1599
  driver.find_xpath("//body").first.click
1601
- driver.find_xpath("//li").map(&:visible_text).should include('change')
1600
+ expect(driver.find_xpath("//li").map(&:visible_text)).to include('change')
1602
1601
  end
1603
1602
 
1604
1603
  it "triggers textarea input events" do
1605
1604
  driver.find_xpath("//textarea").first.set(newtext)
1606
- driver.find_xpath("//li").map(&:visible_text).should eq keyevents
1605
+ expect(driver.find_xpath("//li").map(&:visible_text)).to eq keyevents
1607
1606
  end
1608
1607
 
1609
1608
  it "triggers radio input events" do
1610
1609
  driver.find_xpath("//input[@type='radio']").first.set(true)
1611
- driver.find_xpath("//li").map(&:visible_text).should eq %w(mousedown focus mouseup change click)
1610
+ expect(driver.find_xpath("//li").map(&:visible_text)).to eq %w(mousedown focus mouseup change click)
1612
1611
  end
1613
1612
 
1614
1613
  it "triggers checkbox events" do
1615
1614
  driver.find_xpath("//input[@type='checkbox']").first.set(true)
1616
- driver.find_xpath("//li").map(&:visible_text).should eq %w(mousedown focus mouseup change click)
1615
+ expect(driver.find_xpath("//li").map(&:visible_text)).to eq %w(mousedown focus mouseup change click)
1617
1616
  end
1618
1617
  end
1619
1618
 
@@ -1674,16 +1673,16 @@ describe Capybara::Webkit::Driver do
1674
1673
  before { visit("/") }
1675
1674
 
1676
1675
  it "hovers an element" do
1677
- driver.find_css("#hover").first.visible_text.should_not =~ /Text that only shows on hover/
1676
+ expect(driver.find_css("#hover").first.visible_text).not_to match /Text that only shows on hover/
1678
1677
  driver.find_css("#hover span").first.hover
1679
- driver.find_css("#hover").first.visible_text.should =~ /Text that only shows on hover/
1678
+ expect(driver.find_css("#hover").first.visible_text).to match /Text that only shows on hover/
1680
1679
  end
1681
1680
 
1682
1681
  it "hovers an svg element" do
1683
1682
  # visible_text does not work for SVG elements. It returns all the text.
1684
- driver.find_css("text").first.should_not be_visible
1683
+ expect(driver.find_css("text").first).not_to be_visible
1685
1684
  driver.find_css("#circle_hover").first.hover
1686
- driver.find_css("text").first.should be_visible
1685
+ expect(driver.find_css("text").first).to be_visible
1687
1686
  end
1688
1687
 
1689
1688
  it "hovers an element off the screen" do
@@ -1693,33 +1692,33 @@ describe Capybara::Webkit::Driver do
1693
1692
  element.style.position = 'absolute';
1694
1693
  element.style.left = '200px';
1695
1694
  JS
1696
- driver.find_css("#hover").first.visible_text.should_not =~ /Text that only shows on hover/
1695
+ expect(driver.find_css("#hover").first.visible_text).not_to match /Text that only shows on hover/
1697
1696
  driver.find_css("#hover span").first.hover
1698
- driver.find_css("#hover").first.visible_text.should =~ /Text that only shows on hover/
1697
+ expect(driver.find_css("#hover").first.visible_text).to match /Text that only shows on hover/
1699
1698
  end
1700
1699
 
1701
1700
  it "clicks an element" do
1702
1701
  driver.find_xpath("//a").first.click
1703
- driver.current_url =~ %r{/next$}
1702
+ expect(driver.current_url).to match %r{/next$}
1704
1703
  end
1705
1704
 
1706
1705
  it "fires a mouse event" do
1707
1706
  driver.find_xpath("//*[@id='mouseup']").first.trigger("mouseup")
1708
- driver.find_xpath("//*[@class='triggered']").should_not be_empty
1707
+ expect(driver.find_xpath("//*[@class='triggered']")).not_to be_empty
1709
1708
  end
1710
1709
 
1711
1710
  it "fires a non-mouse event" do
1712
1711
  driver.find_xpath("//*[@id='change']").first.trigger("change")
1713
- driver.find_xpath("//*[@class='triggered']").should_not be_empty
1712
+ expect(driver.find_xpath("//*[@class='triggered']")).not_to be_empty
1714
1713
  end
1715
1714
 
1716
1715
  it "fires a change on select" do
1717
1716
  select = driver.find_xpath("//select").first
1718
- select.value.should eq "1"
1717
+ expect(select.value).to eq "1"
1719
1718
  option = driver.find_xpath("//option[@id='option-2']").first
1720
1719
  option.select_option
1721
- select.value.should eq "2"
1722
- driver.find_xpath("//select[@class='triggered']").should_not be_empty
1720
+ expect(select.value).to eq "2"
1721
+ expect(driver.find_xpath("//select[@class='triggered']")).not_to be_empty
1723
1722
  end
1724
1723
 
1725
1724
  it "fires drag events" do
@@ -1728,7 +1727,7 @@ describe Capybara::Webkit::Driver do
1728
1727
 
1729
1728
  draggable.drag_to(container)
1730
1729
 
1731
- driver.find_xpath("//*[@class='triggered']").size.should eq 1
1730
+ expect(driver.find_xpath("//*[@class='triggered']").size).to eq 1
1732
1731
  end
1733
1732
  end
1734
1733
 
@@ -1748,12 +1747,12 @@ describe Capybara::Webkit::Driver do
1748
1747
 
1749
1748
  it "evaluates nested xpath expressions" do
1750
1749
  parent = driver.find_xpath("//*[@id='parent']").first
1751
- parent.find_xpath("./*[@class='find']").map(&:visible_text).should eq %w(Expected)
1750
+ expect(parent.find_xpath("./*[@class='find']").map(&:visible_text)).to eq %w(Expected)
1752
1751
  end
1753
1752
 
1754
1753
  it "finds elements by CSS" do
1755
1754
  parent = driver.find_css("#parent").first
1756
- parent.find_css(".find").first.visible_text.should eq "Expected"
1755
+ expect(parent.find_css(".find").first.visible_text).to eq "Expected"
1757
1756
  end
1758
1757
  end
1759
1758
 
@@ -1773,7 +1772,7 @@ describe Capybara::Webkit::Driver do
1773
1772
  end
1774
1773
  visit("/", driver)
1775
1774
  driver.find_xpath("//a").first.click
1776
- result.should eq "finished"
1775
+ expect(result).to eq "finished"
1777
1776
  end
1778
1777
  end
1779
1778
 
@@ -1801,8 +1800,7 @@ describe Capybara::Webkit::Driver do
1801
1800
  driver.find_xpath("//input").first.click
1802
1801
  wait_for_error_to_complete
1803
1802
  driver.find_xpath("//body")
1804
- }.
1805
- to raise_error(Capybara::Webkit::InvalidResponseError, %r{/error})
1803
+ }.to raise_error(Capybara::Webkit::InvalidResponseError, %r{/error})
1806
1804
  end
1807
1805
 
1808
1806
  def wait_for_error_to_complete
@@ -1835,7 +1833,7 @@ describe Capybara::Webkit::Driver do
1835
1833
  driver.find_xpath("//input").first.click
1836
1834
  expect { driver.find_xpath("//p") }.to raise_error(Capybara::Webkit::InvalidResponseError)
1837
1835
  visit("/")
1838
- driver.find_xpath("//p").first.visible_text.should eq "hello"
1836
+ expect(driver.find_xpath("//p").first.visible_text).to eq "hello"
1839
1837
  end
1840
1838
  end
1841
1839
 
@@ -1861,7 +1859,7 @@ describe Capybara::Webkit::Driver do
1861
1859
  before { visit("/") }
1862
1860
 
1863
1861
  it "doesn't crash from alerts" do
1864
- driver.find_xpath("//p").first.visible_text.should eq "success"
1862
+ expect(driver.find_xpath("//p").first.visible_text).to eq "success"
1865
1863
  end
1866
1864
  end
1867
1865
 
@@ -1891,31 +1889,31 @@ describe Capybara::Webkit::Driver do
1891
1889
  end
1892
1890
 
1893
1891
  it "can set user_agent" do
1894
- driver.find_xpath('id("user-agent")').first.visible_text.should eq 'capybara-webkit/custom-user-agent'
1895
- driver.evaluate_script('navigator.userAgent').should eq 'capybara-webkit/custom-user-agent'
1892
+ expect(driver.find_xpath('id("user-agent")').first.visible_text).to eq 'capybara-webkit/custom-user-agent'
1893
+ expect(driver.evaluate_script('navigator.userAgent')).to eq 'capybara-webkit/custom-user-agent'
1896
1894
  end
1897
1895
 
1898
1896
  it "keep user_agent in next page" do
1899
1897
  driver.find_xpath("//a").first.click
1900
- driver.find_xpath('id("user-agent")').first.visible_text.should eq 'capybara-webkit/custom-user-agent'
1901
- driver.evaluate_script('navigator.userAgent').should eq 'capybara-webkit/custom-user-agent'
1898
+ expect(driver.find_xpath('id("user-agent")').first.visible_text).to eq 'capybara-webkit/custom-user-agent'
1899
+ expect(driver.evaluate_script('navigator.userAgent')).to eq 'capybara-webkit/custom-user-agent'
1902
1900
  end
1903
1901
 
1904
1902
  it "can set custom header" do
1905
- driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text.should eq 'x-capybara-webkit-header'
1903
+ expect(driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text).to eq 'x-capybara-webkit-header'
1906
1904
  end
1907
1905
 
1908
1906
  it "can set Accept header" do
1909
- driver.find_xpath('id("accept")').first.visible_text.should eq 'text/html'
1907
+ expect(driver.find_xpath('id("accept")').first.visible_text).to eq 'text/html'
1910
1908
  end
1911
1909
 
1912
1910
  it "can reset all custom header" do
1913
1911
  driver.reset!
1914
1912
  visit('/')
1915
- driver.find_xpath('id("user-agent")').first.visible_text.should_not eq 'capybara-webkit/custom-user-agent'
1916
- driver.evaluate_script('navigator.userAgent').should_not eq 'capybara-webkit/custom-user-agent'
1917
- driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text.should be_empty
1918
- driver.find_xpath('id("accept")').first.visible_text.should_not eq 'text/html'
1913
+ expect(driver.find_xpath('id("user-agent")').first.visible_text).not_to eq 'capybara-webkit/custom-user-agent'
1914
+ expect(driver.evaluate_script('navigator.userAgent')).not_to eq 'capybara-webkit/custom-user-agent'
1915
+ expect(driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text).to be_empty
1916
+ expect(driver.find_xpath('id("accept")').first.visible_text).not_to eq 'text/html'
1919
1917
  end
1920
1918
  end
1921
1919
 
@@ -1935,21 +1933,18 @@ describe Capybara::Webkit::Driver do
1935
1933
  make_the_server_go_away
1936
1934
  expect {
1937
1935
  driver.find_xpath("//body")
1938
- }.
1939
- to raise_error(Capybara::Webkit::NoResponseError, %r{response})
1936
+ }.to raise_error(Capybara::Webkit::NoResponseError, %r{response})
1940
1937
  make_the_server_come_back
1941
1938
  end
1942
1939
 
1943
1940
  def make_the_server_come_back
1944
- connection.unstub(:gets)
1945
- connection.unstub(:puts)
1946
- connection.unstub(:print)
1941
+ [:gets, :puts, :print].each { |msg| allow(connection).to receive(msg).and_call_original }
1947
1942
  end
1948
1943
 
1949
1944
  def make_the_server_go_away
1950
- connection.stub(:gets).and_return(nil)
1951
- connection.stub(:puts)
1952
- connection.stub(:print)
1945
+ allow(connection).to receive(:gets).and_return(nil)
1946
+ allow(connection).to receive(:puts).and_return(nil)
1947
+ allow(connection).to receive(:print).and_return(nil)
1953
1948
  end
1954
1949
  end
1955
1950
 
@@ -1981,15 +1976,15 @@ describe Capybara::Webkit::Driver do
1981
1976
  end
1982
1977
 
1983
1978
  it "ignores custom fonts" do
1984
- font_family.should eq "Arial"
1979
+ expect(font_family).to eq "Arial"
1985
1980
  end
1986
1981
 
1987
1982
  it "ignores custom fonts before an element" do
1988
- font_family.should eq "Arial"
1983
+ expect(font_family).to eq "Arial"
1989
1984
  end
1990
1985
 
1991
1986
  it "ignores custom fonts after an element" do
1992
- font_family.should eq "Arial"
1987
+ expect(font_family).to eq "Arial"
1993
1988
  end
1994
1989
  end
1995
1990
 
@@ -2014,27 +2009,27 @@ describe Capybara::Webkit::Driver do
2014
2009
  end
2015
2010
 
2016
2011
  it "remembers the cookie on second visit" do
2017
- echoed_cookie.should eq ""
2012
+ expect(echoed_cookie).to eq ""
2018
2013
  visit "/"
2019
- echoed_cookie.should eq "abc"
2014
+ expect(echoed_cookie).to eq "abc"
2020
2015
  end
2021
2016
 
2022
2017
  it "uses a custom cookie" do
2023
2018
  driver.set_cookie 'cookie=abc; domain=127.0.0.1; path=/'
2024
2019
  visit "/"
2025
- echoed_cookie.should eq "abc"
2020
+ expect(echoed_cookie).to eq "abc"
2026
2021
  end
2027
2022
 
2028
2023
  it "clears cookies" do
2029
2024
  driver.clear_cookies
2030
2025
  visit "/"
2031
- echoed_cookie.should eq ""
2026
+ expect(echoed_cookie).to eq ""
2032
2027
  end
2033
2028
 
2034
2029
  it "allows reading cookies" do
2035
- driver.cookies["cookie"].should eq "abc"
2036
- driver.cookies.find("cookie").path.should eq "/"
2037
- driver.cookies.find("cookie").domain.should include "127.0.0.1"
2030
+ expect(driver.cookies["cookie"]).to eq "abc"
2031
+ expect(driver.cookies.find("cookie").path).to eq "/"
2032
+ expect(driver.cookies.find("cookie").domain).to include "127.0.0.1"
2038
2033
  end
2039
2034
  end
2040
2035
 
@@ -2063,7 +2058,7 @@ describe Capybara::Webkit::Driver do
2063
2058
  it "allows removed nodes when reloading is disabled" do
2064
2059
  node = driver.find_xpath("//p[@id='removeMe']").first
2065
2060
  driver.evaluate_script("document.getElementById('parent').innerHTML = 'Magic'")
2066
- node.visible_text.should eq 'Hello'
2061
+ expect(node.visible_text).to eq 'Hello'
2067
2062
  end
2068
2063
  end
2069
2064
 
@@ -2124,8 +2119,8 @@ describe Capybara::Webkit::Driver do
2124
2119
 
2125
2120
  cases.each do |xpath, path|
2126
2121
  nodes = driver.find_xpath(xpath)
2127
- nodes.size.should eq 1
2128
- nodes[0].path.should eq path
2122
+ expect(nodes.size).to eq 1
2123
+ expect(nodes[0].path).to eq path
2129
2124
  end
2130
2125
  end
2131
2126
  end
@@ -2149,7 +2144,7 @@ describe Capybara::Webkit::Driver do
2149
2144
  before { visit("/") }
2150
2145
 
2151
2146
  it "handles overflow hidden" do
2152
- driver.find_xpath("//div[@id='overflow']").first.visible_text.should eq "Overflow"
2147
+ expect(driver.find_xpath("//div[@id='overflow']").first.visible_text).to eq "Overflow"
2153
2148
  end
2154
2149
  end
2155
2150
 
@@ -2175,7 +2170,7 @@ describe Capybara::Webkit::Driver do
2175
2170
  it "loads a page without error" do
2176
2171
  10.times do
2177
2172
  visit("/redirect")
2178
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2173
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2179
2174
  end
2180
2175
  end
2181
2176
  end
@@ -2204,17 +2199,17 @@ describe Capybara::Webkit::Driver do
2204
2199
  before { visit("/") }
2205
2200
 
2206
2201
  it "displays the message on subsequent page loads" do
2207
- driver.find_xpath("//span[contains(.,'localStorage is enabled')]").should be_empty
2202
+ expect(driver.find_xpath("//span[contains(.,'localStorage is enabled')]")).to be_empty
2208
2203
  visit "/"
2209
- driver.find_xpath("//span[contains(.,'localStorage is enabled')]").should_not be_empty
2204
+ expect(driver.find_xpath("//span[contains(.,'localStorage is enabled')]")).not_to be_empty
2210
2205
  end
2211
2206
 
2212
2207
  it "clears the message after a driver reset!" do
2213
2208
  visit "/"
2214
- driver.find_xpath("//span[contains(.,'localStorage is enabled')]").should_not be_empty
2209
+ expect(driver.find_xpath("//span[contains(.,'localStorage is enabled')]")).not_to be_empty
2215
2210
  driver.reset!
2216
2211
  visit "/"
2217
- driver.find_xpath("//span[contains(.,'localStorage is enabled')]").should be_empty
2212
+ expect(driver.find_xpath("//span[contains(.,'localStorage is enabled')]")).to be_empty
2218
2213
  end
2219
2214
  end
2220
2215
 
@@ -2297,20 +2292,20 @@ CACHE MANIFEST
2297
2292
  before { visit("/f8742c39-8bef-4196-b1c3-80f8a3d65f3e") }
2298
2293
 
2299
2294
  it "has proper state available" do
2300
- driver.find_xpath("//*[@id='state']").first.visible_text.should == '0'
2295
+ expect(driver.find_xpath("//*[@id='state']").first.visible_text).to eq '0'
2301
2296
  sleep 1
2302
- @visited.should eq(['complex', 'manifest', 'simple']), 'files were not downloaded in expected order'
2303
- driver.find_xpath("//*[@id='finished']").first.visible_text.should == 'cached'
2297
+ expect(@visited).to eq(['complex', 'manifest', 'simple']), 'files were not downloaded in expected order'
2298
+ expect(driver.find_xpath("//*[@id='finished']").first.visible_text).to eq 'cached'
2304
2299
  end
2305
2300
 
2306
2301
  it "is cleared on driver reset!" do
2307
2302
  sleep 1
2308
- @visited.should eq(['complex', 'manifest', 'simple']), 'files were not downloaded in expected order'
2303
+ expect(@visited).to eq(['complex', 'manifest', 'simple']), 'files were not downloaded in expected order'
2309
2304
  driver.reset!
2310
2305
  @visited.clear
2311
2306
  visit '/4aaffa31-f42d-403e-a19e-6b248d608087'
2312
2307
  sleep 1
2313
- @visited.should eq(['simple', 'manifest', 'simple']), 'simple action was used from cache instead of server'
2308
+ expect(@visited).to eq(['simple', 'manifest', 'simple']), 'simple action was used from cache instead of server'
2314
2309
  end
2315
2310
  end
2316
2311
 
@@ -2341,7 +2336,7 @@ CACHE MANIFEST
2341
2336
 
2342
2337
  it "submits a form without clicking" do
2343
2338
  driver.find_xpath("//form")[0].submit
2344
- driver.html.should include "Congrats"
2339
+ expect(driver.html).to include "Congrats"
2345
2340
  end
2346
2341
  end
2347
2342
 
@@ -2396,59 +2391,59 @@ CACHE MANIFEST
2396
2391
  before { visit("/") }
2397
2392
 
2398
2393
  it "returns the charCode for the keypressed" do
2399
- charCode_for("a").should eq "97"
2400
- charCode_for("A").should eq "65"
2401
- charCode_for("\r").should eq "13"
2402
- charCode_for(",").should eq "44"
2403
- charCode_for("<").should eq "60"
2404
- charCode_for("0").should eq "48"
2394
+ expect(charCode_for("a")).to eq "97"
2395
+ expect(charCode_for("A")).to eq "65"
2396
+ expect(charCode_for("\r")).to eq "13"
2397
+ expect(charCode_for(",")).to eq "44"
2398
+ expect(charCode_for("<")).to eq "60"
2399
+ expect(charCode_for("0")).to eq "48"
2405
2400
  end
2406
2401
 
2407
2402
  it "returns the keyCode for the keypressed" do
2408
- keyCode_for("a").should eq "97"
2409
- keyCode_for("A").should eq "65"
2410
- keyCode_for("\r").should eq "13"
2411
- keyCode_for(",").should eq "44"
2412
- keyCode_for("<").should eq "60"
2413
- keyCode_for("0").should eq "48"
2403
+ expect(keyCode_for("a")).to eq "97"
2404
+ expect(keyCode_for("A")).to eq "65"
2405
+ expect(keyCode_for("\r")).to eq "13"
2406
+ expect(keyCode_for(",")).to eq "44"
2407
+ expect(keyCode_for("<")).to eq "60"
2408
+ expect(keyCode_for("0")).to eq "48"
2414
2409
  end
2415
2410
 
2416
2411
  it "returns the which for the keypressed" do
2417
- which_for("a").should eq "97"
2418
- which_for("A").should eq "65"
2419
- which_for("\r").should eq "13"
2420
- which_for(",").should eq "44"
2421
- which_for("<").should eq "60"
2422
- which_for("0").should eq "48"
2412
+ expect(which_for("a")).to eq "97"
2413
+ expect(which_for("A")).to eq "65"
2414
+ expect(which_for("\r")).to eq "13"
2415
+ expect(which_for(",")).to eq "44"
2416
+ expect(which_for("<")).to eq "60"
2417
+ expect(which_for("0")).to eq "48"
2423
2418
  end
2424
2419
  end
2425
2420
 
2426
2421
  shared_examples "a keyupdown app" do
2427
2422
  it "returns a 0 charCode for the event" do
2428
- charCode_for("a").should eq "0"
2429
- charCode_for("A").should eq "0"
2430
- charCode_for("\b").should eq "0"
2431
- charCode_for(",").should eq "0"
2432
- charCode_for("<").should eq "0"
2433
- charCode_for("0").should eq "0"
2423
+ expect(charCode_for("a")).to eq "0"
2424
+ expect(charCode_for("A")).to eq "0"
2425
+ expect(charCode_for("\b")).to eq "0"
2426
+ expect(charCode_for(",")).to eq "0"
2427
+ expect(charCode_for("<")).to eq "0"
2428
+ expect(charCode_for("0")).to eq "0"
2434
2429
  end
2435
2430
 
2436
2431
  it "returns the keyCode for the event" do
2437
- keyCode_for("a").should eq "65"
2438
- keyCode_for("A").should eq "65"
2439
- keyCode_for("\b").should eq "8"
2440
- keyCode_for(",").should eq "188"
2441
- keyCode_for("<").should eq "188"
2442
- keyCode_for("0").should eq "48"
2432
+ expect(keyCode_for("a")).to eq "65"
2433
+ expect(keyCode_for("A")).to eq "65"
2434
+ expect(keyCode_for("\b")).to eq "8"
2435
+ expect(keyCode_for(",")).to eq "188"
2436
+ expect(keyCode_for("<")).to eq "188"
2437
+ expect( keyCode_for("0")).to eq "48"
2443
2438
  end
2444
2439
 
2445
2440
  it "returns the which for the event" do
2446
- which_for("a").should eq "65"
2447
- which_for("A").should eq "65"
2448
- which_for("\b").should eq "8"
2449
- which_for(",").should eq "188"
2450
- which_for("<").should eq "188"
2451
- which_for("0").should eq "48"
2441
+ expect(which_for("a")).to eq "65"
2442
+ expect(which_for("A")).to eq "65"
2443
+ expect(which_for("\b")).to eq "8"
2444
+ expect(which_for(",")).to eq "188"
2445
+ expect(which_for("<")).to eq "188"
2446
+ expect(which_for("0")).to eq "48"
2452
2447
  end
2453
2448
  end
2454
2449
 
@@ -2490,20 +2485,20 @@ CACHE MANIFEST
2490
2485
  it "has the expected text in the new window" do
2491
2486
  visit("/new_window")
2492
2487
  driver.within_window(driver.window_handles.last) do
2493
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2488
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2494
2489
  end
2495
2490
  end
2496
2491
 
2497
2492
  it "can switch to another window" do
2498
2493
  visit("/new_window")
2499
2494
  driver.switch_to_window(driver.window_handles.last)
2500
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2495
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2501
2496
  end
2502
2497
 
2503
2498
  it "knows the current window handle" do
2504
2499
  visit("/new_window")
2505
2500
  driver.within_window(driver.window_handles.last) do
2506
- driver.current_window_handle.should eq driver.window_handles.last
2501
+ expect(driver.current_window_handle).to eq driver.window_handles.last
2507
2502
  end
2508
2503
  end
2509
2504
 
@@ -2513,27 +2508,27 @@ CACHE MANIFEST
2513
2508
  driver.switch_to_window(driver.window_handles.last)
2514
2509
  driver.close_window(driver.current_window_handle)
2515
2510
 
2516
- driver.current_window_handle.should eq(original_handle)
2511
+ expect(driver.current_window_handle).to eq(original_handle)
2517
2512
  end
2518
2513
 
2519
2514
  it "can close an unfocused window" do
2520
2515
  visit("/new_window")
2521
2516
  driver.close_window(driver.window_handles.last)
2522
- driver.window_handles.size.should eq(1)
2517
+ expect(driver.window_handles.size).to eq(1)
2523
2518
  end
2524
2519
 
2525
2520
  it "can close the last window" do
2526
2521
  visit("/new_window")
2527
2522
  handles = driver.window_handles
2528
2523
  handles.each { |handle| driver.close_window(handle) }
2529
- driver.html.should be_empty
2530
- handles.should_not include(driver.current_window_handle)
2524
+ expect(driver.html).to be_empty
2525
+ expect(handles).not_to include(driver.current_window_handle)
2531
2526
  end
2532
2527
 
2533
2528
  it "waits for the new window to load" do
2534
2529
  visit("/new_window?sleep=1")
2535
2530
  driver.within_window(driver.window_handles.last) do
2536
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2531
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2537
2532
  end
2538
2533
  end
2539
2534
 
@@ -2541,60 +2536,59 @@ CACHE MANIFEST
2541
2536
  visit("/new_window?sleep=2")
2542
2537
  driver.execute_script("setTimeout(function() { window.location = 'about:blank' }, 1000)")
2543
2538
  driver.within_window(driver.window_handles.last) do
2544
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2539
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2545
2540
  end
2546
2541
  end
2547
2542
 
2548
2543
  it "switches back to the original window" do
2549
2544
  visit("/new_window")
2550
2545
  driver.within_window(driver.window_handles.last) { }
2551
- driver.find_xpath("//p").first.visible_text.should eq "bananas"
2546
+ expect(driver.find_xpath("//p").first.visible_text).to eq "bananas"
2552
2547
  end
2553
2548
 
2554
2549
  it "supports finding a window by name" do
2555
2550
  visit("/new_window")
2556
2551
  driver.within_window('myWindow') do
2557
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2552
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2558
2553
  end
2559
2554
  end
2560
2555
 
2561
2556
  it "supports finding a window by title" do
2562
2557
  visit("/new_window?sleep=5")
2563
2558
  driver.within_window('My New Window') do
2564
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2559
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2565
2560
  end
2566
2561
  end
2567
2562
 
2568
2563
  it "supports finding a window by url" do
2569
2564
  visit("/new_window?test")
2570
2565
  driver.within_window(driver_url(driver, "/?test")) do
2571
- driver.find_xpath("//p").first.visible_text.should eq "finished"
2566
+ expect(driver.find_xpath("//p").first.visible_text).to eq "finished"
2572
2567
  end
2573
2568
  end
2574
2569
 
2575
2570
  it "raises an error if the window is not found" do
2576
- expect { driver.within_window('myWindowDoesNotExist') }.
2577
- to raise_error(Capybara::Webkit::NoSuchWindowError)
2571
+ expect { driver.within_window('myWindowDoesNotExist') }.to raise_error(Capybara::Webkit::NoSuchWindowError)
2578
2572
  end
2579
2573
 
2580
2574
  it "has a number of window handles equal to the number of open windows" do
2581
- driver.window_handles.size.should eq 1
2575
+ expect(driver.window_handles.size).to eq 1
2582
2576
  visit("/new_window")
2583
- driver.window_handles.size.should eq 2
2577
+ expect(driver.window_handles.size).to eq 2
2584
2578
  end
2585
2579
 
2586
2580
  it "removes windows when closed via JavaScript" do
2587
2581
  visit("/new_window")
2588
2582
  driver.execute_script('console.log(window.document.title); window.close()')
2589
2583
  sleep 2
2590
- driver.window_handles.size.should eq 1
2584
+ expect(driver.window_handles.size).to eq 1
2591
2585
  end
2592
2586
 
2593
2587
  it "closes new windows on reset" do
2594
2588
  visit("/new_window")
2595
2589
  last_handle = driver.window_handles.last
2596
2590
  driver.reset!
2597
- driver.window_handles.should_not include(last_handle)
2591
+ expect(driver.window_handles).not_to include(last_handle)
2598
2592
  end
2599
2593
 
2600
2594
  it "leaves the old window focused when opening a new window" do
@@ -2602,15 +2596,15 @@ CACHE MANIFEST
2602
2596
  current_window = driver.current_window_handle
2603
2597
  driver.open_new_window
2604
2598
 
2605
- driver.current_window_handle.should eq current_window
2606
- driver.window_handles.size.should eq 3
2599
+ expect(driver.current_window_handle).to eq current_window
2600
+ expect(driver.window_handles.size).to eq 3
2607
2601
  end
2608
2602
 
2609
2603
  it "opens blank windows" do
2610
2604
  visit("/new_window")
2611
2605
  driver.open_new_window
2612
2606
  driver.switch_to_window(driver.window_handles.last)
2613
- driver.html.should be_empty
2607
+ expect(driver.html).to be_empty
2614
2608
  end
2615
2609
  end
2616
2610
 
@@ -2633,7 +2627,7 @@ CACHE MANIFEST
2633
2627
  end
2634
2628
 
2635
2629
  visit("/new_window", driver)
2636
- driver.cookies['session_id'].should eq session_id
2630
+ expect(driver.cookies['session_id']).to eq session_id
2637
2631
  end
2638
2632
 
2639
2633
  context "timers app" do
@@ -2708,27 +2702,27 @@ CACHE MANIFEST
2708
2702
  it "can authenticate a request" do
2709
2703
  driver.authenticate('user', 'password')
2710
2704
  visit("/")
2711
- driver.html.should include("Basic "+Base64.encode64("user:password").strip)
2705
+ expect(driver.html).to include("Basic "+Base64.encode64("user:password").strip)
2712
2706
  end
2713
2707
 
2714
2708
  it "returns 401 for incorrectly authenticated request" do
2715
2709
  driver.authenticate('user1', 'password1')
2716
- lambda { visit("/") }.should_not raise_error
2717
- driver.status_code.should eq 401
2710
+ expect { visit("/") }.not_to raise_error
2711
+ expect(driver.status_code).to eq 401
2718
2712
  end
2719
2713
 
2720
2714
  it "returns 401 for unauthenticated request" do
2721
- lambda { visit("/") }.should_not raise_error
2722
- driver.status_code.should eq 401
2715
+ expect { visit("/") }.not_to raise_error
2716
+ expect(driver.status_code).to eq 401
2723
2717
  end
2724
2718
 
2725
2719
  it "can be reset with subsequent authenticate call", skip_on_qt4: true do
2726
2720
  driver.authenticate('user', 'password')
2727
2721
  visit("/")
2728
- driver.html.should include("Basic "+Base64.encode64("user:password").strip)
2722
+ expect(driver.html).to include("Basic "+Base64.encode64("user:password").strip)
2729
2723
  driver.authenticate('user1', 'password1')
2730
- lambda { visit("/") }.should_not raise_error
2731
- driver.status_code.should eq 401
2724
+ expect{ visit("/") }.not_to raise_error
2725
+ expect(driver.status_code).to eq 401
2732
2726
  end
2733
2727
  end
2734
2728
 
@@ -2779,40 +2773,40 @@ CACHE MANIFEST
2779
2773
  it "should not fetch urls blocked by host" do
2780
2774
  visit("/")
2781
2775
  driver.within_frame('frame1') do
2782
- driver.find_xpath("//body").first.visible_text.should be_empty
2776
+ expect(driver.find_xpath("//body").first.visible_text).to be_empty
2783
2777
  end
2784
2778
  end
2785
2779
 
2786
2780
  it "should not fetch urls blocked by path" do
2787
2781
  visit('/')
2788
2782
  driver.within_frame('frame2') do
2789
- driver.find_xpath("//body").first.visible_text.should be_empty
2783
+ expect(driver.find_xpath("//body").first.visible_text).to be_empty
2790
2784
  end
2791
2785
  end
2792
2786
 
2793
2787
  it "should not fetch blocked scripts" do
2794
2788
  visit("/")
2795
- driver.html.should_not include("Script Run")
2789
+ expect(driver.html).not_to include("Script Run")
2796
2790
  end
2797
2791
 
2798
2792
  it "should fetch unblocked urls" do
2799
2793
  visit('/')
2800
2794
  driver.within_frame('frame3') do
2801
- driver.find_xpath("//p").first.visible_text.should eq "Inner"
2795
+ expect(driver.find_xpath("//p").first.visible_text).to eq "Inner"
2802
2796
  end
2803
2797
  end
2804
2798
 
2805
2799
  it "should not fetch urls blocked by wildcard match" do
2806
2800
  visit('/')
2807
2801
  driver.within_frame('frame4') do
2808
- driver.find("//body").first.text.should be_empty
2802
+ expect(driver.find("//body").first.text).to be_empty
2809
2803
  end
2810
2804
  end
2811
2805
 
2812
2806
  it "returns a status code for blocked urls" do
2813
2807
  visit("/")
2814
2808
  driver.within_frame('frame1') do
2815
- driver.status_code.should eq 200
2809
+ expect(driver.status_code).to eq 200
2816
2810
  end
2817
2811
  end
2818
2812
  end
@@ -2937,46 +2931,46 @@ CACHE MANIFEST
2937
2931
 
2938
2932
  it "should not raise a timeout error when zero" do
2939
2933
  configure { |config| config.timeout = 0 }
2940
- lambda { visit("/") }.should_not raise_error
2934
+ expect{ visit("/") }.not_to raise_error
2941
2935
  end
2942
2936
 
2943
2937
  it "should raise a timeout error" do
2944
2938
  configure { |config| config.timeout = 1 }
2945
- lambda { visit("/") }.should raise_error(Timeout::Error, "Request timed out after 1 second(s)")
2939
+ expect{ visit("/") }.to raise_error(Timeout::Error, "Request timed out after 1 second(s)")
2946
2940
  end
2947
2941
 
2948
2942
  it "should not raise an error when the timeout is high enough" do
2949
2943
  configure { |config| config.timeout = 10 }
2950
- lambda { visit("/") }.should_not raise_error
2944
+ expect { visit("/") }.not_to raise_error
2951
2945
  end
2952
2946
 
2953
2947
  it "should set the timeout for each request" do
2954
2948
  configure { |config| config.timeout = 10 }
2955
- lambda { visit("/") }.should_not raise_error
2949
+ expect{ visit("/") }.not_to raise_error
2956
2950
  driver.timeout = 1
2957
- lambda { visit("/") }.should raise_error(Timeout::Error)
2951
+ expect{ visit("/") }.to raise_error(Timeout::Error)
2958
2952
  end
2959
2953
 
2960
2954
  it "should set the timeout for each request" do
2961
2955
  configure { |config| config.timeout = 1 }
2962
- lambda { visit("/") }.should raise_error(Timeout::Error)
2956
+ expect { visit("/") }.to raise_error(Timeout::Error)
2963
2957
  driver.reset!
2964
2958
  driver.timeout = 10
2965
- lambda { visit("/") }.should_not raise_error
2959
+ expect{ visit("/") }.not_to raise_error
2966
2960
  end
2967
2961
 
2968
2962
  it "should raise a timeout on a slow form" do
2969
2963
  configure { |config| config.timeout = 3 }
2970
2964
  visit("/")
2971
- driver.status_code.should eq 200
2965
+ expect(driver.status_code).to eq 200
2972
2966
  driver.timeout = 1
2973
2967
  driver.find_xpath("//input").first.click
2974
- lambda { driver.status_code }.should raise_error(Timeout::Error)
2968
+ expect { driver.status_code }.to raise_error(Timeout::Error)
2975
2969
  end
2976
2970
 
2977
2971
  it "get timeout" do
2978
2972
  configure { |config| config.timeout = 10 }
2979
- driver.browser.timeout.should eq 10
2973
+ expect(driver.browser.timeout).to eq 10
2980
2974
  end
2981
2975
  end
2982
2976
 
@@ -2989,13 +2983,13 @@ CACHE MANIFEST
2989
2983
  it "logs nothing in normal mode" do
2990
2984
  configure { |config| config.debug = false }
2991
2985
  visit("/")
2992
- stderr.should_not include logging_message
2986
+ expect(stderr).not_to include logging_message
2993
2987
  end
2994
2988
 
2995
2989
  it "logs its commands in debug mode" do
2996
2990
  configure { |config| config.debug = true }
2997
2991
  visit("/")
2998
- stderr.should include logging_message
2992
+ expect(stderr).to include logging_message
2999
2993
  end
3000
2994
 
3001
2995
  let(:logging_message) { 'Wrote response true' }
@@ -3036,7 +3030,7 @@ CACHE MANIFEST
3036
3030
  it 'should not hang the server' do
3037
3031
  visit('/')
3038
3032
  driver.find_xpath('//input').first.click
3039
- driver.console_messages.first[:message].should eq "hello"
3033
+ expect(driver.console_messages.first[:message]).to eq "hello"
3040
3034
  end
3041
3035
  end
3042
3036
 
@@ -3055,7 +3049,7 @@ CACHE MANIFEST
3055
3049
  it 'returns an xpath for the current node' do
3056
3050
  visit('/')
3057
3051
  path = driver.find_xpath('//span').first.path
3058
- driver.find_xpath(path).first.text.should eq 'hello'
3052
+ expect(driver.find_xpath(path).first.text).to eq 'hello'
3059
3053
  end
3060
3054
  end
3061
3055
 
@@ -3106,11 +3100,11 @@ CACHE MANIFEST
3106
3100
 
3107
3101
  it "includes Capybara, capybara-webkit, Qt, and WebKit versions" do
3108
3102
  result = driver.version
3109
- result.should include("Capybara: #{Capybara::VERSION}")
3110
- result.should include("capybara-webkit: #{Capybara::Driver::Webkit::VERSION}")
3111
- result.should =~ /Qt: \d+\.\d+\.\d+/
3112
- result.should =~ /WebKit: \d+\.\d+/
3113
- result.should =~ /QtWebKit: \d+\.\d+/
3103
+ expect(result).to include("Capybara: #{Capybara::VERSION}")
3104
+ expect(result).to include("capybara-webkit: #{Capybara::Driver::Webkit::VERSION}")
3105
+ expect(result).to match /Qt: \d+\.\d+\.\d+/
3106
+ expect(result).to match /WebKit: \d+\.\d+/
3107
+ expect(result).to match /QtWebKit: \d+\.\d+/
3114
3108
  end
3115
3109
  end
3116
3110
 
@@ -3132,13 +3126,13 @@ CACHE MANIFEST
3132
3126
 
3133
3127
  it "can navigate in history" do
3134
3128
  visit("/first")
3135
- driver.find_xpath("//p").first.text.should eq('first')
3129
+ expect(driver.find_xpath("//p").first.text).to eq('first')
3136
3130
  driver.find_xpath("//a").first.click
3137
- driver.find_xpath("//p").first.text.should eq('navigated')
3131
+ expect(driver.find_xpath("//p").first.text).to eq('navigated')
3138
3132
  driver.go_back
3139
- driver.find_xpath("//p").first.text.should eq('first')
3133
+ expect(driver.find_xpath("//p").first.text).to eq('first')
3140
3134
  driver.go_forward
3141
- driver.find_xpath("//p").first.text.should eq('navigated')
3135
+ expect(driver.find_xpath("//p").first.text).to eq('navigated')
3142
3136
  end
3143
3137
  end
3144
3138
 
@@ -3197,8 +3191,8 @@ CACHE MANIFEST
3197
3191
  visit "/"
3198
3192
  sleep 0.5
3199
3193
  driver.reset!
3200
- stderr.should abort_request_to("/async?2")
3201
- stderr.should_not abort_request_to("/async?1")
3194
+ expect(stderr).to abort_request_to("/async?2")
3195
+ expect(stderr).not_to abort_request_to("/async?1")
3202
3196
  end
3203
3197
 
3204
3198
  def abort_request_to(path)
@@ -3264,13 +3258,13 @@ CACHE MANIFEST
3264
3258
 
3265
3259
  context "with default settings" do
3266
3260
  it "doesn't accept a self-signed certificate" do
3267
- lambda { driver.visit "https://#{@host}:#{@port}/" }.should raise_error
3261
+ expect { driver.visit "https://#{@host}:#{@port}/" }.to raise_error(Capybara::Webkit::InvalidResponseError)
3268
3262
  end
3269
3263
 
3270
3264
  it "doesn't accept a self-signed certificate in a new window" do
3271
3265
  driver.execute_script("window.open('about:blank')")
3272
3266
  driver.switch_to_window(driver.window_handles.last)
3273
- lambda { driver.visit "https://#{@host}:#{@port}/" }.should raise_error
3267
+ expect { driver.visit "https://#{@host}:#{@port}/" }.to raise_error(Capybara::Webkit::InvalidResponseError)
3274
3268
  end
3275
3269
  end
3276
3270
 
@@ -3331,13 +3325,13 @@ CACHE MANIFEST
3331
3325
 
3332
3326
  it "should load images by default" do
3333
3327
  visit("/")
3334
- requests.should match_array %w(image bgimage)
3328
+ expect(requests).to match_array %w(image bgimage)
3335
3329
  end
3336
3330
 
3337
3331
  it "should not load images when disabled" do
3338
3332
  configure(&:skip_image_loading)
3339
3333
  visit("/")
3340
- requests.should eq []
3334
+ expect(requests).to eq []
3341
3335
  end
3342
3336
 
3343
3337
  let(:requests) do
@@ -3394,7 +3388,7 @@ CACHE MANIFEST
3394
3388
  fork_connection
3395
3389
 
3396
3390
  driver.visit @url
3397
- @proxy_requests.size.should eq 2
3391
+ expect(@proxy_requests.size).to eq 2
3398
3392
  @request = @proxy_requests[-1]
3399
3393
  end
3400
3394
 
@@ -3408,43 +3402,88 @@ CACHE MANIFEST
3408
3402
  end
3409
3403
 
3410
3404
  it "uses the HTTP proxy correctly" do
3411
- @request[0].should match(/^GET\s+http:\/\/example.org\/\s+HTTP/i)
3412
- @request.find { |header|
3413
- header =~ /^Host:\s+example.org$/i }.should_not be nil
3405
+ expect(@request[0]).to match(/^GET\s+http:\/\/example.org\/\s+HTTP/i)
3406
+ expect(@request.find { |header| header =~ /^Host:\s+example.org$/i }).not_to be nil
3414
3407
  end
3415
3408
 
3416
3409
  it "sends correct proxy authentication" do
3417
3410
  auth_header = @request.find { |header|
3418
3411
  header =~ /^Proxy-Authorization:\s+/i }
3419
- auth_header.should_not be nil
3412
+ expect(auth_header).not_to be nil
3420
3413
 
3421
3414
  user, pass = Base64.decode64(auth_header.split(/\s+/)[-1]).split(":")
3422
- user.should eq @user
3423
- pass.should eq @pass
3415
+ expect(user).to eq @user
3416
+ expect(pass).to eq @pass
3424
3417
  end
3425
3418
 
3426
3419
  it "uses the proxy's response" do
3427
- driver.html.should include "D'oh!"
3420
+ expect(driver.html).to include "D'oh!"
3428
3421
  end
3429
3422
 
3430
3423
  it "uses original URL" do
3431
- driver.current_url.should eq @url
3424
+ expect(driver.current_url).to eq @url
3432
3425
  end
3433
3426
 
3434
3427
  it "uses URLs changed by javascript" do
3435
3428
  driver.execute_script %{window.history.pushState("", "", "/blah")}
3436
- driver.current_url.should eq "http://example.org/blah"
3429
+ expect(driver.current_url).to eq "http://example.org/blah"
3437
3430
  end
3438
3431
 
3439
3432
  it "is possible to disable proxy again" do
3440
3433
  @proxy_requests.clear
3441
3434
  driver.browser.clear_proxy
3442
3435
  driver.visit "http://#{@host}:#{@port}/"
3443
- @proxy_requests.size.should eq 0
3436
+ expect(@proxy_requests.size).to eq 0
3444
3437
  end
3445
3438
  end
3446
3439
 
3447
3440
  def driver_url(driver, path)
3448
3441
  URI.parse(driver.current_url).merge(path).to_s
3449
3442
  end
3443
+
3444
+ context "page with JavaScript errors" do
3445
+ let(:driver) do
3446
+ driver_for_app do
3447
+ get "/" do
3448
+ <<-HTML
3449
+ <!DOCTYPE html>
3450
+ <html>
3451
+ <body>
3452
+ <script type="text/javascript">
3453
+ undefinedFunc();
3454
+ </script>
3455
+ </body>
3456
+ </html>
3457
+ HTML
3458
+ end
3459
+ end
3460
+ end
3461
+
3462
+ it "raises errors as an exception, when configured" do
3463
+ configure do |config|
3464
+ config.raise_javascript_errors = true
3465
+ end
3466
+
3467
+ expected_error = Capybara::Webkit::JavaScriptError
3468
+ expected_message = "ReferenceError: Can't find variable: undefinedFunc"
3469
+
3470
+ expect { visit("/") }.to raise_error(expected_error) do |error|
3471
+ expect(error.javascript_errors.first[:message]).to eq expected_message
3472
+ end
3473
+ expect { driver.find_css("h1") }.to raise_error(expected_error)
3474
+ end
3475
+
3476
+ it "does not raise an exception when fetching the error messages" do
3477
+ configure do |config|
3478
+ config.raise_javascript_errors = true
3479
+ end
3480
+
3481
+ expect { driver.error_messages }.to_not raise_error
3482
+ end
3483
+
3484
+ it "does not raise errors as an exception by default" do
3485
+ expect { visit("/") }.to_not raise_error
3486
+ expect(driver.error_messages).to_not be_empty
3487
+ end
3488
+ end
3450
3489
  end