capybara-webkit 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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