33 lines
877 B
Ruby
33 lines
877 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Ci
|
|
module Parsers
|
|
module Accessibility
|
|
class Pa11y
|
|
def parse!(json_data, accessibility_report)
|
|
root = Gitlab::Json.parse(json_data).with_indifferent_access
|
|
|
|
parse_all(root, accessibility_report)
|
|
rescue JSON::ParserError => e
|
|
accessibility_report.set_error_message("JSON parsing failed: #{e}")
|
|
rescue StandardError => e
|
|
accessibility_report.set_error_message("Pa11y parsing failed: #{e}")
|
|
end
|
|
|
|
private
|
|
|
|
def parse_all(root, accessibility_report)
|
|
return unless root.present?
|
|
|
|
root.dig("results").each do |url, value|
|
|
accessibility_report.add_url(url, value)
|
|
end
|
|
|
|
accessibility_report
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|