capybara-webkit 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +2 -3
  4. data/Gemfile.lock +25 -27
  5. data/NEWS.md +12 -0
  6. data/README.md +1 -1
  7. data/Rakefile +9 -5
  8. data/capybara-webkit.gemspec +2 -1
  9. data/gemfiles/2.0.gemfile.lock +7 -7
  10. data/gemfiles/2.1.gemfile.lock +5 -5
  11. data/lib/capybara/webkit/connection.rb +1 -0
  12. data/lib/capybara/webkit/cookie_jar.rb +1 -1
  13. data/lib/capybara/webkit/node.rb +1 -5
  14. data/lib/capybara/webkit/version.rb +1 -1
  15. data/lib/capybara_webkit_builder.rb +2 -2
  16. data/spec/browser_spec.rb +18 -18
  17. data/spec/connection_spec.rb +4 -4
  18. data/spec/cookie_jar_spec.rb +9 -9
  19. data/spec/driver_rendering_spec.rb +9 -9
  20. data/spec/driver_spec.rb +242 -181
  21. data/spec/integration/session_spec.rb +86 -15
  22. data/spec/support/app_runner.rb +6 -0
  23. data/src/FindCss.cpp +1 -1
  24. data/src/FindXpath.cpp +1 -1
  25. data/src/IgnoreDebugOutput.cpp +36 -0
  26. data/src/IgnoreDebugOutput.h +1 -0
  27. data/src/InvocationResult.cpp +2 -0
  28. data/src/JavascriptInvocation.cpp +25 -18
  29. data/src/JavascriptInvocation.h +5 -2
  30. data/src/NetworkAccessManager.cpp +10 -0
  31. data/src/NetworkAccessManager.h +2 -0
  32. data/src/Node.cpp +2 -1
  33. data/src/Visit.cpp +1 -1
  34. data/src/WebPage.cpp +22 -4
  35. data/src/WebPage.h +5 -2
  36. data/src/WebPageManager.cpp +4 -3
  37. data/src/capybara.js +107 -52
  38. data/src/main.cpp +2 -1
  39. data/src/pointer.png +0 -0
  40. data/src/webkit_server.pro +9 -2
  41. data/src/webkit_server.qrc +1 -0
  42. data/test/testignoredebugoutput.cpp +45 -0
  43. data/test/testwebkitserver.pro +5 -0
  44. data/webkit_server.pro +3 -1
  45. metadata +86 -42
@@ -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 == ".facebook.com"
20
+ subject.find("cookie1", "www.facebook.com").domain.should 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 == "1"
25
- subject.find("cookie1", "www.facebook.com").value.should == "3"
26
- subject.find("cookie2", "sub1.example.org").value.should == "4"
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"
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 == nil
30
+ subject.find("cookie2", "www.example.org").should eq nil
31
31
  end
32
32
 
33
33
  it "respects path precedence rules" do
34
- subject.find("cookie1", "www.example.org").value.should == "1"
35
- subject.find("cookie1", "www.example.org", "/dir1/123").value.should == "2"
34
+ subject.find("cookie1", "www.example.org").value.should eq "1"
35
+ subject.find("cookie1", "www.example.org", "/dir1/123").value.should 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 == "1"
41
+ subject["cookie1", "example.org"].should eq "1"
42
42
  end
43
43
 
44
44
  it "returns nil if no cookie is found" do
45
- subject["notexisting"].should == nil
45
+ subject["notexisting"].should eq nil
46
46
  end
47
47
  end
48
48
  end
@@ -34,7 +34,7 @@ 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 == "PNG"
37
+ @image[:format].should eq "PNG"
38
38
  end
39
39
 
40
40
  it "width default to 1000px (with 15px less for the scrollbar)" do
@@ -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 == 500
54
+ @image[:width].should eq 500
55
55
  end
56
56
 
57
57
  it "height should match the height given" do
58
- @image[:height].should == 400
58
+ @image[:height].should 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 == 1680
63
- driver.evaluate_script('window.innerHeight').should == 1050
62
+ driver.evaluate_script('window.innerWidth').should eq 1680
63
+ driver.evaluate_script('window.innerHeight').should eq 1050
64
64
  end
65
65
  end
66
66
 
@@ -76,8 +76,8 @@ describe Capybara::Webkit::Driver, "rendering an image" do
76
76
  end
77
77
 
78
78
  it "should restore viewport dimensions after rendering" do
79
- driver.evaluate_script('window.innerWidth').should == 1680
80
- driver.evaluate_script('window.innerHeight').should == 1050
79
+ driver.evaluate_script('window.innerWidth').should eq 1680
80
+ driver.evaluate_script('window.innerHeight').should 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 == 800
90
- driver.evaluate_script('window.innerHeight').should == 600
89
+ driver.evaluate_script('window.innerWidth').should eq 800
90
+ driver.evaluate_script('window.innerHeight').should eq 600
91
91
  end
92
92
  end
93
93
  end
data/spec/driver_spec.rb CHANGED
@@ -93,7 +93,7 @@ describe Capybara::Webkit::Driver do
93
93
 
94
94
  it "returns an attribute's value" do
95
95
  driver.within_frame("f") do
96
- driver.find_xpath("//p").first["id"].should == "farewell"
96
+ driver.find_xpath("//p").first["id"].should eq "farewell"
97
97
  end
98
98
  end
99
99
 
@@ -108,20 +108,20 @@ describe Capybara::Webkit::Driver do
108
108
 
109
109
  it "returns a node's text" do
110
110
  driver.within_frame("f") do
111
- driver.find_xpath("//p").first.visible_text.should == "goodbye"
111
+ driver.find_xpath("//p").first.visible_text.should eq "goodbye"
112
112
  end
113
113
  end
114
114
 
115
115
  it "returns the current URL" do
116
116
  driver.within_frame("f") do
117
- driver.current_url.should == driver_url(driver, "/iframe")
117
+ driver.current_url.should eq driver_url(driver, "/iframe")
118
118
  end
119
119
  end
120
120
 
121
121
  it "evaluates Javascript" do
122
122
  driver.within_frame("f") do
123
123
  result = driver.evaluate_script(%<document.getElementById('farewell').innerText>)
124
- result.should == "goodbye"
124
+ result.should eq "goodbye"
125
125
  end
126
126
  end
127
127
 
@@ -137,24 +137,24 @@ describe Capybara::Webkit::Driver do
137
137
 
138
138
  driver.within_frame("f") {}
139
139
 
140
- driver.current_url.should == original_url
140
+ driver.current_url.should eq original_url
141
141
  end
142
142
 
143
143
  it "returns the headers for the page" do
144
144
  driver.within_frame("f") do
145
- driver.response_headers['X-Redirected'].should == "true"
145
+ driver.response_headers['X-Redirected'].should eq "true"
146
146
  end
147
147
  end
148
148
 
149
149
  it "returns the status code for the page" do
150
150
  driver.within_frame("f") do
151
- driver.status_code.should == 200
151
+ driver.status_code.should eq 200
152
152
  end
153
153
  end
154
154
 
155
155
  it "returns the document title" do
156
156
  driver.within_frame("f") do
