aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/system_testing/driver_adapters.rb2
-rw-r--r--actionpack/lib/system_testing/driver_adapters/capybara_driver.rb28
-rw-r--r--actionpack/lib/system_testing/driver_adapters/rails_selenium_driver.rb40
-rw-r--r--actionpack/lib/system_testing/driver_adapters/web_server.rb45
4 files changed, 75 insertions, 40 deletions
diff --git a/actionpack/lib/system_testing/driver_adapters.rb b/actionpack/lib/system_testing/driver_adapters.rb
index bb65fe9111..d246106717 100644
--- a/actionpack/lib/system_testing/driver_adapters.rb
+++ b/actionpack/lib/system_testing/driver_adapters.rb
@@ -33,7 +33,7 @@ module SystemTesting
# # => SystemTesting::DriverAdapters::RailsSeleniumDriver
def lookup(driver)
if CapybaraDriver::CAPYBARA_DEFAULTS.include?(driver)
- CapybaraDriver.new(driver)
+ CapybaraDriver.new(name: driver)
elsif driver.is_a?(Symbol)
klass = const_get(driver.to_s.camelize)
klass.new
diff --git a/actionpack/lib/system_testing/driver_adapters/capybara_driver.rb b/actionpack/lib/system_testing/driver_adapters/capybara_driver.rb
index e40088970a..487c2b3b88 100644
--- a/actionpack/lib/system_testing/driver_adapters/capybara_driver.rb
+++ b/actionpack/lib/system_testing/driver_adapters/capybara_driver.rb
@@ -1,3 +1,5 @@
+require 'system_testing/driver_adapters/web_server'
+
module SystemTesting
module DriverAdapters
# == CapybaraDriver for System Testing
@@ -41,21 +43,41 @@ module SystemTesting
# server: :webrick
# )
class CapybaraDriver
+ include WebServer
+
CAPYBARA_DEFAULTS = [ :rack_test, :selenium, :webkit, :poltergeist ]
- attr_reader :name
+ attr_reader :name, :server, :port
- def initialize(name)
+ def initialize(name: :rack_test, server: :puma, port: 28100)
@name = name
+ @server = server
+ @port = port
end
def call
- Capybara.default_driver = @name
+ registration
+ setup
end
def supports_screenshots?
@name != :rack_test
end
+
+ private
+ def registration
+ register_server
+ end
+
+ def setup
+ set_server
+ set_port
+ set_driver
+ end
+
+ def set_driver
+ Capybara.default_driver = @name
+ end
end
end
end
diff --git a/actionpack/lib/system_testing/driver_adapters/rails_selenium_driver.rb b/actionpack/lib/system_testing/driver_adapters/rails_selenium_driver.rb
index 723de3de48..0e8fc00871 100644
--- a/actionpack/lib/system_testing/driver_adapters/rails_selenium_driver.rb
+++ b/actionpack/lib/system_testing/driver_adapters/rails_selenium_driver.rb
@@ -1,5 +1,4 @@
-require 'rack/handler/puma'
-require 'selenium-webdriver'
+require 'system_testing/driver_adapters/web_server'
module SystemTesting
module DriverAdapters
@@ -51,6 +50,8 @@ module SystemTesting
# browser: :firefox
# )
class RailsSeleniumDriver
+ include WebServer
+
attr_reader :browser, :server, :port, :screen_size
def initialize(browser: :chrome, server: :puma, port: 28100, screen_size: [ 1400,1400 ]) # :nodoc:
@@ -77,8 +78,8 @@ module SystemTesting
def setup
set_server
- set_driver
set_port
+ set_driver
end
def register_browser_driver
@@ -89,42 +90,9 @@ module SystemTesting
end
end
- def register_server
- Capybara.register_server @server do |app, port, host|
- case @server
- when :puma
- register_puma(app, port)
- when :webrick
- register_webrick(app, port, host)
- else
- register_default(app, port)
- end
- end
- end
-
- def register_default(app, port)
- Capybara.run_default_server(app, port)
- end
-
- def register_puma(app, port)
- ::Rack::Handler::Puma.run(app, Port: port, Threads: '0:4')
- end
-
- def register_webrick(app, port, host)
- ::Rack::Handler::WEBrick.run(app, Host: host, Port: port, AccessLog: [], Logger: WEBrick::Log::new(nil, 0))
- end
-
- def set_server
- Capybara.server = @server
- end
-
def set_driver
Capybara.default_driver = @browser.to_sym
end
-
- def set_port
- Capybara.server_port = @port
- end
end
end
end
diff --git a/actionpack/lib/system_testing/driver_adapters/web_server.rb b/actionpack/lib/system_testing/driver_adapters/web_server.rb
new file mode 100644
index 0000000000..85bcaed8b2
--- /dev/null
+++ b/actionpack/lib/system_testing/driver_adapters/web_server.rb
@@ -0,0 +1,45 @@
+begin
+ require "rack/handler/puma"
+rescue LoadError
+ false
+end
+
+module SystemTesting
+ module DriverAdapters
+ module WebServer # :nodoc:
+ def register_server
+ Capybara.register_server @server do |app, port, host|
+ case @server
+ when :puma
+ register_puma(app, port)
+ when :webrick
+ register_webrick(app, port, host)
+ else
+ register_default(app, port)
+ end
+ end
+ end
+
+ private
+ def register_default(app, port)
+ Capybara.run_default_server(app, port)
+ end
+
+ def register_puma(app, port)
+ Rack::Handler::Puma.run(app, Port: port, Threads: '0:4')
+ end
+
+ def register_webrick(app, port)
+ Rack::Handler::WEBrick.run(app, Port: port)
+ end
+
+ def set_server
+ Capybara.server = @server
+ end
+
+ def set_port
+ Capybara.server_port = @port
+ end
+ end
+ end
+end