class Cucumber::Formatter::MessageBuilder

def on_test_step_finished(event)

def on_test_step_finished(event)
  test_case = @test_case_by_step_id[event.test_step.id]
  result = event
           .result
           .with_filtered_backtrace(Cucumber::Formatter::BacktraceFilter)
  result_message = result.to_message
  if result.failed? || result.pending?
    message_element = result.failed? ? result.exception : result
    result_message = Cucumber::Messages::TestStepResult.new(
      status: result_message.status,
      duration: result_message.duration,
      message: create_error_message(message_element),
      exception: create_exception_object(result, message_element)
    )
  end
  message = Cucumber::Messages::Envelope.new(
    test_step_finished: Cucumber::Messages::TestStepFinished.new(
      test_step_id: event.test_step.id,
      test_case_started_id: test_case_started_id(test_case),
      test_step_result: result_message,
      timestamp: time_to_timestamp(Time.now)
    )
  )
  output_envelope(message)
end