Class: AISpec::Core::Reporters::Console

Inherits:
Base
  • Object
show all
Defined in:
lib/aispec/core/reporters/console.rb

Instance Attribute Summary

Attributes inherited from Base

#output_io, #results

Instance Method Summary collapse

Methods inherited from Base

get, #initialize, register

Constructor Details

This class inherits a constructor from AISpec::Core::Reporters::Base

Instance Method Details

#renderObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/aispec/core/reporters/console.rb', line 7

def render
  contract = results[:contract]
  stats = results[:statistics]
  summary = stats.summary

  output_io.puts "Running #{summary[:total_assertions]} contracts for #{contract.name} (#{results[:provider_name]} / #{results[:model]})...\n\n"

  results[:runs].each_with_index do |run, idx|
    output_io.puts "Case ##{idx + 1} (Input: \"#{truncate(run[:input])}\")" if results[:runs].size > 1
    run[:assertion_results].each do |ar|
      status = ar.passed? ? "\e[32mPASS\e[0m" : "\e[31mFAIL\e[0m"
      output_io.puts "  #{status}  #{ar.name}: #{ar.message}"
    end
    output_io.puts ""
  end

  output_io.puts "Overall"
  output_io.puts "  Passed: #{summary[:passed_assertions]}/#{summary[:total_assertions]} (#{summary[:success_rate]}%)"
  output_io.puts "  Confidence Interval: ±#{summary[:confidence_interval]}%"
  output_io.puts "  Mean Latency: #{summary[:mean_latency]}ms"
  output_io.puts "  Total Cost: $#{sprintf('%.4f', summary[:total_cost])}"
  output_io.puts "  Average Judge Score: #{summary[:average_judge_score] || 'N/A'}"
  output_io.puts "  Variance: #{summary[:variance]}"
  output_io.puts "  Recommendation: \e[1m#{summary[:recommendation]}\e[0m\n"
end