157
- driver.title.should == "Title"
157
+ driver.title.should eq "Title"
158
158
  end
159
159
  end
160
160
  end
@@ -223,35 +223,35 @@ describe Capybara::Webkit::Driver do
223
223
  it "should redirect without content type" do
224
224
  visit("/form")
225
225
  driver.find_xpath("//input").first.click
226
- driver.find_xpath("//p").first.visible_text.should == ""
226
+ driver.find_xpath("//p").first.visible_text.should eq ""
227
227
  end
228
228
 
229
229
  it "returns the current URL when changed by pushState after a redirect" do
230
230
  visit("/redirect-me")
231
- driver.current_url.should == driver_url(driver, "/target")
231
+ driver.current_url.should eq driver_url(driver, "/target")
232
232
  driver.execute_script("window.history.pushState({}, '', '/pushed-after-redirect')")
233
- driver.current_url.should == driver_url(driver, "/pushed-after-redirect")
233
+ driver.current_url.should eq driver_url(driver, "/pushed-after-redirect")
234
234
  end
235
235
 
236
236
  it "returns the current URL when changed by replaceState after a redirect" do
237
237
  visit("/redirect-me")
238
- driver.current_url.should == driver_url(driver, "/target")
238
+ driver.current_url.should eq driver_url(driver, "/target")
239
239
  driver.execute_script("window.history.replaceState({}, '', '/replaced-after-redirect')")
240
- driver.current_url.should == driver_url(driver, "/replaced-after-redirect")
240
+ driver.current_url.should eq driver_url(driver, "/replaced-after-redirect")
241
241
  end
242
242
 
243
243
  it "should make headers available through response_headers" do
244
244
  visit('/redirect-me')
245
- driver.response_headers['X-Redirected'].should == "true"
245
+ driver.response_headers['X-Redirected'].should eq "true"
246
246
  visit('/target')
247
- driver.response_headers['X-Redirected'].should == "false"
247
+ driver.response_headers['X-Redirected'].should eq "false"
248
248
  end
249
249
 
250
250
  it "should make the status code available through status_code" do
251
251
  visit('/redirect-me')
252
- driver.status_code.should == 200
252
+ driver.status_code.should eq 200
253
253
  visit('/target')
254
- driver.status_code.should == 200
254
+ driver.status_code.should eq 200
255
255
  end
256
256
  end
257
257
 
@@ -272,7 +272,7 @@ describe Capybara::Webkit::Driver do
272
272
  end
273
273
 
274
274
  it "sets the response headers with respect to the unsupported request" do
275
- driver.response_headers["Content-Type"].should == "text/css"
275
+ driver.response_headers["Content-Type"].should eq "text/css"
276
276
  end
277
277
 
278
278
  it "does not wrap the content in HTML tags" do
@@ -315,7 +315,7 @@ describe Capybara::Webkit::Driver do
315
315
 
316
316
  it "should return the binary content" do
317
317
  src = driver.html.force_encoding('binary')
318
- src.should == "Hello\xFF\xFF\xFF\xFFWorld".force_encoding('binary')
318
+ src.should eq "Hello\xFF\xFF\xFF\xFFWorld".force_encoding('binary')
319
319
  end
320
320
  end
321
321
 
@@ -371,7 +371,7 @@ describe Capybara::Webkit::Driver do
371
371
 
372
372
  it "has a blank location after reseting" do
373
373
  driver.reset!
374
- driver.current_url.should == "about:blank"
374
+ driver.current_url.should eq "about:blank"
375
375
  end
376
376
 
377
377
  it "raises an error for an invalid xpath query" do
@@ -385,7 +385,7 @@ describe Capybara::Webkit::Driver do
385
385
  end
386
386
 
387
387
  it "returns an attribute's value" do
388
- driver.find_xpath("//p").first["id"].should == "greeting"
388
+ driver.find_xpath("//p").first["id"].should eq "greeting"
389
389
  end
390
390
 
391
391
  it "parses xpath with quotes" do
@@ -393,30 +393,30 @@ describe Capybara::Webkit::Driver do
393
393
  end
394
394
 
395
395
  it "returns a node's visible text" do
396
- driver.find_xpath("//*[@id='hidden-text']").first.visible_text.should == "Some of this text is"
396
+ driver.find_xpath("//*[@id='hidden-text']").first.visible_text.should eq "Some of this text is"
397
397
  end
398
398
 
399
399
  it "normalizes a node's text" do
400
- driver.find_xpath("//div[contains(@class, 'normalize')]").first.visible_text.should == "Spaces not normalized"
400
+ driver.find_xpath("//div[contains(@class, 'normalize')]").first.visible_text.should eq "Spaces not normalized"
401
401
  end
402
402
 
403
403
  it "returns all of a node's text" do
404
- driver.find_xpath("//*[@id='hidden-text']").first.all_text.should == "Some of this text is hidden!"
404
+ driver.find_xpath("//*[@id='hidden-text']").first.all_text.should eq "Some of this text is hidden!"
405
405
  end
406
406
 
407
407
  it "returns the current URL" do
408
408
  visit "/hello/world?success=true"
409
- driver.current_url.should == driver_url(driver, "/hello/world?success=true")
409
+ driver.current_url.should eq driver_url(driver, "/hello/world?success=true")
410
410
  end
411
411
 
412
412
  it "returns the current URL when changed by pushState" do
413
413
  driver.execute_script("window.history.pushState({}, '', '/pushed')")
414
- driver.current_url.should == driver_url(driver, "/pushed")
414
+ driver.current_url.should eq driver_url(driver, "/pushed")
415
415
  end
416
416
 
417
417
  it "returns the current URL when changed by replaceState" do
418
418
  driver.execute_script("window.history.replaceState({}, '', '/replaced')")
419
- driver.current_url.should == driver_url(driver, "/replaced")
419
+ driver.current_url.should eq driver_url(driver, "/replaced")
420
420
  end
421
421
 
422
422
  it "does not double-encode URLs" do
@@ -424,6 +424,12 @@ describe Capybara::Webkit::Driver do
424
424
  driver.current_url.should =~ /success=\%25true/
425
425
  end
426
426
 
427
+ it "returns the current URL with encoded characters" do
428
+ visit("/hello/world?success[value]=true")
429
+ current_url = Rack::Utils.unescape(driver.current_url)
430
+ current_url.should include('success[value]=true')
431
+ end
432
+
427
433
  it "visits a page with an anchor" do
428
434
  visit("/hello#display_none")
429
435
  driver.current_url.should =~ /hello#display_none/
@@ -431,37 +437,37 @@ describe Capybara::Webkit::Driver do
431
437
 
432
438
  it "evaluates Javascript and returns a string" do
433
439
  result = driver.evaluate_script(%<document.getElementById('greeting').innerText>)
434
- result.should == "hello"
440
+ result.should eq "hello"
435
441
  end
436
442
 
437
443
  it "evaluates Javascript and returns an array" do
438
444
  result = driver.evaluate_script(%<["hello", "world"]>)
439
- result.should == %w(hello world)
445
+ result.should eq %w(hello world)
440
446
  end
441
447
 
442
448
  it "evaluates Javascript and returns an int" do
443
449
  result = driver.evaluate_script(%<123>)
444
- result.should == 123
450
+ result.should eq 123
445
451
  end
446
452
 
447
453
  it "evaluates Javascript and returns a float" do
448
454
  result = driver.evaluate_script(%<1.5>)
449
- result.should == 1.5
455
+ result.should eq 1.5
450
456
  end
451
457
 
452
458
  it "evaluates Javascript and returns null" do
453
459
  result = driver.evaluate_script(%<(function () {})()>)
454
- result.should == nil
460
+ result.should eq nil
455
461
  end
456
462
 
457
463
  it "evaluates Infinity and returns null" do
458
464
  result = driver.evaluate_script(%<Infinity>)
459
- result.should == nil
465
+ result.should eq nil
460
466
  end
461
467
 
462
468
  it "evaluates Javascript and returns an object" do
463
469
  result = driver.evaluate_script(%<({ 'one' : 1 })>)
464
- result.should == { 'one' => 1 }
470
+ result.should eq 'one' => 1
465
471
  end
466
472
 
467
473
  it "evaluates Javascript and returns true" do
@@ -481,7 +487,7 @@ describe Capybara::Webkit::Driver do
481
487
 
482
488
  it "evaluates Javascript with multiple lines" do
483
489
  result = driver.evaluate_script("[1,\n2]")
484
- result.should == [1, 2]
490
+ result.should eq [1, 2]
485
491
  end
486
492
 
487
493
  it "executes Javascript" do
@@ -500,7 +506,7 @@ describe Capybara::Webkit::Driver do
500
506
  end
501
507
 
502
508
  it "returns a node's tag name" do
503
- driver.find_xpath("//p").first.tag_name.should == "p"
509
+ driver.find_xpath("//p").first.tag_name.should eq "p"
504
510
  end
505
511
 
506
512
  it "reads disabled property" do
@@ -518,11 +524,11 @@ describe Capybara::Webkit::Driver do
518
524
  end
519
525
 
520
526
  it "returns the document title" do
521
- driver.title.should == "Title"
527
+ driver.title.should eq "Title"
522
528
  end
523
529
 
524
530
  it "finds elements by CSS" do
525
- driver.find_css("p").first.visible_text.should == "hello"
531
+ driver.find_css("p").first.visible_text.should eq "hello"
526
532
  end
527
533
  end
528
534
 
@@ -542,7 +548,7 @@ describe Capybara::Webkit::Driver do
542
548
  before { visit("/") }
543
549
 
544
550
  it "should handle text for svg elements" do
545
- driver.find_xpath("//*[@id='navy_text']").first.visible_text.should == "In the navy!"
551
+ driver.find_xpath("//*[@id='navy_text']").first.visible_text.should eq "In the navy!"
546
552
  end
547
553
  end
548
554
 
@@ -582,7 +588,7 @@ describe Capybara::Webkit::Driver do
582
588
 
583
589
  it "supports multi-line console messages" do
584
590
  message = driver.console_messages[2]
585
- message[:message].should == "hello\nnewline"
591
+ message[:message].should eq "hello\nnewline"
586
592
  end
587
593
 
588
594
  it "empties the array when reset" do
@@ -592,13 +598,13 @@ describe Capybara::Webkit::Driver do
592
598
 
593
599
  it "supports console messages from an unknown source" do
594
600
  driver.execute_script("console.log('hello')")
595
- driver.console_messages.last[:message].should == 'hello'
601
+ driver.console_messages.last[:message].should eq 'hello'
596
602
  driver.console_messages.last[:source].should be_nil
597
603
  driver.console_messages.last[:line_number].should be_nil
598
604
  end
599
605
 
600
606
  it "escapes unicode console messages" do
601
- driver.console_messages[3][:message].should == '𝄞'
607
+ driver.console_messages[3][:message].should eq '𝄞'
602
608
  end
603
609
  end
604
610
 
@@ -621,7 +627,7 @@ describe Capybara::Webkit::Driver do
621
627
  before { visit("/") }
622
628
 
623
629
  it "should let me read my alert messages" do
624
- driver.alert_messages.first.should == "Alert Text\nGoes Here"
630
+ driver.alert_messages.first.should eq "Alert Text\nGoes Here"
625
631
  end
626
632
 
627
633
  it "empties the array when reset" do
@@ -655,25 +661,25 @@ describe Capybara::Webkit::Driver do
655
661
 
656
662
  it "should default to accept the confirm" do
657
663
  driver.find_xpath("//input").first.click
658
- driver.console_messages.first[:message].should == "hello"
664
+ driver.console_messages.first[:message].should eq "hello"
659
665
  end
660
666
 
661
667
  it "can dismiss the confirm" do
662
668
  driver.dismiss_js_confirms!
663
669
  driver.find_xpath("//input").first.click
664
- driver.console_messages.first[:message].should == "goodbye"
670
+ driver.console_messages.first[:message].should eq "goodbye"
665
671
  end
666
672
 
667
673
  it "can accept the confirm explicitly" do
668
674
  driver.dismiss_js_confirms!
669
675
  driver.accept_js_confirms!
670
676
  driver.find_xpath("//input").first.click
671
- driver.console_messages.first[:message].should == "hello"
677
+ driver.console_messages.first[:message].should eq "hello"
672
678
  end
673
679
 
674
- it "should collect the javsacript confirm dialog contents" do
680
+ it "should collect the javascript confirm dialog contents" do
675
681
  driver.find_xpath("//input").first.click
676
- driver.confirm_messages.first.should == "Yes?"
682
+ driver.confirm_messages.first.should eq "Yes?"
677
683
  end
678
684
 
679
685
  it "empties the array when reset" do
@@ -687,12 +693,12 @@ describe Capybara::Webkit::Driver do
687
693
  driver.reset!
688
694
  visit("/")
689
695
  driver.find_xpath("//input").first.click
690
- driver.console_messages.first[:message].should == "hello"
696
+ driver.console_messages.first[:message].should eq "hello"
691
697
  end
692
698
 
693
699
  it "supports multi-line confirmation messages" do
694
700
  driver.execute_script("confirm('Hello\\nnewline')")
695
- driver.confirm_messages.first.should == "Hello\nnewline"
701
+ driver.confirm_messages.first.should eq "Hello\nnewline"
696
702
  end
697
703
 
698
704
  end
@@ -723,42 +729,42 @@ describe Capybara::Webkit::Driver do
723
729
 
724
730
  it "should default to dismiss the prompt" do
725
731
  driver.find_xpath("//input").first.click
726
- driver.console_messages.first[:message].should == "goodbye"
732
+ driver.console_messages.first[:message].should eq "goodbye"
727
733
  end
728
734
 
729
735
  it "can accept the prompt without providing text" do
730
736
  driver.accept_js_prompts!
731
737
  driver.find_xpath("//input").first.click
732
- driver.console_messages.first[:message].should == "hello John Smith"
738
+ driver.console_messages.first[:message].should eq "hello John Smith"
733
739
  end
734
740
 
735
741
  it "can accept the prompt with input" do
736
742
  driver.js_prompt_input = "Capy"
737
743
  driver.accept_js_prompts!
738
744
  driver.find_xpath("//input").first.click
739
- driver.console_messages.first[:message].should == "hello Capy"
745
+ driver.console_messages.first[:message].should eq "hello Capy"
740
746
  end
741
747
 
742
748
  it "can return to dismiss the prompt after accepting prompts" do
743
749
  driver.accept_js_prompts!
744
750
  driver.dismiss_js_prompts!
745
751
  driver.find_xpath("//input").first.click
746
- driver.console_messages.first[:message].should == "goodbye"
752
+ driver.console_messages.first[:message].should eq "goodbye"
747
753
  end
748
754
 
749
755
  it "should let me remove the prompt input text" do
750
756
  driver.js_prompt_input = "Capy"
751
757
  driver.accept_js_prompts!
752
758
  driver.find_xpath("//input").first.click
753
- driver.console_messages.first[:message].should == "hello Capy"
759
+ driver.console_messages.first[:message].should eq "hello Capy"
754
760
  driver.js_prompt_input = nil
755
761
  driver.find_xpath("//input").first.click
756
- driver.console_messages.last[:message].should == "hello John Smith"
762
+ driver.console_messages.last[:message].should eq "hello John Smith"
757
763
  end
758
764
 
759
- it "should collect the javsacript prompt dialog contents" do
765
+ it "should collect the javascript prompt dialog contents" do
760
766
  driver.find_xpath("//input").first.click
761
- driver.prompt_messages.first.should == "Your name?"
767
+ driver.prompt_messages.first.should eq "Your name?"
762
768
  end
763
769
 
764
770
  it "empties the array when reset" do
@@ -772,12 +778,12 @@ describe Capybara::Webkit::Driver do
772
778
  driver.reset!
773
779
  visit("/")
774
780
  driver.find_xpath("//input").first.click
775
- driver.console_messages.first[:message].should == "goodbye"
781
+ driver.console_messages.first[:message].should eq "goodbye"
776
782
  end
777
783
 
778
784
  it "supports multi-line prompt messages" do
779
785
  driver.execute_script("prompt('Hello\\nnewline')")
780
- driver.prompt_messages.first.should == "Hello\nnewline"
786
+ driver.prompt_messages.first.should eq "Hello\nnewline"
781
787
  end
782
788
 
783
789
  end
@@ -825,57 +831,57 @@ describe Capybara::Webkit::Driver do
825
831
  before { visit("/") }
826
832
 
827
833
  it "returns a textarea's value" do
828
- driver.find_xpath("//textarea").first.value.should == "what a wonderful area for text"
834
+ driver.find_xpath("//textarea").first.value.should eq "what a wonderful area for text"
829
835
  end
830
836
 
831
837
  it "returns a text input's value" do
832
- driver.find_xpath("//input").first.value.should == "bar"
838
+ driver.find_xpath("//input").first.value.should eq "bar"
833
839
  end
834
840
 
835
841
  it "returns a select's value" do
836
- driver.find_xpath("//select").first.value.should == "Capybara"
842
+ driver.find_xpath("//select").first.value.should eq "Capybara"
837
843
  end
838
844
 
839
845
  it "sets an input's value" do
840
846
  input = driver.find_xpath("//input").first
841
847
  input.set("newvalue")
842
- input.value.should == "newvalue"
848
+ input.value.should eq "newvalue"
843
849
  end
844
850
 
845
851
  it "sets an input's value greater than the max length" do
846
852
  input = driver.find_xpath("//input[@name='maxlength_foo']").first
847
853
  input.set("allegories (poems)")
848
- input.value.should == "allegories"
854
+ input.value.should eq "allegories"
849
855
  end
850
856
 
851
857
  it "sets an input's value equal to the max length" do
852
858
  input = driver.find_xpath("//input[@name='maxlength_foo']").first
853
859
  input.set("allegories")
854
- input.value.should == "allegories"
860
+ input.value.should eq "allegories"
855
861
  end
856
862
 
857
863
  it "sets an input's value less than the max length" do
858
864
  input = driver.find_xpath("//input[@name='maxlength_foo']").first
859
865
  input.set("poems")
860
- input.value.should == "poems"
866
+ input.value.should eq "poems"
861
867
  end
862
868
 
863
869
  it "sets an input's nil value" do
864
870
  input = driver.find_xpath("//input").first
865
871
  input.set(nil)
866
- input.value.should == ""
872
+ input.value.should eq ""
867
873
  end
868
874
 
869
875
  it "sets a select's value" do
870
876
  select = driver.find_xpath("//select").first
871
877
  select.set("Monkey")
872
- select.value.should == "Monkey"
878
+ select.value.should eq "Monkey"
873
879
  end
874
880
 
875
881
  it "sets a textarea's value" do
876
882
  textarea = driver.find_xpath("//textarea").first
877
883
  textarea.set("newvalue")
878
- textarea.value.should == "newvalue"
884
+ textarea.value.should eq "newvalue"
879
885
  end
880
886
 
881
887
  let(:monkey_option) { driver.find_xpath("//option[@id='select-option-monkey']").first }
@@ -891,12 +897,12 @@ describe Capybara::Webkit::Driver do
891
897
 
892
898
  context "a select element's selection has been changed" do
893
899
  before do
894
- animal_select.value.should == "Capybara"
900
+ animal_select.value.should eq "Capybara"
895
901
  monkey_option.select_option
896
902
  end
897
903
 
898
904
  it "returns the new selection" do
899
- animal_select.value.should == "Monkey"
905
+ animal_select.value.should eq "Monkey"
900
906
  end
901
907
 
902
908
  it "does not modify the selected attribute of a new selection" do
@@ -906,7 +912,7 @@ describe Capybara::Webkit::Driver do
906
912
  it "returns the old value when a reset button is clicked" do
907
913
  reset_button.click
908
914
 
909
- animal_select.value.should == "Capybara"
915
+ animal_select.value.should eq "Capybara"
910
916
  end
911
917
  end
912
918
 
@@ -945,7 +951,7 @@ describe Capybara::Webkit::Driver do
945
951
  banana_option.unselect_option
946
952
  cherry_option.unselect_option
947
953
 
948
- toppings_select.value.should == []
954
+ toppings_select.value.should eq []
949
955
 
950
956
  apple_option.select_option
951
957
  banana_option.select_option
@@ -1007,7 +1013,7 @@ describe Capybara::Webkit::Driver do
1007
1013
  it "does not modify a readonly input" do
1008
1014
  readonly_input = driver.find_css("#readonly_input").first
1009
1015
  readonly_input.set('enabled')
1010
- readonly_input.value.should == 'readonly'
1016
+ readonly_input.value.should eq 'readonly'
1011
1017
  end
1012
1018
 
1013
1019
  it "should see enabled options in disabled select as disabled" do
@@ -1050,18 +1056,18 @@ describe Capybara::Webkit::Driver do
1050
1056
 
1051
1057
  it "triggers mouse events" do
1052
1058
  watch.click
1053
- fired_events.should == %w(mousedown mouseup click)
1059
+ fired_events.should eq %w(mousedown mouseup click)
1054
1060
  end
1055
1061
 
1056
1062
  it "triggers double click" do
1057
1063
  # check event order at http://www.quirksmode.org/dom/events/click.html
1058
1064
  watch.double_click
1059
- fired_events.should == %w(mousedown mouseup click mousedown mouseup click dblclick)
1065
+ fired_events.should eq %w(mousedown mouseup click mousedown mouseup click dblclick)
1060
1066
  end
1061
1067
 
1062
1068
  it "triggers right click" do
1063
1069
  watch.right_click
1064
- fired_events.should == %w(mousedown contextmenu mouseup)
1070
+ fired_events.should eq %w(mousedown contextmenu mouseup)
1065
1071
  end
1066
1072
  end
1067
1073
 
@@ -1122,23 +1128,23 @@ describe Capybara::Webkit::Driver do
1122
1128
  %w(email number password search tel text url).each do | field_type |
1123
1129
  it "triggers text input events on inputs of type #{field_type}" do
1124
1130
  driver.find_xpath("//input[@type='#{field_type}']").first.set(newtext)
1125
- driver.find_xpath("//li").map(&:visible_text).should == keyevents
1131
+ driver.find_xpath("//li").map(&:visible_text).should eq keyevents
1126
1132
  end
1127
1133
  end
1128
1134
 
1129
1135
  it "triggers textarea input events" do
1130
1136
  driver.find_xpath("//textarea").first.set(newtext)
1131
- driver.find_xpath("//li").map(&:visible_text).should == keyevents
1137
+ driver.find_xpath("//li").map(&:visible_text).should eq keyevents
1132
1138
  end
1133
1139
 
1134
1140
  it "triggers radio input events" do
1135
1141
  driver.find_xpath("//input[@type='radio']").first.set(true)
1136
- driver.find_xpath("//li").map(&:visible_text).should == %w(mousedown focus mouseup change click)
1142
+ driver.find_xpath("//li").map(&:visible_text).should eq %w(mousedown focus mouseup change click)
1137
1143
  end
1138
1144
 
1139
1145
  it "triggers checkbox events" do
1140
1146
  driver.find_xpath("//input[@type='checkbox']").first.set(true)
1141
- driver.find_xpath("//li").map(&:visible_text).should == %w(mousedown focus mouseup change click)
1147
+ driver.find_xpath("//li").map(&:visible_text).should eq %w(mousedown focus mouseup change click)
1142
1148
  end
1143
1149
  end
1144
1150
 
@@ -1228,10 +1234,10 @@ describe Capybara::Webkit::Driver do
1228
1234
 
1229
1235
  it "fires a change on select" do
1230
1236
  select = driver.find_xpath("//select").first
1231
- select.value.should == "1"
1237
+ select.value.should eq "1"
1232
1238
  option = driver.find_xpath("//option[@id='option-2']").first
1233
1239
  option.select_option
1234
- select.value.should == "2"
1240
+ select.value.should eq "2"
1235
1241
  driver.find_xpath("//select[@class='triggered']").should_not be_empty
1236
1242
  end
1237
1243
 
@@ -1241,7 +1247,7 @@ describe Capybara::Webkit::Driver do
1241
1247
 
1242
1248
  draggable.drag_to(container)
1243
1249
 
1244
- driver.find_xpath("//*[@class='triggered']").size.should == 1
1250
+ driver.find_xpath("//*[@class='triggered']").size.should eq 1
1245
1251
  end
1246
1252
  end
1247
1253
 
@@ -1261,12 +1267,12 @@ describe Capybara::Webkit::Driver do
1261
1267
 
1262
1268
  it "evaluates nested xpath expressions" do
1263
1269
  parent = driver.find_xpath("//*[@id='parent']").first
1264
- parent.find_xpath("./*[@class='find']").map(&:visible_text).should == %w(Expected)
1270
+ parent.find_xpath("./*[@class='find']").map(&:visible_text).should eq %w(Expected)
1265
1271
  end
1266
1272
 
1267
1273
  it "finds elements by CSS" do
1268
1274
  parent = driver.find_css("#parent").first
1269
- parent.find_css(".find").first.visible_text.should == "Expected"
1275
+ parent.find_css(".find").first.visible_text.should eq "Expected"
1270
1276
  end
1271
1277
  end
1272
1278
 
@@ -1286,7 +1292,7 @@ describe Capybara::Webkit::Driver do
1286
1292
  end
1287
1293
  visit("/", driver)
1288
1294
  driver.find_xpath("//a").first.click
1289
- result.should == "finished"
1295
+ result.should eq "finished"
1290
1296
  end
1291
1297
  end
1292
1298
 
@@ -1348,7 +1354,7 @@ describe Capybara::Webkit::Driver do
1348
1354
  driver.find_xpath("//input").first.click
1349
1355
  expect { driver.find_xpath("//p") }.to raise_error(Capybara::Webkit::InvalidResponseError)
1350
1356
  visit("/")
1351
- driver.find_xpath("//p").first.visible_text.should == "hello"
1357
+ driver.find_xpath("//p").first.visible_text.should eq "hello"
1352
1358
  end
1353
1359
  end
1354
1360
 
@@ -1374,7 +1380,7 @@ describe Capybara::Webkit::Driver do
1374
1380
  before { visit("/") }
1375
1381
 
1376
1382
  it "doesn't crash from alerts" do
1377
- driver.find_xpath("//p").first.visible_text.should == "success"
1383
+ driver.find_xpath("//p").first.visible_text.should eq "success"
1378
1384
  end
1379
1385
  end
1380
1386
 
@@ -1404,31 +1410,31 @@ describe Capybara::Webkit::Driver do
1404
1410
  end
1405
1411
 
1406
1412
  it "can set user_agent" do
1407
- driver.find_xpath('id("user-agent")').first.visible_text.should == 'capybara-webkit/custom-user-agent'
1408
- driver.evaluate_script('navigator.userAgent').should == 'capybara-webkit/custom-user-agent'
1413
+ driver.find_xpath('id("user-agent")').first.visible_text.should eq 'capybara-webkit/custom-user-agent'
1414
+ driver.evaluate_script('navigator.userAgent').should eq 'capybara-webkit/custom-user-agent'
1409
1415
  end
1410
1416
 
1411
1417
  it "keep user_agent in next page" do
1412
1418
  driver.find_xpath("//a").first.click
1413
- driver.find_xpath('id("user-agent")').first.visible_text.should == 'capybara-webkit/custom-user-agent'
1414
- driver.evaluate_script('navigator.userAgent').should == 'capybara-webkit/custom-user-agent'
1419
+ driver.find_xpath('id("user-agent")').first.visible_text.should eq 'capybara-webkit/custom-user-agent'
1420
+ driver.evaluate_script('navigator.userAgent').should eq 'capybara-webkit/custom-user-agent'
1415
1421
  end
1416
1422
 
1417
1423
  it "can set custom header" do
1418
- driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text.should == 'x-capybara-webkit-header'
1424
+ driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text.should eq 'x-capybara-webkit-header'
1419
1425
  end
1420
1426
 
1421
1427
  it "can set Accept header" do
1422
- driver.find_xpath('id("accept")').first.visible_text.should == 'text/html'
1428
+ driver.find_xpath('id("accept")').first.visible_text.should eq 'text/html'
1423
1429
  end
1424
1430
 
1425
1431
  it "can reset all custom header" do
1426
1432
  driver.reset!
1427
1433
  visit('/')
1428
- driver.find_xpath('id("user-agent")').first.visible_text.should_not == 'capybara-webkit/custom-user-agent'
1429
- driver.evaluate_script('navigator.userAgent').should_not == 'capybara-webkit/custom-user-agent'
1434
+ driver.find_xpath('id("user-agent")').first.visible_text.should_not eq 'capybara-webkit/custom-user-agent'
1435
+ driver.evaluate_script('navigator.userAgent').should_not eq 'capybara-webkit/custom-user-agent'
1430
1436
  driver.find_xpath('id("x-capybara-webkit-header")').first.visible_text.should be_empty
1431
- driver.find_xpath('id("accept")').first.visible_text.should_not == 'text/html'
1437
+ driver.find_xpath('id("accept")').first.visible_text.should_not eq 'text/html'
1432
1438
  end
1433
1439
  end
1434
1440
 
@@ -1453,15 +1459,15 @@ describe Capybara::Webkit::Driver do
1453
1459
  end
1454
1460
 
1455
1461
  def make_the_server_come_back
1456
- driver.browser.instance_variable_get(:@connection).unstub!(:gets)
1457
- driver.browser.instance_variable_get(:@connection).unstub!(:puts)
1458
- driver.browser.instance_variable_get(:@connection).unstub!(:print)
1462
+ driver.browser.instance_variable_get(:@connection).unstub(:gets)
1463
+ driver.browser.instance_variable_get(:@connection).unstub(:puts)
1464
+ driver.browser.instance_variable_get(:@connection).unstub(:print)
1459
1465
  end
1460
1466
 
1461
1467
  def make_the_server_go_away
1462
- driver.browser.instance_variable_get(:@connection).stub!(:gets).and_return(nil)
1463
- driver.browser.instance_variable_get(:@connection).stub!(:puts)
1464
- driver.browser.instance_variable_get(:@connection).stub!(:print)
1468
+ driver.browser.instance_variable_get(:@connection).stub(:gets).and_return(nil)
1469
+ driver.browser.instance_variable_get(:@connection).stub(:puts)
1470
+ driver.browser.instance_variable_get(:@connection).stub(:print)
1465
1471
  end
1466
1472
  end
1467
1473
 
@@ -1493,15 +1499,15 @@ describe Capybara::Webkit::Driver do
1493
1499
  end
1494
1500
 
1495
1501
  it "ignores custom fonts" do
1496
- font_family.should == "Arial"
1502
+ font_family.should eq "Arial"
1497
1503
  end
1498
1504
 
1499
1505
  it "ignores custom fonts before an element" do
1500
- font_family.should == "Arial"
1506
+ font_family.should eq "Arial"
1501
1507
  end
1502
1508
 
1503
1509
  it "ignores custom fonts after an element" do
1504
- font_family.should == "Arial"
1510
+ font_family.should eq "Arial"
1505
1511
  end
1506
1512
  end
1507
1513
 
@@ -1526,36 +1532,36 @@ describe Capybara::Webkit::Driver do
1526
1532
  end
1527
1533
 
1528
1534
  it "remembers the cookie on second visit" do
1529
- echoed_cookie.should == ""
1535
+ echoed_cookie.should eq ""
1530
1536
  visit "/"
1531
- echoed_cookie.should == "abc"
1537
+ echoed_cookie.should eq "abc"
1532
1538
  end
1533
1539
 
1534
1540
  it "uses a custom cookie" do
1535
1541
  driver.browser.set_cookie 'cookie=abc; domain=127.0.0.1; path=/'
1536
1542
  visit "/"
1537
- echoed_cookie.should == "abc"
1543
+ echoed_cookie.should eq "abc"
1538
1544
  end
1539
1545
 
1540
1546
  it "clears cookies" do
1541
1547
  driver.browser.clear_cookies
1542
1548
  visit "/"
1543
- echoed_cookie.should == ""
1549
+ echoed_cookie.should eq ""
1544
1550
  end
1545
1551
 
1546
1552
  it "allows enumeration of cookies" do
1547
1553
  cookies = driver.browser.get_cookies
1548
1554
 
1549
- cookies.size.should == 1
1555
+ cookies.size.should eq 1
1550
1556
 
1551
1557
  cookie = Hash[cookies[0].split(/\s*;\s*/).map { |x| x.split("=", 2) }]
1552
- cookie["cookie"].should == "abc"
1558
+ cookie["cookie"].should eq "abc"
1553
1559
  cookie["domain"].should include "127.0.0.1"
1554
- cookie["path"].should == "/"
1560
+ cookie["path"].should eq "/"
1555
1561
  end
1556
1562
 
1557
1563
  it "allows reading access to cookies using a nice syntax" do
1558
- driver.cookies["cookie"].should == "abc"
1564
+ driver.cookies["cookie"].should eq "abc"
1559
1565
  end
1560
1566
  end
1561
1567
 
@@ -1584,7 +1590,7 @@ describe Capybara::Webkit::Driver do
1584
1590
  it "allows removed nodes when reloading is disabled" do
1585
1591
  node = driver.find_xpath("//p[@id='removeMe']").first
1586
1592
  driver.evaluate_script("document.getElementById('parent').innerHTML = 'Magic'")
1587
- node.visible_text.should == 'Hello'
1593
+ node.visible_text.should eq 'Hello'
1588
1594
  end
1589
1595
  end
1590
1596
 
@@ -1645,8 +1651,8 @@ describe Capybara::Webkit::Driver do
1645
1651
 
1646
1652
  cases.each do |xpath, path|
1647
1653
  nodes = driver.find_xpath(xpath)
1648
- nodes.size.should == 1
1649
- nodes[0].path.should == path
1654
+ nodes.size.should eq 1
1655
+ nodes[0].path.should eq path
1650
1656
  end
1651
1657
  end
1652
1658
  end
@@ -1670,7 +1676,7 @@ describe Capybara::Webkit::Driver do
1670
1676
  before { visit("/") }
1671
1677
 
1672
1678
  it "handles overflow hidden" do
1673
- driver.find_xpath("//div[@id='overflow']").first.visible_text.should == "Overflow"
1679
+ driver.find_xpath("//div[@id='overflow']").first.visible_text.should eq "Overflow"
1674
1680
  end
1675
1681
  end
1676
1682
 
@@ -1696,7 +1702,7 @@ describe Capybara::Webkit::Driver do
1696
1702
  it "loads a page without error" do
1697
1703
  10.times do
1698
1704
  visit("/redirect")
1699
- driver.find_xpath("//p").first.visible_text.should == "finished"
1705
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1700
1706
  end
1701
1707
  end
1702
1708
  end
@@ -1821,59 +1827,59 @@ describe Capybara::Webkit::Driver do
1821
1827
  before { visit("/") }
1822
1828
 
1823
1829
  it "returns the charCode for the keypressed" do
