class Capybara::Apparition::Inspector

Constants

BROWSERS

TODO: IS this necessary anymore?

DEFAULT_PORT

Attributes

port[R]

Public Class Methods

browser_binary_exists?(browser) click to toggle source
# File lib/capybara/apparition/inspector.rb, line 38
def self.browser_binary_exists?(browser)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
    exts.each do |ext|
      exe = "#{path}#{File::SEPARATOR}#{browser}#{ext}"
      return exe if File.executable? exe
    end
  end
  nil
end
detect_browser() click to toggle source
# File lib/capybara/apparition/inspector.rb, line 9
def self.detect_browser
  @browser ||= BROWSERS.find { |name| browser_binary_exists?(name) } # rubocop:disable Naming/MemoizedInstanceVariableName
end
new(browser = nil, port = DEFAULT_PORT) click to toggle source
# File lib/capybara/apparition/inspector.rb, line 15
def initialize(browser = nil, port = DEFAULT_PORT)
  @browser = browser.respond_to?(:to_str) ? browser : nil
  @port    = port
end

Public Instance Methods

browser() click to toggle source
# File lib/capybara/apparition/inspector.rb, line 20
def browser
  @browser ||= self.class.detect_browser
end
open(scheme) click to toggle source
# File lib/capybara/apparition/inspector.rb, line 28
def open(scheme)
  if browser
    Process.spawn(browser, url(scheme))
  else
    raise Error, "Could not find a browser executable to open #{url(scheme)}. " \
                 "You can specify one manually using e.g. `:inspector => 'chromium'` " \
                 'as a configuration option for Apparition.'
  end
end
url(scheme) click to toggle source
# File lib/capybara/apparition/inspector.rb, line 24
def url(scheme)
  "#{scheme}://localhost:#{port}/"
end