1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00
teamcapybara--capybara/lib/capybara/config.rb
2019-11-29 09:47:28 -08:00

94 lines
2.5 KiB
Ruby

# frozen_string_literal: true
require 'forwardable'
require 'capybara/session/config'
module Capybara
class Config
extend Forwardable
OPTIONS = %i[app reuse_server threadsafe server default_driver javascript_driver allow_gumbo].freeze
attr_accessor :app
attr_reader :reuse_server, :threadsafe
attr_reader :session_options
attr_writer :default_driver, :javascript_driver
attr_accessor :allow_gumbo
SessionConfig::OPTIONS.each do |method|
def_delegators :session_options, method, "#{method}="
end
def initialize
@session_options = Capybara::SessionConfig.new
@javascript_driver = nil
end
attr_writer :reuse_server
def threadsafe=(bool)
if (bool != threadsafe) && Session.instance_created?
raise 'Threadsafe setting cannot be changed once a session is created'
end
@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 use puma.
#
attr_reader :server
##
#
# Set the server to use.
#
# Capybara.server = :webrick
# Capybara.server = :puma, { Silent: true }
#
# @overload server=(name)
# @param [Symbol] name Name of the server type to use
# @overload server=([name, options])
# @param [Symbol] name Name of the server type to use
# @param [Hash] options Options to pass to the server block
# @see register_server
#
def server=(name)
name, options = *name if name.is_a? Array
@server = if name.respond_to? :call
name
elsif options
proc { |app, port, host| Capybara.servers[name.to_sym].call(app, port, host, **options) }
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
def deprecate(method, alternate_method, once = false)
@deprecation_notified ||= {}
unless once && @deprecation_notified[method]
warn "DEPRECATED: ##{method} is deprecated, please use ##{alternate_method} instead"
end
@deprecation_notified[method] = true
end
end
end