diff options
Diffstat (limited to 'lib/gitlab/ci/parsers/accessibility/pa11y.rb')
-rw-r--r-- | lib/gitlab/ci/parsers/accessibility/pa11y.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/gitlab/ci/parsers/accessibility/pa11y.rb b/lib/gitlab/ci/parsers/accessibility/pa11y.rb new file mode 100644 index 00000000000..953b5a91258 --- /dev/null +++ b/lib/gitlab/ci/parsers/accessibility/pa11y.rb @@ -0,0 +1,33 @@ +# 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 |