@@ -32,6 +32,8 @@ def __init__(self, logger_path=DEFAULT_OUTPUT_PATH):
3232 self .items_log = {}
3333 self .pool_id = None
3434 self .links = OrderedDict ()
35+ self ._previous_keyword_failed = False
36+ self ._traceback_message = None
3537
3638 self .reporter = AllureReporter ()
3739 self .listener = AllureListener (self .reporter )
@@ -65,7 +67,11 @@ def end_keyword(self, name, attributes):
6567
6668 def log_message (self , message ):
6769 level = message .get ('level' )
70+ if self ._previous_keyword_failed :
71+ self ._traceback_message = message .get ('message' )
72+ self ._previous_keyword_failed = False
6873 if level == RobotLogLevel .FAIL :
74+ self ._previous_keyword_failed = True
6975 self .reporter .get_item (self .stack [- 1 ]).statusDetails = StatusDetails (message = message .get ('message' ))
7076 self .append_message_to_last_item_log (message , level )
7177
@@ -113,7 +119,7 @@ def stop_current_test(self, name, attributes):
113119 test .labels .append (Label (name = LabelType .HOST , value = host_tag ()))
114120 test .labels .append (Label (name = LabelType .FRAMEWORK , value = 'robotframework' ))
115121 test .labels .append (Label (name = LabelType .LANGUAGE , value = platform_label ()))
116- test .statusDetails = StatusDetails (message = attributes .get ('message' ))
122+ test .statusDetails = StatusDetails (message = attributes .get ('message' ), trace = self . get_traceback_message () )
117123 test .description = attributes .get ('doc' )
118124 last_link = list (self .links .values ())[- 1 ] if self .links else None
119125 if attributes .get (Severity .CRITICAL , 'no' ) == 'yes' :
@@ -189,6 +195,11 @@ def remove_suite_link(self, uuid):
189195 if self .links .get (uuid ):
190196 self .links .pop (uuid )
191197
198+ def get_traceback_message (self ):
199+ if BuiltIn ().get_variable_value ('${LOG LEVEL}' ) in (RobotLogLevel .DEBUG , RobotLogLevel .TRACE ):
200+ return self ._traceback_message
201+ return None
202+
192203 def close (self ):
193204 for plugin in [self .logger , self .listener ]:
194205 name = allure_commons .plugin_manager .get_name (plugin )
0 commit comments