fix watcher failure detection for host reporter json

Handle dict-shaped reporter events when deriving watcher host failures.

- parse reporter JSON events with type/message/severity fields
- preserve existing support for list-shaped event records
- record the false-PASS failure mode in ATVM automation run learnings
This commit is contained in:
2026-04-29 12:37:48 -04:00
parent 9673d769e2
commit 2e0acb69c1
2 changed files with 18 additions and 4 deletions

View File

@@ -524,11 +524,16 @@ def extract_failure_from_reporter_events(testcase_name: str, testcase_events: ob
if not isinstance(testcase_events, list):
return None
for event in testcase_events:
if not isinstance(event, list) or len(event) < 3:
if isinstance(event, dict):
event_type = str(event.get("type", "")).lower()
message_value = str(event.get("message", ""))
status_value = str(event.get("severity", "")).lower()
elif isinstance(event, list) and len(event) >= 3:
event_type = str(event[0]).lower()
message_value = str(event[1]) if len(event) > 1 else ""
status_value = str(event[2]).lower()
else:
continue
event_type = str(event[0]).lower()
message_value = str(event[1]) if len(event) > 1 else ""
status_value = str(event[2]).lower()
if event_type in {"cy:command", "cy:task"} and status_value in {"failed", "fail", "error"}:
return compact_failure_detail(f"{concise_testcase_name(testcase_name)} - {message_value}")
return None