1824
- charCode_for("a").should == "97"
1825
- charCode_for("A").should == "65"
1826
- charCode_for("\r").should == "13"
1827
- charCode_for(",").should == "44"
1828
- charCode_for("<").should == "60"
1829
- charCode_for("0").should == "48"
1830
+ charCode_for("a").should eq "97"
1831
+ charCode_for("A").should eq "65"
1832
+ charCode_for("\r").should eq "13"
1833
+ charCode_for(",").should eq "44"
1834
+ charCode_for("<").should eq "60"
1835
+ charCode_for("0").should eq "48"
1830
1836
  end
1831
1837
 
1832
1838
  it "returns the keyCode for the keypressed" do
1833
- keyCode_for("a").should == "97"
1834
- keyCode_for("A").should == "65"
1835
- keyCode_for("\r").should == "13"
1836
- keyCode_for(",").should == "44"
1837
- keyCode_for("<").should == "60"
1838
- keyCode_for("0").should == "48"
1839
+ keyCode_for("a").should eq "97"
1840
+ keyCode_for("A").should eq "65"
1841
+ keyCode_for("\r").should eq "13"
1842
+ keyCode_for(",").should eq "44"
1843
+ keyCode_for("<").should eq "60"
1844
+ keyCode_for("0").should eq "48"
1839
1845
  end
1840
1846
 
1841
1847
  it "returns the which for the keypressed" do
1842
- which_for("a").should == "97"
1843
- which_for("A").should == "65"
1844
- which_for("\r").should == "13"
1845
- which_for(",").should == "44"
1846
- which_for("<").should == "60"
1847
- which_for("0").should == "48"
1848
+ which_for("a").should eq "97"
1849
+ which_for("A").should eq "65"
1850
+ which_for("\r").should eq "13"
1851
+ which_for(",").should eq "44"
1852
+ which_for("<").should eq "60"
1853
+ which_for("0").should eq "48"
1848
1854
  end
1849
1855
  end
1850
1856
 
1851
1857
  shared_examples "a keyupdown app" do
1852
1858
  it "returns a 0 charCode for the event" do
1853
- charCode_for("a").should == "0"
1854
- charCode_for("A").should == "0"
1855
- charCode_for("\b").should == "0"
1856
- charCode_for(",").should == "0"
1857
- charCode_for("<").should == "0"
1858
- charCode_for("0").should == "0"
1859
+ charCode_for("a").should eq "0"
1860
+ charCode_for("A").should eq "0"
1861
+ charCode_for("\b").should eq "0"
1862
+ charCode_for(",").should eq "0"
1863
+ charCode_for("<").should eq "0"
1864
+ charCode_for("0").should eq "0"
1859
1865
  end
1860
1866
 
1861
1867
  it "returns the keyCode for the event" do
1862
- keyCode_for("a").should == "65"
1863
- keyCode_for("A").should == "65"
1864
- keyCode_for("\b").should == "8"
1865
- keyCode_for(",").should == "188"
1866
- keyCode_for("<").should == "188"
1867
- keyCode_for("0").should == "48"
1868
+ keyCode_for("a").should eq "65"
1869
+ keyCode_for("A").should eq "65"
1870
+ keyCode_for("\b").should eq "8"
1871
+ keyCode_for(",").should eq "188"
1872
+ keyCode_for("<").should eq "188"
1873
+ keyCode_for("0").should eq "48"
1868
1874
  end
1869
1875
 
1870
1876
  it "returns the which for the event" do
1871
- which_for("a").should == "65"
1872
- which_for("A").should == "65"
1873
- which_for("\b").should == "8"
1874
- which_for(",").should == "188"
1875
- which_for("<").should == "188"
1876
- which_for("0").should == "48"
1877
+ which_for("a").should eq "65"
1878
+ which_for("A").should eq "65"
1879
+ which_for("\b").should eq "8"
1880
+ which_for(",").should eq "188"
1881
+ which_for("<").should eq "188"
1882
+ which_for("0").should eq "48"
1877
1883
  end
1878
1884
  end
1879
1885
 
@@ -1915,14 +1921,14 @@ describe Capybara::Webkit::Driver do
1915
1921
  it "has the expected text in the new window" do
1916
1922
  visit("/new_window")
1917
1923
  driver.within_window(driver.window_handles.last) do
1918
- driver.find_xpath("//p").first.visible_text.should == "finished"
1924
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1919
1925
  end
1920
1926
  end
1921
1927
 
1922
1928
  it "waits for the new window to load" do
1923
1929
  visit("/new_window?sleep=1")
1924
1930
  driver.within_window(driver.window_handles.last) do
1925
- driver.find_xpath("//p").first.visible_text.should == "finished"
1931
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1926
1932
  end
1927
1933
  end
1928
1934
 
@@ -1930,34 +1936,34 @@ describe Capybara::Webkit::Driver do
1930
1936
  visit("/new_window?sleep=2")
1931
1937
  driver.execute_script("setTimeout(function() { window.location = 'about:blank' }, 1000)")
1932
1938
  driver.within_window(driver.window_handles.last) do
1933
- driver.find_xpath("//p").first.visible_text.should == "finished"
1939
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1934
1940
  end
1935
1941
  end
1936
1942
 
1937
1943
  it "switches back to the original window" do
1938
1944
  visit("/new_window")
1939
1945
  driver.within_window(driver.window_handles.last) { }
1940
- driver.find_xpath("//p").first.visible_text.should == "bananas"
1946
+ driver.find_xpath("//p").first.visible_text.should eq "bananas"
1941
1947
  end
1942
1948
 
1943
1949
  it "supports finding a window by name" do
1944
1950
  visit("/new_window")
1945
1951
  driver.within_window('myWindow') do
1946
- driver.find_xpath("//p").first.visible_text.should == "finished"
1952
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1947
1953
  end
1948
1954
  end
1949
1955
 
1950
1956
  it "supports finding a window by title" do
1951
1957
  visit("/new_window?sleep=5")
1952
1958
  driver.within_window('My New Window') do
1953
- driver.find_xpath("//p").first.visible_text.should == "finished"
1959
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1954
1960
  end
1955
1961
  end
1956
1962
 
1957
1963
  it "supports finding a window by url" do
1958
1964
  visit("/new_window?test")
1959
1965
  driver.within_window(driver_url(driver, "/?test")) do
1960
- driver.find_xpath("//p").first.visible_text.should == "finished"
1966
+ driver.find_xpath("//p").first.visible_text.should eq "finished"
1961
1967
  end
1962
1968
  end
1963
1969
 
@@ -1967,9 +1973,9 @@ describe Capybara::Webkit::Driver do
1967
1973
  end
1968
1974
 
1969
1975
  it "has a number of window handles equal to the number of open windows" do
1970
- driver.window_handles.size.should == 1
1976
+ driver.window_handles.size.should eq 1
1971
1977
  visit("/new_window")
1972
- driver.window_handles.size.should == 2
1978
+ driver.window_handles.size.should eq 2
1973
1979
  end
1974
1980
 
1975
1981
  it "closes new windows on reset" do
@@ -1999,7 +2005,7 @@ describe Capybara::Webkit::Driver do
1999
2005
  end
2000
2006
 
2001
2007
  visit("/new_window", driver)
