Class: HTMLProofer::Check::Scripts
- Inherits:
-
HTMLProofer::Check
- Object
- HTMLProofer::Check
- HTMLProofer::Check::Scripts
- Defined in:
- lib/html_proofer/check/scripts.rb
Instance Attribute Summary
Attributes inherited from HTMLProofer::Check
#external_urls, #failures, #internal_urls, #options
Instance Method Summary collapse
Methods inherited from HTMLProofer::Check
#add_failure, #add_to_external_urls, #add_to_internal_urls, #create_element, #initialize, #short_name, short_name, subchecks
Methods included from Utils
#blank?, #create_nokogiri, #pluralize
Constructor Details
This class inherits a constructor from HTMLProofer::Check
Instance Method Details
#check_sri ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/html_proofer/check/scripts.rb', line 39 def check_sri if blank?(@script.node["integrity"]) && blank?(@script.node["crossorigin"]) add_failure( "SRI and CORS not provided in: #{@script.url.raw_attribute}", element: @script, ) elsif blank?(@script.node["integrity"]) add_failure( "Integrity is missing in: #{@script.url.raw_attribute}", element: @script, ) elsif blank?(@script.node["crossorigin"]) add_failure( "CORS not provided for external resource in: #{@script.url.raw_attribute}", element: @script, ) end end |
#missing_src? ⇒ Boolean
35 36 37 |
# File 'lib/html_proofer/check/scripts.rb', line 35 def missing_src? @script.node["src"].nil? end |
#run ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/html_proofer/check/scripts.rb', line 6 def run @html.css("script").each do |node| @script = create_element(node) next if @script.ignore? next unless @script.content.strip.empty? # does the script exist? if missing_src? add_failure("script is empty and has no src attribute", element: @script) elsif @script.url.protocol_relative? add_failure( "script link #{@script.url} is a protocol-relative URL, use explicit https:// instead", element: @script, ) elsif @script.url.remote? add_to_external_urls(@script.url, @script.line) check_sri if @runner.check_sri? elsif !@script.url.exists? add_failure( "internal script reference #{@script.src} does not exist", element: @script, ) end end external_urls end |