class HTMLProofer::Check::Favicon

def immediate_redirect?

allow any instant-redirect meta tag
def immediate_redirect?
  @html.xpath("//meta[@http-equiv='refresh']").attribute("content").value.start_with?("0;")
rescue StandardError
  false
end

def run

def run
  found = false
  @html.css("link").each do |node|
    @favicon = create_element(node)
    next if @favicon.ignore?
    break if (found = @favicon.node["rel"].split.last.eql?("icon"))
  end
  return if immediate_redirect?
  if found
    if @favicon.url.protocol_relative?
      add_failure(
        "favicon link #{@favicon.url} is a protocol-relative URL, use explicit https:// instead",
        element: @favicon,
      )
    elsif @favicon.url.remote?
      add_to_external_urls(@favicon.url, @favicon.line)
    elsif !@favicon.url.exists?
      add_failure(
        "internal favicon #{@favicon.url.raw_attribute} does not exist",
        element: @favicon,
      )
    end
  else
    add_failure("no favicon provided")
  end
end