Class: Ace::Test::EndToEndRunner::Molecules::SuiteSimpleDisplayManager

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb

Overview

Line-by-line display manager for suite-level E2E test output (default mode). Extracted from SuiteOrchestrator to match the display manager pattern used by TestOrchestrator (SimpleDisplayManager / ProgressDisplayManager).

Instance Method Summary collapse

Constructor Details

#initialize(test_queue, output:, use_color:, pkg_width:, name_width:) ⇒ SuiteSimpleDisplayManager

Returns a new instance of SuiteSimpleDisplayManager.

Parameters:

  • test_queue (Array<Hash>)

    flat list of test_file: items

  • output (IO)

    output stream

  • use_color (Boolean)

    enable ANSI color

  • pkg_width (Integer)

    column width for package names

  • name_width (Integer)

    column width for test names



16
17
18
19
20
21
22
# File 'lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb', line 16

def initialize(test_queue, output:, use_color:, pkg_width:, name_width:)
  @test_queue = test_queue
  @output = output
  @use_color = use_color
  @pkg_width = pkg_width
  @name_width = name_width
end

Instance Method Details

#refreshObject

No-op — simple mode doesn’t need refresh



63
64
# File 'lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb', line 63

def refresh
end

#show_header(total_tests, pkg_count) ⇒ Object

Print suite header with separator, title, separator

Parameters:

  • total_tests (Integer)
  • pkg_count (Integer)


27
28
29
30
31
32
33
# File 'lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb', line 27

def show_header(total_tests, pkg_count)
  dh = Atoms::DisplayHelpers
  @output.puts dh.double_separator
  @output.puts "  ACE E2E Test Suite - Running #{total_tests} tests across #{pkg_count} packages"
  @output.puts dh.double_separator
  @output.puts
end

#show_summary(results, duration) ⇒ Object

Print structured summary block

Parameters:

  • results (Hash)

    with :total, :passed, :failed, :errors, :packages

  • duration (Numeric)

    total elapsed seconds



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb', line 69

def show_summary(results, duration)
  failed_details = collect_failed_details(results)

  lines = Atoms::DisplayHelpers.format_suite_summary(
    {
      total: results[:total],
      passed: results[:passed],
      failed: results[:failed],
      errors: results[:errors],
      total_cases: results[:total_cases] || 0,
      passed_cases: results[:passed_cases] || 0,
      duration: duration,
      failed_details: failed_details
    },
    use_color: @use_color
  )

  lines.each { |line| @output.puts line }
end

#test_completed(result, package, test_file, elapsed) ⇒ Object

Print a columnar result line

Parameters:

  • result (Hash)

    with :status, :passed_cases, :total_cases

  • package (String)
  • test_file (String)
  • elapsed (Numeric)

    seconds



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb', line 44

def test_completed(result, package, test_file, elapsed)
  dh = Atoms::DisplayHelpers
  success = result[:status] == "pass"
  icon = dh.color(dh.status_icon(success), success ? :green : :red, use_color: @use_color)
  test_name = extract_test_name(test_file)

  cases_str = ""
  if result[:total_cases] && result[:total_cases] > 0
    cases_str = "#{result[:passed_cases]}/#{result[:total_cases]} cases"
  end

  line = dh.format_suite_test_line(
    icon, elapsed, package, test_name, cases_str,
    pkg_width: @pkg_width, name_width: @name_width
  )
  @output.puts line
end

#test_started(_package, _test_file) ⇒ Object

No-op — simple mode doesn’t show start events



36
37
# File 'lib/ace/test/end_to_end_runner/molecules/suite_simple_display_manager.rb', line 36

def test_started(_package, _test_file)
end