class Cucumber::Runtime

def run!

def run!
  @configuration.notify :envelope, Cucumber::Messages::Envelope.new(
    meta: MetaMessageBuilder.build_meta_message
  )
  load_step_definitions
  fire_install_plugin_hook
  fire_before_all_hook unless dry_run?
  # TODO: can we remove this state?
  self.visitor = report
  receiver = Test::Runner.new(@configuration.event_bus)
  compile features, receiver, filters, @configuration.event_bus
  @configuration.notify :test_run_finished, !failure?
  fire_after_all_hook unless dry_run?
end