2002
- driver.cookies['session_id'].should == session_id
2008
+ driver.cookies['session_id'].should eq session_id
2003
2009
  end
2004
2010
 
2005
2011
  context "timers app" do
@@ -2080,14 +2086,14 @@ describe Capybara::Webkit::Driver do
2080
2086
  it "returns 401 for incorrectly authenticated request" do
2081
2087
  driver.browser.authenticate('user1', 'password1')
2082
2088
  driver.browser.timeout = 2
2083
- lambda { visit("/") }.should_not raise_error(Timeout::Error)
2084
- driver.status_code.should == 401
2089
+ lambda { visit("/") }.should_not raise_error
2090
+ driver.status_code.should eq 401
2085
2091
  end
2086
2092
 
2087
2093
  it "returns 401 for unauthenticated request" do
2088
2094
  driver.browser.timeout = 2
2089
- lambda { visit("/") }.should_not raise_error(Timeout::Error)
2090
- driver.status_code.should == 401
2095
+ lambda { visit("/") }.should_not raise_error
2096
+ driver.status_code.should eq 401
2091
2097
  end
2092
2098
  end
2093
2099
 
@@ -2153,14 +2159,14 @@ describe Capybara::Webkit::Driver do
2153
2159
  it "should fetch unblocked urls" do
2154
2160
  visit('/')
2155
2161
  driver.within_frame('frame3') do
2156
- driver.find_xpath("//p").first.visible_text.should == "Inner"
2162
+ driver.find_xpath("//p").first.visible_text.should eq "Inner"
2157
2163
  end
2158
2164
  end
2159
2165
 
2160
2166
  it "returns a status code for blocked urls" do
2161
2167
  visit("/")
2162
2168
  driver.within_frame('frame1') do
2163
- driver.status_code.should == 200
2169
+ driver.status_code.should eq 200
2164
2170
  end
2165
2171
  end
2166
2172
  end
@@ -2192,7 +2198,7 @@ describe Capybara::Webkit::Driver do
2192
2198
 
2193
2199
  it "should not raise a timeout error when zero" do
2194
2200
  driver.browser.timeout = 0
2195
- lambda { visit("/") }.should_not raise_error(Timeout::Error)
2201
+ lambda { visit("/") }.should_not raise_error
2196
2202
  end
2197
2203
 
2198
2204
  it "should raise a timeout error" do
@@ -2202,12 +2208,12 @@ describe Capybara::Webkit::Driver do
2202
2208
 
2203
2209
  it "should not raise an error when the timeout is high enough" do
2204
2210
  driver.browser.timeout = 10
2205
- lambda { visit("/") }.should_not raise_error(Timeout::Error)
2211
+ lambda { visit("/") }.should_not raise_error
2206
2212
  end
2207
2213
 
2208
2214
  it "should set the timeout for each request" do
2209
2215
  driver.browser.timeout = 10
2210
- lambda { visit("/") }.should_not raise_error(Timeout::Error)
2216
+ lambda { visit("/") }.should_not raise_error
2211
2217
  driver.browser.timeout = 1
2212
2218
  lambda { visit("/") }.should raise_error(Timeout::Error)
2213
2219
  end
@@ -2217,13 +2223,13 @@ describe Capybara::Webkit::Driver do
2217
2223
  lambda { visit("/") }.should raise_error(Timeout::Error)
2218
2224
  driver.reset!
2219
2225
  driver.browser.timeout = 10
2220
- lambda { visit("/") }.should_not raise_error(Timeout::Error)
2226
+ lambda { visit("/") }.should_not raise_error
2221
2227
  end
2222
2228
 
2223
2229
  it "should raise a timeout on a slow form" do
2224
2230
  driver.browser.timeout = 3
2225
2231
  visit("/")
2226
- driver.status_code.should == 200
2232
+ driver.status_code.should eq 200
2227
2233
  driver.browser.timeout = 1
2228
2234
  driver.find_xpath("//input").first.click
2229
2235
  lambda { driver.status_code }.should raise_error(Timeout::Error)
@@ -2231,9 +2237,9 @@ describe Capybara::Webkit::Driver do
2231
2237
 
2232
2238
  it "get timeout" do
2233
2239
  driver.browser.timeout = 10
2234
- driver.browser.timeout.should == 10
2240
+ driver.browser.timeout.should eq 10
2235
2241
  driver.browser.timeout = 3
2236
- driver.browser.timeout.should == 3
2242
+ driver.browser.timeout.should eq 3
2237
2243
  end
2238
2244
  end
2239
2245
 
@@ -2299,7 +2305,62 @@ describe Capybara::Webkit::Driver do
2299
2305
  it 'should not hang the server' do
2300
2306
  visit('/')
2301
2307
  driver.find_xpath('//input').first.click
2302
- driver.console_messages.first[:message].should == "hello"
2308
+ driver.console_messages.first[:message].should eq "hello"
2309
+ end
2310
+ end
2311
+
2312
+ context 'path' do
2313
+ let(:driver) do
2314
+ driver_for_html(<<-HTML)
2315
+ <html>
2316
+ <body>
2317
+ <div></div>
2318
+ <div><div><span>hello</span></div></div>
2319
+ </body>
2320
+ </html>
2321
+ HTML
2322
+ end
2323
+
2324
+ it 'returns an xpath for the current node' do
2325
+ visit('/')
2326
+ path = driver.find_xpath('//span').first.path
2327
+ driver.find_xpath(path).first.text.should eq 'hello'
2328
+ end
2329
+ end
2330
+
2331
+ context 'unattached node app' do
2332
+ let(:driver) do
2333
+ driver_for_html(<<-HTML)
2334
+ <html><body>
2335
+ <p id="remove-me">Remove me</p>
2336
+ <a href="#" id="remove-button">remove</a>
2337
+ <script type="text/javascript">
2338
+ document.getElementById('remove-button').addEventListener('click', function() {
2339
+ var p = document.getElementById('remove-me');
2340
+ p.parentNode.removeChild(p);
2341
+ });
2342
+ </script>
2343
+ </body></html>
2344
+ HTML
2345
+ end
2346
+
2347
+ it 'raises NodeNotAttachedError' do
2348
+ visit '/'
2349
+ remove_me = driver.find_css('#remove-me').first
2350
+ expect(remove_me).not_to be_nil
2351
+ driver.find_css('#remove-button').first.click
2352
+ expect { remove_me.text }.to raise_error(Capybara::Webkit::NodeNotAttachedError)
2353
+ end
2354
+
2355
+ it 'raises NodeNotAttachedError if the argument node is unattached' do
2356
+ visit '/'
2357
+ remove_me = driver.find_css('#remove-me').first
2358
+ expect(remove_me).not_to be_nil
2359
+ remove_button = driver.find_css('#remove-button').first
2360
+ expect(remove_button).not_to be_nil
2361
+ remove_button.click
2362
+ expect { remove_button == remove_me }.to raise_error(Capybara::Webkit::NodeNotAttachedError)
2363
+ expect { remove_me == remove_button }.to raise_error(Capybara::Webkit::NodeNotAttachedError)
2303
2364
  end
2304
2365
  end
2305
2366