class Selenium::WebDriver::Remote::Capabilities


server is being asked to create.
Specification of the desired and/or actual capabilities of the browser that the

def ==(other)

def ==(other)
  return false unless other.is_a? self.class
  as_json == other.as_json
end

def [](key)

def [](key)
  @capabilities[key]
end

def []=(key, value)

def []=(key, value)
  @capabilities[key] = value
end

def as_json(*)

def as_json(*)
  hash = {}
  @capabilities.each do |key, value|
    case key
    when :platform
      hash['platform'] = value.to_s.upcase
    when :firefox_profile
      hash['firefox_profile'] = value.as_json['zip'] if value
    when :proxy
      hash['proxy'] = value.as_json if value
    when String, :firefox_binary
      hash[key.to_s] = value
    when Symbol
      hash[camel_case(key.to_s)] = value
    else
      raise TypeError, "expected String or Symbol, got #{key.inspect}:#{key.class} / #{value.inspect}"
    end
  end
  hash
end

def camel_case(str)

def camel_case(str)
  str.gsub(/_([a-z])/) { Regexp.last_match(1).upcase }
end

def chrome(opts = {})

def chrome(opts = {})
  new({
    browser_name: 'chrome',
    javascript_enabled: true,
    css_selectors_enabled: true
  }.merge(opts))
end

def edge(opts = {})

def edge(opts = {})
  new({
    browser_name: 'MicrosoftEdge',
    platform: :windows,
    javascript_enabled: true,
    takes_screenshot: true,
    css_selectors_enabled: true
  }.merge(opts))
end

def firefox(opts = {})

def firefox(opts = {})
  new({
    browser_name: 'firefox',
    javascript_enabled: true,
    takes_screenshot: true,
    css_selectors_enabled: true
  }.merge(opts))
end

def htmlunit(opts = {})

def htmlunit(opts = {})
  new({
    browser_name: 'htmlunit'
  }.merge(opts))
end

def htmlunitwithjs(opts = {})

def htmlunitwithjs(opts = {})
  new({
    browser_name: 'htmlunit',
    javascript_enabled: true
  }.merge(opts))
end

def initialize(opts = {})

def initialize(opts = {})
  @capabilities = DEFAULTS.merge(opts)
  self.proxy    = opts.delete(:proxy)
end

def internet_explorer(opts = {})

def internet_explorer(opts = {})
  new({
    browser_name: 'internet explorer',
    platform: :windows,
    takes_screenshot: true,
    css_selectors_enabled: true,
    native_events: true
  }.merge(opts))
end

def json_create(data)

def json_create(data)
  data = data.dup
  caps = new
  caps.browser_name          = data.delete('browserName')
  caps.version               = data.delete('version')
  caps.platform              = data.delete('platform').downcase.to_sym if data.key?('platform')
  caps.javascript_enabled    = data.delete('javascriptEnabled')
  caps.css_selectors_enabled = data.delete('cssSelectorsEnabled')
  caps.takes_screenshot      = data.delete('takesScreenshot')
  caps.native_events         = data.delete('nativeEvents')
  caps.rotatable             = data.delete('rotatable')
  caps.proxy                 = Proxy.json_create(data['proxy']) if data.key?('proxy') && !data['proxy'].empty?
  # any remaining pairs will be added as is, with no conversion
  caps.merge!(data)
  caps
end

def merge!(other)

def merge!(other)
  if other.respond_to?(:capabilities, true) && other.capabilities.is_a?(Hash)
    @capabilities.merge! other.capabilities
  elsif other.is_a? Hash
    @capabilities.merge! other
  else
    raise ArgumentError, 'argument should be a Hash or implement #capabilities'
  end
end

def phantomjs(opts = {})

def phantomjs(opts = {})
  new({
    browser_name: 'phantomjs',
    javascript_enabled: true,
    takes_screenshot: true,
    css_selectors_enabled: true
  }.merge(opts))
end

def proxy=(proxy)

def proxy=(proxy)
  case proxy
  when Hash
    @capabilities[:proxy] = Proxy.new(proxy)
  when Proxy, nil
    @capabilities[:proxy] = proxy
  else
    raise TypeError, "expected Hash or #{Proxy.name}, got #{proxy.inspect}:#{proxy.class}"
  end
end

def safari(opts = {})

def safari(opts = {})
  new({
    browser_name: 'safari',
    platform: :mac,
    javascript_enabled: true,
    takes_screenshot: true,
    css_selectors_enabled: true
  }.merge(opts))
end

def to_json(*)

def to_json(*)
  JSON.generate as_json
end