module CypressRails
  class ConfiguresTestServer
    def call(port: ENV["RAILS_CYPRESS_PORT"])
      require "capybara"
      require "selenium-webdriver"
      Capybara.server_port = port || find_available_port
      Capybara.always_include_port = true
      Capybara.server = :puma, {Silent: false}
      Capybara.current_session

      true
    end

    private

    def find_available_port
      server = TCPServer.new(Capybara.server_host, 0)
      server.addr[1]
    ensure
      server&.close
    end
  end
end