Brought back Culerity driver now as subclass of Celerity. Hash style driver options replaced. Capybara.app_host for connecting to running app.
This commit is contained in:
parent
4fae6a4a86
commit
481e912c5b
|
@ -9,7 +9,7 @@ module Capybara
|
||||||
class NotSupportedByDriverError < CapybaraError; end
|
class NotSupportedByDriverError < CapybaraError; end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
attr_accessor :debug, :asset_root
|
attr_accessor :debug, :asset_root, :app_host
|
||||||
attr_writer :default_selector
|
attr_writer :default_selector
|
||||||
|
|
||||||
def default_selector
|
def default_selector
|
||||||
|
@ -31,6 +31,7 @@ module Capybara
|
||||||
autoload :Base, 'capybara/driver/base'
|
autoload :Base, 'capybara/driver/base'
|
||||||
autoload :RackTest, 'capybara/driver/rack_test_driver'
|
autoload :RackTest, 'capybara/driver/rack_test_driver'
|
||||||
autoload :Celerity, 'capybara/driver/celerity_driver'
|
autoload :Celerity, 'capybara/driver/celerity_driver'
|
||||||
|
autoload :Culerity, 'capybara/driver/culerity_driver'
|
||||||
autoload :Selenium, 'capybara/driver/selenium_driver'
|
autoload :Selenium, 'capybara/driver/selenium_driver'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -41,40 +41,14 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :app, :rack_server, :host, :port, :celerity_options, :culerity
|
attr_reader :app, :rack_server
|
||||||
|
|
||||||
def self.server
|
|
||||||
unless @_server
|
|
||||||
@_server = ::Culerity::run_server
|
|
||||||
at_exit do
|
|
||||||
@_server.close
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@_server
|
|
||||||
end
|
|
||||||
|
|
||||||
def initialize(app, options = {})
|
|
||||||
|
|
||||||
|
def initialize(app)
|
||||||
@app = app
|
@app = app
|
||||||
|
unless Capybara.app_host
|
||||||
top_opts = [:driver, :host, :port, :rack, :culerity]
|
Capybara.log("using app host #{Capybara.app_host}")
|
||||||
|
|
||||||
if options[:rack] == false
|
|
||||||
@host = options[:host] || 'localhost'
|
|
||||||
@port = options[:port] || '3001'
|
|
||||||
Capybara.log("celerity driver using #{host}:#{port}")
|
|
||||||
else
|
|
||||||
@rack_server = Capybara::Server.new(@app)
|
@rack_server = Capybara::Server.new(@app)
|
||||||
Capybara.log("celerity driver using rack")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@celerity_options = {
|
|
||||||
:browser => :firefox,
|
|
||||||
:log_level => :off
|
|
||||||
}.merge(options.reject {|k,v| top_opts.include?(k) })
|
|
||||||
|
|
||||||
@culerity = options[:culerity] || !RUBY_PLATFORM.match(/java/)
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def visit(path)
|
def visit(path)
|
||||||
|
@ -100,34 +74,19 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def url(path)
|
def url(path)
|
||||||
if rack_server
|
Capybara.app_host || rack_server.url(path)
|
||||||
rack_server.url(path)
|
|
||||||
else
|
|
||||||
"http://#{host}:#{port}#{path}"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def browser
|
def browser
|
||||||
unless @_browser
|
unless @_browser
|
||||||
if culerity
|
require 'celerity'
|
||||||
Capybara.log "celerity driver via Culerity"
|
@_browser = ::Celerity::Browser.new(:browser => :firefox, :log_level => :off)
|
||||||
require 'culerity'
|
|
||||||
@_browser = ::Culerity::RemoteBrowserProxy.new self.class.server, celerity_options
|
|
||||||
at_exit do
|
|
||||||
@_browser.exit
|
|
||||||
end
|
|
||||||
else
|
|
||||||
require 'celerity'
|
|
||||||
@_browser = ::Celerity::Browser.new(celerity_options)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@_browser
|
@_browser
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
require 'culerity'
|
||||||
|
|
||||||
|
class Capybara::Driver::Culerity < Capybara::Driver::Celerity
|
||||||
|
|
||||||
|
|
||||||
|
def self.server
|
||||||
|
unless @_server
|
||||||
|
@_server = ::Culerity::run_server
|
||||||
|
at_exit do
|
||||||
|
@_server.close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@_server
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
|
||||||
|
def browser
|
||||||
|
unless @_browser
|
||||||
|
@_browser = ::Culerity::RemoteBrowserProxy.new self.class.server, {:browser => :firefox, :log_level => :off}
|
||||||
|
at_exit do
|
||||||
|
@_browser.exit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@_browser
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -4,14 +4,7 @@ module Capybara
|
||||||
attr_reader :app, :mode, :mode_options
|
attr_reader :app, :mode, :mode_options
|
||||||
|
|
||||||
def initialize(mode, app)
|
def initialize(mode, app)
|
||||||
if mode.respond_to?(:has_key?)
|
@mode = mode
|
||||||
@mode = mode[:driver]
|
|
||||||
@mode_options = mode
|
|
||||||
else
|
|
||||||
@mode = mode
|
|
||||||
@mode_options = {}
|
|
||||||
end
|
|
||||||
|
|
||||||
@app = app
|
@app = app
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -22,8 +15,10 @@ module Capybara
|
||||||
Capybara::Driver::RackTest.new(app)
|
Capybara::Driver::RackTest.new(app)
|
||||||
when :selenium
|
when :selenium
|
||||||
Capybara::Driver::Selenium.new(app)
|
Capybara::Driver::Selenium.new(app)
|
||||||
when :culerity, :celerity
|
when :celerity
|
||||||
Capybara::Driver::Celerity.new(app, mode_options)
|
Capybara::Driver::Celerity.new(app)
|
||||||
|
when :culerity
|
||||||
|
Capybara::Driver::Culerity.new(app)
|
||||||
else
|
else
|
||||||
raise Capybara::DriverNotFoundError, "no driver called #{mode} was found"
|
raise Capybara::DriverNotFoundError, "no driver called #{mode} was found"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue