david-capybara 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +87 -0
- data/README.rdoc +389 -0
- data/lib/capybara.rb +52 -0
- data/lib/capybara/cucumber.rb +32 -0
- data/lib/capybara/driver/base.rb +48 -0
- data/lib/capybara/driver/celerity_driver.rb +143 -0
- data/lib/capybara/driver/culerity_driver.rb +25 -0
- data/lib/capybara/driver/rack_test_driver.rb +272 -0
- data/lib/capybara/driver/selenium_driver.rb +156 -0
- data/lib/capybara/dsl.rb +60 -0
- data/lib/capybara/node.rb +60 -0
- data/lib/capybara/rails.rb +17 -0
- data/lib/capybara/save_and_open_page.rb +33 -0
- data/lib/capybara/searchable.rb +54 -0
- data/lib/capybara/server.rb +114 -0
- data/lib/capybara/session.rb +262 -0
- data/lib/capybara/spec/driver.rb +162 -0
- data/lib/capybara/spec/fixtures/capybara.jpg +0 -0
- data/lib/capybara/spec/fixtures/test_file.txt +1 -0
- data/lib/capybara/spec/public/canvas.jpg +0 -0
- data/lib/capybara/spec/public/jquery-ui.js +35 -0
- data/lib/capybara/spec/public/jquery.js +19 -0
- data/lib/capybara/spec/public/test.js +33 -0
- data/lib/capybara/spec/session.rb +81 -0
- data/lib/capybara/spec/session/all_spec.rb +69 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +64 -0
- data/lib/capybara/spec/session/check_spec.rb +67 -0
- data/lib/capybara/spec/session/choose_spec.rb +26 -0
- data/lib/capybara/spec/session/click_button_spec.rb +236 -0
- data/lib/capybara/spec/session/click_link_spec.rb +118 -0
- data/lib/capybara/spec/session/click_spec.rb +24 -0
- data/lib/capybara/spec/session/current_url_spec.rb +8 -0
- data/lib/capybara/spec/session/fill_in_spec.rb +108 -0
- data/lib/capybara/spec/session/find_button_spec.rb +16 -0
- data/lib/capybara/spec/session/find_by_id_spec.rb +16 -0
- data/lib/capybara/spec/session/find_field_spec.rb +22 -0
- data/lib/capybara/spec/session/find_link_spec.rb +17 -0
- data/lib/capybara/spec/session/find_spec.rb +57 -0
- data/lib/capybara/spec/session/has_button_spec.rb +32 -0
- data/lib/capybara/spec/session/has_content_spec.rb +106 -0
- data/lib/capybara/spec/session/has_css_spec.rb +107 -0
- data/lib/capybara/spec/session/has_field_spec.rb +96 -0
- data/lib/capybara/spec/session/has_link_spec.rb +33 -0
- data/lib/capybara/spec/session/has_select_spec.rb +89 -0
- data/lib/capybara/spec/session/has_table_spec.rb +96 -0
- data/lib/capybara/spec/session/has_xpath_spec.rb +123 -0
- data/lib/capybara/spec/session/headers.rb +19 -0
- data/lib/capybara/spec/session/javascript.rb +204 -0
- data/lib/capybara/spec/session/locate_spec.rb +59 -0
- data/lib/capybara/spec/session/select_spec.rb +83 -0
- data/lib/capybara/spec/session/uncheck_spec.rb +21 -0
- data/lib/capybara/spec/session/unselect_spec.rb +54 -0
- data/lib/capybara/spec/session/within_spec.rb +153 -0
- data/lib/capybara/spec/test_app.rb +75 -0
- data/lib/capybara/spec/views/buttons.erb +4 -0
- data/lib/capybara/spec/views/fieldsets.erb +29 -0
- data/lib/capybara/spec/views/form.erb +235 -0
- data/lib/capybara/spec/views/frame_one.erb +8 -0
- data/lib/capybara/spec/views/frame_two.erb +8 -0
- data/lib/capybara/spec/views/postback.erb +13 -0
- data/lib/capybara/spec/views/tables.erb +122 -0
- data/lib/capybara/spec/views/with_html.erb +46 -0
- data/lib/capybara/spec/views/with_js.erb +39 -0
- data/lib/capybara/spec/views/with_scope.erb +36 -0
- data/lib/capybara/spec/views/with_simple_html.erb +1 -0
- data/lib/capybara/spec/views/within_frames.erb +10 -0
- data/lib/capybara/version.rb +3 -0
- data/lib/capybara/wait_until.rb +28 -0
- data/lib/capybara/xpath.rb +180 -0
- data/spec/capybara_spec.rb +18 -0
- data/spec/driver/celerity_driver_spec.rb +16 -0
- data/spec/driver/culerity_driver_spec.rb +12 -0
- data/spec/driver/rack_test_driver_spec.rb +17 -0
- data/spec/driver/remote_culerity_driver_spec.rb +23 -0
- data/spec/driver/remote_selenium_driver_spec.rb +18 -0
- data/spec/driver/selenium_driver_spec.rb +11 -0
- data/spec/dsl_spec.rb +140 -0
- data/spec/save_and_open_page_spec.rb +43 -0
- data/spec/searchable_spec.rb +66 -0
- data/spec/server_spec.rb +53 -0
- data/spec/session/celerity_session_spec.rb +27 -0
- data/spec/session/culerity_session_spec.rb +25 -0
- data/spec/session/rack_test_session_spec.rb +33 -0
- data/spec/session/selenium_session_spec.rb +25 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/wait_until_spec.rb +28 -0
- data/spec/xpath_spec.rb +180 -0
- metadata +260 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
require 'capybara'
|
|
4
|
+
|
|
5
|
+
describe Capybara do
|
|
6
|
+
|
|
7
|
+
describe 'default_wait_time' do
|
|
8
|
+
after do
|
|
9
|
+
Capybara.default_wait_time = 2
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should be changeable" do
|
|
13
|
+
Capybara.default_wait_time = 5
|
|
14
|
+
Capybara.default_wait_time.should == 5
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
if RUBY_PLATFORM =~ /java/
|
|
4
|
+
describe Capybara::Driver::Celerity do
|
|
5
|
+
before(:all) do
|
|
6
|
+
@driver = Capybara::Driver::Celerity.new(TestApp)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it_should_behave_like "driver"
|
|
10
|
+
it_should_behave_like "driver with javascript support"
|
|
11
|
+
it_should_behave_like "driver with header support"
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
else
|
|
15
|
+
puts "#{File.basename(__FILE__)} requires JRuby; skipping.."
|
|
16
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe Capybara::Driver::Culerity do
|
|
4
|
+
before(:all) do
|
|
5
|
+
@driver = Capybara::Driver::Culerity.new(TestApp)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it_should_behave_like "driver"
|
|
9
|
+
it_should_behave_like "driver with javascript support"
|
|
10
|
+
it_should_behave_like "driver with header support"
|
|
11
|
+
|
|
12
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe Capybara::Driver::RackTest do
|
|
4
|
+
before do
|
|
5
|
+
@driver = Capybara::Driver::RackTest.new(TestApp)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should throw an error when no rack app is given" do
|
|
9
|
+
running do
|
|
10
|
+
Capybara::Driver::RackTest.new(nil)
|
|
11
|
+
end.should raise_error(ArgumentError)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it_should_behave_like "driver"
|
|
15
|
+
it_should_behave_like "driver with header support"
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe Capybara::Driver::Culerity do
|
|
4
|
+
before(:all) do
|
|
5
|
+
Capybara.app_host = "http://capybara-testapp.heroku.com"
|
|
6
|
+
Capybara.run_server = false
|
|
7
|
+
@driver = Capybara::Driver::Culerity.new(TestApp)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
after(:all) do
|
|
11
|
+
Capybara.app_host = nil
|
|
12
|
+
Capybara.run_server = true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should navigate to a fully qualified remote page" do
|
|
16
|
+
@driver.visit('http://elabs.se/contact')
|
|
17
|
+
@driver.body.should include('Edithouse eLabs AB')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it_should_behave_like "driver"
|
|
21
|
+
it_should_behave_like "driver with javascript support"
|
|
22
|
+
it_should_behave_like "driver with header support"
|
|
23
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe Capybara::Driver::Selenium do
|
|
4
|
+
before(:all) do
|
|
5
|
+
Capybara.app_host = "http://capybara-testapp.heroku.com"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
after(:all) do
|
|
9
|
+
Capybara.app_host = nil
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
before do
|
|
13
|
+
@driver = Capybara::Driver::Selenium.new(TestApp)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_should_behave_like "driver"
|
|
17
|
+
it_should_behave_like "driver with javascript support"
|
|
18
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe Capybara::Driver::Selenium do
|
|
4
|
+
before do
|
|
5
|
+
@driver = Capybara::Driver::Selenium.new(TestApp)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it_should_behave_like "driver"
|
|
9
|
+
it_should_behave_like "driver with javascript support"
|
|
10
|
+
it_should_behave_like "driver with frame support"
|
|
11
|
+
end
|
data/spec/dsl_spec.rb
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
require 'capybara/dsl'
|
|
4
|
+
|
|
5
|
+
describe Capybara do
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
Capybara.app = TestApp
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
after do
|
|
12
|
+
Capybara.default_driver = nil
|
|
13
|
+
Capybara.use_default_driver
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#default_driver' do
|
|
17
|
+
it "should default to rack_test" do
|
|
18
|
+
Capybara.default_driver.should == :rack_test
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should be changeable" do
|
|
22
|
+
Capybara.default_driver = :culerity
|
|
23
|
+
Capybara.default_driver.should == :culerity
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '#current_driver' do
|
|
28
|
+
it "should default to the default driver" do
|
|
29
|
+
Capybara.current_driver.should == :rack_test
|
|
30
|
+
Capybara.default_driver = :culerity
|
|
31
|
+
Capybara.current_driver.should == :culerity
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should be changeable" do
|
|
35
|
+
Capybara.current_driver = :culerity
|
|
36
|
+
Capybara.current_driver.should == :culerity
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe '#javascript_driver' do
|
|
41
|
+
it "should default to selenium" do
|
|
42
|
+
Capybara.javascript_driver.should == :selenium
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should be changeable" do
|
|
46
|
+
Capybara.javascript_driver = :culerity
|
|
47
|
+
Capybara.javascript_driver.should == :culerity
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe '#use_default_driver' do
|
|
52
|
+
it "should restore the default driver" do
|
|
53
|
+
Capybara.current_driver = :culerity
|
|
54
|
+
Capybara.use_default_driver
|
|
55
|
+
Capybara.current_driver.should == :rack_test
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe '#app' do
|
|
60
|
+
it "should be changeable" do
|
|
61
|
+
Capybara.app = "foobar"
|
|
62
|
+
Capybara.app.should == 'foobar'
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe '#current_session' do
|
|
67
|
+
it "should choose a session object of the current driver type" do
|
|
68
|
+
Capybara.current_session.should be_a(Capybara::Session)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should use #app as the application" do
|
|
72
|
+
Capybara.app = proc {}
|
|
73
|
+
Capybara.current_session.app.should == Capybara.app
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should change with the current driver" do
|
|
77
|
+
Capybara.current_session.mode.should == :rack_test
|
|
78
|
+
Capybara.current_driver = :culerity
|
|
79
|
+
Capybara.current_session.mode.should == :culerity
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should be persistent even across driver changes" do
|
|
83
|
+
object_id = Capybara.current_session.object_id
|
|
84
|
+
Capybara.current_session.object_id.should == object_id
|
|
85
|
+
Capybara.current_driver = :culerity
|
|
86
|
+
Capybara.current_session.mode.should == :culerity
|
|
87
|
+
Capybara.current_session.object_id.should_not == object_id
|
|
88
|
+
|
|
89
|
+
Capybara.current_driver = :rack_test
|
|
90
|
+
Capybara.current_session.object_id.should == object_id
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "should change when changing application" do
|
|
94
|
+
object_id = Capybara.current_session.object_id
|
|
95
|
+
Capybara.current_session.object_id.should == object_id
|
|
96
|
+
Capybara.app = proc {}
|
|
97
|
+
Capybara.current_session.object_id.should_not == object_id
|
|
98
|
+
Capybara.current_session.app.should == Capybara.app
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe '.reset_sessions!' do
|
|
103
|
+
it "should clear any persisted sessions" do
|
|
104
|
+
object_id = Capybara.current_session.object_id
|
|
105
|
+
Capybara.current_session.object_id.should == object_id
|
|
106
|
+
Capybara.reset_sessions!
|
|
107
|
+
Capybara.current_session.object_id.should_not == object_id
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
describe 'the DSL' do
|
|
112
|
+
before do
|
|
113
|
+
@session = Capybara
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it_should_behave_like "session"
|
|
117
|
+
it_should_behave_like "session without javascript support"
|
|
118
|
+
|
|
119
|
+
it "should be possible to include it in another class" do
|
|
120
|
+
klass = Class.new do
|
|
121
|
+
include Capybara
|
|
122
|
+
end
|
|
123
|
+
foo = klass.new
|
|
124
|
+
foo.visit('/with_html')
|
|
125
|
+
foo.click_link('ullamco')
|
|
126
|
+
foo.body.should include('Another World')
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "should provide a 'page' shortcut for more expressive tests" do
|
|
130
|
+
klass = Class.new do
|
|
131
|
+
include Capybara
|
|
132
|
+
end
|
|
133
|
+
foo = klass.new
|
|
134
|
+
foo.page.visit('/with_html')
|
|
135
|
+
foo.page.click_link('ullamco')
|
|
136
|
+
foo.page.body.should include('Another World')
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
require 'capybara/save_and_open_page'
|
|
4
|
+
require 'launchy'
|
|
5
|
+
describe Capybara::SaveAndOpenPage do
|
|
6
|
+
describe "#save_save_and_open_page" do
|
|
7
|
+
before do
|
|
8
|
+
|
|
9
|
+
@time = Time.new.strftime("%Y%m%d%H%M%S")
|
|
10
|
+
@name = "capybara-#{@time}.html"
|
|
11
|
+
|
|
12
|
+
@temp_file = mock("FILE")
|
|
13
|
+
@temp_file.stub!(:write)
|
|
14
|
+
@temp_file.stub!(:close)
|
|
15
|
+
@temp_file.stub!(:path).and_return(@name)
|
|
16
|
+
|
|
17
|
+
File.should_receive(:exist?).and_return true
|
|
18
|
+
File.should_receive(:new).and_return @temp_file
|
|
19
|
+
|
|
20
|
+
@html = <<-HTML
|
|
21
|
+
<html>
|
|
22
|
+
<head>
|
|
23
|
+
</head>
|
|
24
|
+
<body>
|
|
25
|
+
<h1>test</h1>
|
|
26
|
+
</body>
|
|
27
|
+
<html>
|
|
28
|
+
HTML
|
|
29
|
+
|
|
30
|
+
Launchy::Browser.stub(:run)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should create a new temporary file" do
|
|
34
|
+
@temp_file.should_receive(:write).with @html
|
|
35
|
+
Capybara::SaveAndOpenPage.save_and_open_page @html
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should open the file in the browser" do
|
|
39
|
+
Capybara::SaveAndOpenPage.should_receive(:open_in_browser).with(@name)
|
|
40
|
+
Capybara::SaveAndOpenPage.save_and_open_page @html
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
module Capybara
|
|
4
|
+
|
|
5
|
+
describe Searchable do
|
|
6
|
+
class Klass
|
|
7
|
+
include Searchable
|
|
8
|
+
|
|
9
|
+
def all_unfiltered(locator, options = {})
|
|
10
|
+
[]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#all" do
|
|
16
|
+
before do
|
|
17
|
+
@searchable = Klass.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should return unfiltered list without options" do
|
|
21
|
+
node1 = stub(Node)
|
|
22
|
+
node2 = stub(Node)
|
|
23
|
+
@searchable.should_receive(:all_unfiltered).with('//x').and_return([node1, node2])
|
|
24
|
+
@searchable.all('//x').should == [node1, node2]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "with :text filter" do
|
|
28
|
+
before do
|
|
29
|
+
@node1 = stub(Node, :text => 'node one text (with parens)')
|
|
30
|
+
@node2 = stub(Node, :text => 'node two text [-]')
|
|
31
|
+
@searchable.stub(:all_unfiltered).and_return([@node1, @node2])
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should accept regular expression" do
|
|
35
|
+
@searchable.all('//x', :text => /node one/).should == [@node1]
|
|
36
|
+
@searchable.all('//x', :text => /node two/).should == [@node2]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should accept text" do
|
|
40
|
+
@searchable.all('//x', :text => "node one").should == [@node1]
|
|
41
|
+
@searchable.all('//x', :text => "node two").should == [@node2]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should allow Regexp reserved words in text" do
|
|
45
|
+
@searchable.all('//x', :text => "node one text (with parens)").should == [@node1]
|
|
46
|
+
@searchable.all('//x', :text => "node two text [-]").should == [@node2]
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "with :visible filter" do
|
|
51
|
+
before do
|
|
52
|
+
@visible_node = stub(Node, :visible? => true)
|
|
53
|
+
@hidden_node = stub(Node, :visible? => false)
|
|
54
|
+
@searchable.stub(:all_unfiltered).and_return([@visible_node, @hidden_node])
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should filter out hidden nodes" do
|
|
58
|
+
@searchable.all('//x', :visible => true).should == [@visible_node]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end #all
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
data/spec/server_spec.rb
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe Capybara::Server do
|
|
4
|
+
|
|
5
|
+
it "should spool up a rack server" do
|
|
6
|
+
@app = proc { |env| [200, {}, "Hello Server!"]}
|
|
7
|
+
@server = Capybara::Server.new(@app).boot
|
|
8
|
+
|
|
9
|
+
@res = Net::HTTP.start(@server.host, @server.port) { |http| http.get('/') }
|
|
10
|
+
|
|
11
|
+
@res.body.should include('Hello Server')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should do nothing when no server given" do
|
|
15
|
+
running do
|
|
16
|
+
@server = Capybara::Server.new(nil).boot
|
|
17
|
+
end.should_not raise_error
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should find an available port" do
|
|
21
|
+
@app1 = proc { |env| [200, {}, "Hello Server!"]}
|
|
22
|
+
@app2 = proc { |env| [200, {}, "Hello Second Server!"]}
|
|
23
|
+
|
|
24
|
+
@server1 = Capybara::Server.new(@app1).boot
|
|
25
|
+
@server2 = Capybara::Server.new(@app2).boot
|
|
26
|
+
|
|
27
|
+
@res1 = Net::HTTP.start(@server1.host, @server1.port) { |http| http.get('/') }
|
|
28
|
+
@res1.body.should include('Hello Server')
|
|
29
|
+
|
|
30
|
+
@res2 = Net::HTTP.start(@server2.host, @server2.port) { |http| http.get('/') }
|
|
31
|
+
@res2.body.should include('Hello Second Server')
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should use the server if it already running" do
|
|
35
|
+
@app1 = proc { |env| [200, {}, "Hello Server!"]}
|
|
36
|
+
@app2 = proc { |env| [200, {}, "Hello Second Server!"]}
|
|
37
|
+
|
|
38
|
+
@server1a = Capybara::Server.new(@app1).boot
|
|
39
|
+
@server1b = Capybara::Server.new(@app1).boot
|
|
40
|
+
@server2a = Capybara::Server.new(@app2).boot
|
|
41
|
+
@server2b = Capybara::Server.new(@app2).boot
|
|
42
|
+
|
|
43
|
+
@res1 = Net::HTTP.start(@server1b.host, @server1b.port) { |http| http.get('/') }
|
|
44
|
+
@res1.body.should include('Hello Server')
|
|
45
|
+
|
|
46
|
+
@res2 = Net::HTTP.start(@server2b.host, @server2b.port) { |http| http.get('/') }
|
|
47
|
+
@res2.body.should include('Hello Second Server')
|
|
48
|
+
|
|
49
|
+
@server1a.port.should == @server1b.port
|
|
50
|
+
@server2a.port.should == @server2b.port
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
if RUBY_PLATFORM =~ /java/
|
|
4
|
+
describe Capybara::Driver::Celerity do
|
|
5
|
+
before(:all) do
|
|
6
|
+
@session = Capybara::Session.new(:celerity, TestApp)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#driver' do
|
|
10
|
+
it "should be a rack test driver" do
|
|
11
|
+
@session.driver.should be_an_instance_of(Capybara::Driver::Celerity)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '#mode' do
|
|
16
|
+
it "should remember the mode" do
|
|
17
|
+
@session.mode.should == :celerity
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it_should_behave_like "session"
|
|
22
|
+
it_should_behave_like "session with javascript support"
|
|
23
|
+
it_should_behave_like "session with headers support"
|
|
24
|
+
end
|
|
25
|
+
else
|
|
26
|
+
puts "#{File.basename(__FILE__)} requires JRuby; skipping.."
|
|
27
|
+
end
|