require_relative 'chrome_browser'

class BrowserManager

  attr_reader :browsers

  def initialize(params={})
    @browsers = []
    workers = params[:workers] || 5
    workers.to_i.times do |t|
      browser_name = "chrome_#{t}".to_sym
      register_driver(browser_name)
      @browsers << ChromeBrowser.new(browser_name, Capybara::Session.new(browser_name))
    end
  end

  private

  def register_driver(name)
    if ENV['QA_HELPER_RUN_HEADLESS'] == 'false'
      Capybara.register_driver name do |app|
        Capybara::Selenium::Driver.new(app, browser: :chrome)
      end
    else
      Capybara.register_driver name do |app|
        capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
            chromeOptions: { args: %w(headless disable-gpu) }
        )
        Capybara::Selenium::Driver.new app, browser: :chrome, desired_capabilities: capabilities
      end
    end
  end
end
