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:
Lenny Marks 2009-12-18 11:40:51 -05:00
parent 4fae6a4a86
commit 481e912c5b
4 changed files with 43 additions and 59 deletions

View File

@ -9,7 +9,7 @@ module Capybara
class NotSupportedByDriverError < CapybaraError; end
class << self
attr_accessor :debug, :asset_root
attr_accessor :debug, :asset_root, :app_host
attr_writer :default_selector
def default_selector
@ -31,6 +31,7 @@ module Capybara
autoload :Base, 'capybara/driver/base'
autoload :RackTest, 'capybara/driver/rack_test_driver'
autoload :Celerity, 'capybara/driver/celerity_driver'
autoload :Culerity, 'capybara/driver/culerity_driver'
autoload :Selenium, 'capybara/driver/selenium_driver'
end
end

View File

@ -41,40 +41,14 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
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
top_opts = [:driver, :host, :port, :rack, :culerity]
if options[:rack] == false
@host = options[:host] || 'localhost'
@port = options[:port] || '3001'
Capybara.log("celerity driver using #{host}:#{port}")
else
unless Capybara.app_host
Capybara.log("using app host #{Capybara.app_host}")
@rack_server = Capybara::Server.new(@app)
Capybara.log("celerity driver using rack")
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
def visit(path)
@ -99,35 +73,20 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
browser.execute_script "#{script}"
end
private
def url(path)
if rack_server
rack_server.url(path)
else
"http://#{host}:#{port}#{path}"
end
Capybara.app_host || rack_server.url(path)
end
def browser
unless @_browser
if culerity
Capybara.log "celerity driver via Culerity"
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
require 'celerity'
@_browser = ::Celerity::Browser.new(:browser => :firefox, :log_level => :off)
end
@_browser
end
end

View File

@ -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

View File

@ -4,14 +4,7 @@ module Capybara
attr_reader :app, :mode, :mode_options
def initialize(mode, app)
if mode.respond_to?(:has_key?)
@mode = mode[:driver]
@mode_options = mode
else
@mode = mode
@mode_options = {}
end
@mode = mode
@app = app
end
@ -22,8 +15,10 @@ module Capybara
Capybara::Driver::RackTest.new(app)
when :selenium
Capybara::Driver::Selenium.new(app)
when :culerity, :celerity
Capybara::Driver::Celerity.new(app, mode_options)
when :celerity
Capybara::Driver::Celerity.new(app)
when :culerity
Capybara::Driver::Culerity.new(app)
else
raise Capybara::DriverNotFoundError, "no driver called #{mode} was found"
end