otwarchive-symphonyarchive/features/support/formatter.rb

52 lines
1.2 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
# Adapted from https://github.com/tpope/fivemat
require "cucumber/formatter/progress"
require_relative "./elapsed_time"
module Ao3Cucumber
class Formatter < ::Cucumber::Formatter::Progress
include ::ElapsedTime
def on_test_case_started(event)
super
feature = gherkin_document.feature
return if same_feature_as_previous_test_case?(feature)
after_feature unless @current_feature.nil?
before_feature(feature)
end
def on_test_run_finished(_event)
after_feature
super
end
private
def before_feature(feature)
# Print the feature's file name.
@io.puts current_feature_uri
@io.flush
@current_feature = feature
@start_time = Time.current
end
def after_feature
print_elapsed_time @io, @start_time
@io.puts
@io.puts
@io.flush
print_elements(@pending_step_matches, :pending, "steps")
print_elements(@failed_results, :failed, "steps")
@pending_step_matches = []
@failed_results = []
end
def same_feature_as_previous_test_case?(feature)
@current_feature && @current_feature.location == feature.location
end
end
end