Class: Ace::Test::EndToEndRunner::Molecules::PipelineReportGenerator
- Inherits:
-
Object
- Object
- Ace::Test::EndToEndRunner::Molecules::PipelineReportGenerator
- Defined in:
- lib/ace/test/end_to_end_runner/molecules/pipeline_report_generator.rb
Overview
Generates TC-first reports from standalone verifier output.
Constant Summary collapse
- FAILURE_CATEGORIES =
%w[ test-spec-error tool-bug runner-error infrastructure-error missing-artifact state-drift behavior-regression discoverability-gap ].freeze
Instance Method Summary collapse
- #generate(scenario:, verifier_output:, report_dir:, provider:, started_at:, completed_at:, metadata: {}) ⇒ Models::TestResult
-
#initialize(report_writer: nil) ⇒ PipelineReportGenerator
constructor
A new instance of PipelineReportGenerator.
-
#write_failure_report(scenario:, report_dir:, provider:, started_at:, completed_at:, error_message:, failure_category: "runner-error", test_cases: [], metadata: {}) ⇒ Models::TestResult
Write deterministic error reports when pipeline execution fails before normal verifier parsing/report generation can complete.
Constructor Details
#initialize(report_writer: nil) ⇒ PipelineReportGenerator
Returns a new instance of PipelineReportGenerator.
24 25 26 |
# File 'lib/ace/test/end_to_end_runner/molecules/pipeline_report_generator.rb', line 24 def initialize(report_writer: nil) @report_writer = report_writer || Molecules::ReportWriter.new end |
Instance Method Details
#generate(scenario:, verifier_output:, report_dir:, provider:, started_at:, completed_at:, metadata: {}) ⇒ Models::TestResult
35 36 37 38 39 40 41 42 43 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/pipeline_report_generator.rb', line 35 def generate(scenario:, verifier_output:, report_dir:, provider:, started_at:, completed_at:, metadata: {}) parsed = parse_verifier_output(verifier_output, scenario) = .merge(parsed[:metadata] || {}) result = Models::TestResult.new( test_id: scenario.test_id, status: parsed[:status], test_cases: parsed[:test_cases], summary: parsed[:summary], error: parsed[:error], observations: parsed[:observations].to_s, started_at: started_at, completed_at: completed_at, metadata: ) FileUtils.mkdir_p(report_dir) @report_writer.write(result, scenario, report_dir: report_dir) write_goal_report( path: File.join(report_dir, "report.md"), scenario: scenario, provider: provider, result: result ) result.with_report_dir(report_dir) end |
#write_failure_report(scenario:, report_dir:, provider:, started_at:, completed_at:, error_message:, failure_category: "runner-error", test_cases: [], metadata: {}) ⇒ Models::TestResult
Write deterministic error reports when pipeline execution fails before normal verifier parsing/report generation can complete.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/ace/test/end_to_end_runner/molecules/pipeline_report_generator.rb', line 72 def write_failure_report(scenario:, report_dir:, provider:, started_at:, completed_at:, error_message:, failure_category: "runner-error", test_cases: [], metadata: {}) result = Models::TestResult.new( test_id: scenario.test_id, status: "error", test_cases: test_cases, summary: "Execution pipeline failed", error: , observations: ["runner_observations"].to_s, started_at: started_at, completed_at: completed_at, metadata: .merge("failure_category" => failure_category) ) FileUtils.mkdir_p(report_dir) @report_writer.write(result, scenario, report_dir: report_dir) write_goal_report( path: File.join(report_dir, "report.md"), scenario: scenario, provider: provider, result: result ) result.with_report_dir(report_dir) end |