@@ -105,41 +105,33 @@ def clean_text(text: str) -> str:
105105 '❌' : '[FAIL]' ,
106106 '✗' : '[FAIL]' ,
107107 '⚠️' : '[WARN]' ,
108- '🤖' : '' ,
109- '📝' : '' ,
110- '📋' : '' ,
111- '🧪' : '' ,
112- '🔄' : '' ,
113- '🔧' : '' ,
114- '📄' : '' ,
115- '📊' : '' ,
116- '⚙️' : '' ,
117- '🌐' : '' ,
118- '🎯' : '' ,
119- '🔐' : '' ,
120- '📍' : '' ,
121- '🎲' : '' ,
122- '🔢' : '' ,
108+ '🤖' : '[AI] ' ,
109+ '📝' : '[INPUT] ' ,
110+ '📋' : '[INFO] ' ,
111+ '🧪' : '[TEST] ' ,
112+ '🔄' : '[PROCESS] ' ,
113+ '🔧' : '[TOOL] ' ,
114+ '📄' : '[FILE] ' ,
115+ '📊' : '[DATA] ' ,
116+ '⚙️' : '[CONFIG] ' ,
117+ '🌐' : '[WEB] ' ,
118+ '🎯' : '[TARGET] ' ,
119+ '🔐' : '[AUTH] ' ,
120+ '📍' : '[LOCATION] ' ,
121+ '🎲' : '[GEN] ' ,
122+ '🔢' : '[NUM] ' ,
123123 }
124124 for old , new in replacements .items ():
125125 text = text .replace (old , new )
126126 # Remove any remaining non-ASCII
127127 return '' .join (c if ord (c ) < 128 else '' for c in text )
128128
129- # Return first meaningful line or summary
129+ # Return full output (cleaned)
130130 if output :
131- output = clean_text (output )
132- lines = [l .strip () for l in output .split ('\n ' ) if l .strip ()]
133- # Get the last substantial line (often the result)
134- meaningful = [l for l in lines if not l .startswith (('Running' , 'Loading' , 'Connecting' ))]
135- if meaningful :
136- detail = meaningful [- 1 ][:120 ]
137- else :
138- detail = lines [- 1 ][:120 ] if lines else "Completed"
131+ full_output = clean_text (output .strip ())
132+ return ScenarioResult (name , True , full_output )
139133 else :
140- detail = "Completed successfully"
141-
142- return ScenarioResult (name , True , detail )
134+ return ScenarioResult (name , True , "Completed successfully (no output)" )
143135 else :
144136 return ScenarioResult (name , False , "No main() function found" )
145137 finally :
@@ -158,7 +150,7 @@ def clean_text(text: str) -> str:
158150 return ScenarioResult (name , True , "Completed" )
159151 return ScenarioResult (name , False , f"Exit code { e .code } " )
160152 except Exception as e :
161- error_msg = str (e )[:80 ]
153+ error_msg = str (e )[:200 ]
162154 return ScenarioResult (name , False , error_msg )
163155
164156
@@ -237,7 +229,7 @@ async def run(provider: str, model: str) -> int:
237229 # Print summary
238230 print ()
239231 print ("=" * 80 )
240- print ("SCENARIO RESULTS" )
232+ print ("SCENARIO EXECUTION RESULTS" )
241233 print ("=" * 80 )
242234 print ()
243235
@@ -247,27 +239,21 @@ async def run(provider: str, model: str) -> int:
247239 status = "PASS" if r .ok else "FAIL"
248240 marker = "+" if r .ok else "!"
249241
250- # Print scenario with details
251- print (f"{ marker } { r .name } " )
242+ # Print scenario header
243+ print (f"{ marker } { r .name . upper () } " )
252244 print (f" Status: { status } " )
245+ print ()
246+
253247 if r .details and r .details != r .name :
254- # Wrap long details
255- detail_lines = []
256- current_line = ""
257- words = r .details .split ()
258- for word in words :
259- if len (current_line ) + len (word ) + 1 <= 74 :
260- current_line += (" " if current_line else "" ) + word
261- else :
262- if current_line :
263- detail_lines .append (current_line )
264- current_line = word
265- if current_line :
266- detail_lines .append (current_line )
267-
268- print (f" Result: { detail_lines [0 ]} " )
269- for line in detail_lines [1 :]:
270- print (f" { line } " )
248+ # Print full execution details with indentation
249+ lines = r .details .split ('\n ' )
250+ for line in lines :
251+ # Indent each line for readability
252+ if line .strip ():
253+ print (f" { line } " )
254+ print ()
255+
256+ print ("-" * 80 )
271257 print ()
272258
273259 if r .ok :
0 commit comments