global

def calculate_slowest_groups

def calculate_slowest_groups
  example_groups = {}
  examples.each do |example|
    location = example.example_group.parent_groups.last.metadata[:location]
    location_hash = example_groups[location] ||= Hash.new(0)
    location_hash[:total_time]  += example.execution_result.run_time
    location_hash[:count]       += 1
    unless location_hash.has_key?(:description)
      location_hash[:description] = example.example_group.top_level_description
    end
  end
  # stop if we've only one example group
  return {} if example_groups.keys.length <= 1
  example_groups.each_value do |hash|
    hash[:average] = hash[:total_time].to_f / hash[:count]
  end
  example_groups.sort_by { |_, hash| -hash[:average] }.first(number_of_examples)
end