teamcapybara--capybara/lib/capybara/config.rb

121 lines
3.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require 'forwardable'
require 'capybara/session/config'
module Capybara
class Config
extend Forwardable
OPTIONS = [:app, :reuse_server, :threadsafe, :default_wait_time, :server, :default_driver, :javascript_driver]
attr_accessor :app
attr_reader :reuse_server, :threadsafe
attr_reader :session_options
attr_writer :default_driver, :javascript_driver
SessionConfig::OPTIONS.each do |method|
def_delegators :session_options, method, "#{method}="
end
def initialize
@session_options = Capybara::SessionConfig.new
end
def reuse_server=(bool)
@reuse_server = bool
end
def threadsafe=(bool)
warn "Capybara.threadsafe == true is a BETA feature and may change in future minor versions" if bool
raise "Threadsafe setting cannot be changed once a session is created" if (bool != threadsafe) && Session.instance_created?
@threadsafe = bool
end
##
#
# Return the proc that Capybara will call to run the Rack application.
# The block returned receives a rack app, port, and host/ip and should run a Rack handler
# By default, Capybara will try to run webrick.
#
def server(&block)
if block_given?
warn "DEPRECATED: Passing a block to Capybara::server is deprecated, please use Capybara::register_server instead"
@server = block
else
@server
end
end
##
#
# Set the server to use.
#
# Capybara.server = :webrick
#
# @param [Symbol] name Name of the server type to use
# @see register_server
#
def server=(name)
@server = if name.respond_to? :call
name
else
Capybara.servers[name.to_sym]
end
end
##
#
# @return [Symbol] The name of the driver to use by default
#
def default_driver
@default_driver || :rack_test
end
##
#
# @return [Symbol] The name of the driver used when JavaScript is needed
#
def javascript_driver
@javascript_driver || :selenium
end
# @deprecated Use default_max_wait_time instead
def default_wait_time
deprecate('default_wait_time', 'default_max_wait_time', true)
default_max_wait_time
end
# @deprecated Use default_max_wait_time= instead
def default_wait_time=(t)
deprecate('default_wait_time=', 'default_max_wait_time=')
self.default_max_wait_time = t
end
def deprecate(method, alternate_method, once=false)
@deprecation_notified ||= {}
warn "DEPRECATED: ##{method} is deprecated, please use ##{alternate_method} instead" unless once and @deprecation_notified[method]
@deprecation_notified[method]=true
end
end
class ConfigureDeprecator
def initialize(config)
@config = config
end
def method_missing(m, *args, &block)
if @config.respond_to?(m)
@config.public_send(m, *args, &block)
elsif Capybara.respond_to?(m)
warn "Calling #{m} from Capybara.configure is deprecated - please call it on Capybara directly ( Capybara.#{m}(...) )"
Capybara.public_send(m, *args, &block)
else
super
end
end
def respond_to_missing?(m, include_private = false)
@config.respond_to_missing?(m, include_private) || Capybara.respond_to_missing?(m, include_private)
end
end
end