Method: Primer::Accessibility.axe_rules_to_skip

Defined in:
lib/primer/accessibility.rb

.axe_rules_to_skip(component: nil, scenario_name: nil, flatten: false) ⇒ Object


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/primer/accessibility.rb', line 45

def axe_rules_to_skip(component: nil, scenario_name: nil, flatten: false)
  to_skip = {
    wont_fix: Set.new(AXE_RULES_TO_SKIP.dig(:wont_fix, :global) || []),
    will_fix: Set.new(AXE_RULES_TO_SKIP.dig(:will_fix, :global) || [])
  }

  if component
    to_skip[:wont_fix].merge(AXE_RULES_TO_SKIP.dig(:wont_fix, :per_component, component, :all_scenarios) || [])
    to_skip[:will_fix].merge(AXE_RULES_TO_SKIP.dig(:will_fix, :per_component, component, :all_scenarios) || [])

    if scenario_name
      to_skip[:wont_fix].merge(AXE_RULES_TO_SKIP.dig(:wont_fix, :per_component, component, scenario_name) || [])
      to_skip[:will_fix].merge(AXE_RULES_TO_SKIP.dig(:will_fix, :per_component, component, scenario_name) || [])
    end
  end

  if flatten
    flattened = to_skip.each_with_object(Set.new) do |(_, rule_set), memo|
      memo.merge(rule_set)
    end

    return flattened.to_a
  end

  to_skip.transform_values(&:to_a)
end