Update json_to_md.py
Run Pytest with Allure and Coverage Reports / tests (push) Successful in 52s
Run Pytest with Allure and Coverage Reports / deploy (push) Has been skipped

This commit is contained in:
2025-07-10 17:16:31 +02:00
parent b0335baf41
commit af8ca2f498
+30 -18
View File
@@ -70,38 +70,50 @@ def json_to_md_nested(json_path, md_path, allure_dir=None):
f.write("\n")
from collections import defaultdict
if "collectors" in data:
f.write("## 📚 Collectés\n")
# Grouper par dossier principal (ex: ci-reports/allure → groupe = 'ci-reports/allure')
grouped = defaultdict(list)
for collector in data["collectors"]:
nodeid = collector.get("nodeid", "unknown")
path = nodeid.split("::")[0]
parts = path.split("/")
if len(parts) >= 2:
group_key = f"{parts[0]}/{parts[1]}"
else:
group_key = parts[0]
grouped[group_key].append(collector)
main_folder = path.split("/")[0] if "/" in path else path
grouped[main_folder].append(collector)
# Trier les groupes par le second niveau du chemin (ex: allure, coverage)
sorted_keys = sorted(grouped.keys(), key=lambda x: x.split("/")[1] if "/" in x else x)
for group in sorted_keys:
collectors = grouped[group]
for folder, collectors in grouped.items():
# Outcome global du dossier
has_fail = any(c.get("outcome") != "passed" for c in collectors)
emoji = "" if not has_fail else ""
f.write(f"<details>\n<summary>{emoji} {group}</summary>\n\n")
folder_emoji = "" if not has_fail else ""
f.write(f"<details>\n<summary>{folder_emoji} {folder} ({len(collectors)} tests)</summary>\n\n")
# Résumé des outputs (optionnel : uniquement pour les failed ou all)
outputs = []
for collector in collectors:
outcome = collector.get("outcome", "unknown")
icon = "" if outcome == "passed" else ""
nodeid = collector.get("nodeid", "unknown")
short_node = nodeid.split("[")[0]
f.write(f"<details>\n<summary>{icon} {short_node}</summary>\n\n")
results = collector.get("result", [])
if outcome != "passed" and results:
outputs.append(f"### ❌ {short_node}\n```\n" + "\n".join(
f"{k}: {v}" if isinstance(item, dict) else str(item)
for item in results
for k, v in item.items() if isinstance(item, dict)
) + "\n```")
if outputs:
f.write("### 🧾 Résumé des erreurs ou résultats\n\n")
for out in outputs:
f.write(out + "\n")
# Détail complet de tous les tests (triés)
collectors_sorted = sorted(collectors, key=lambda c: c.get("nodeid", "").split("[")[0])
for collector in collectors_sorted:
outcome = collector.get("outcome", "unknown")
emoji = "" if outcome == "passed" else ""
nodeid = collector.get("nodeid", "unknown")
short_node = nodeid.split("[")[0]
f.write(f"<details>\n<summary>{emoji} {short_node}</summary>\n\n")
f.write(f"- **outcome:** `{outcome}`\n")
results = collector.get("result", [])
if results: