diff --git a/json_to_md.py b/json_to_md.py
index 6e469916..88c0fa05 100644
--- a/json_to_md.py
+++ b/json_to_md.py
@@ -70,35 +70,61 @@ def json_to_md_nested(json_path, md_path, allure_dir=None):
f.write("\n")
if "collectors" in data:
- f.write("## 📚 Collectés (Arborescence)\n")
+ f.write("## 📚 Collectors (Arborescence)\n")
+
+ # 1. Structurer les données
+ collector_tree = defaultdict(lambda: {
+ 'files': defaultdict(list),
+ 'outcome': None,
+ 'result': None
+ })
- # 1. Construire l'arborescence
- tree = defaultdict(lambda: defaultdict(list))
for collector in data["collectors"]:
nodeid = collector.get("nodeid", "unknown")
+ outcome = collector.get("outcome", "unknown")
+ result = collector.get("result", [])
parts = nodeid.split("::")
+
if len(parts) >= 2:
- file_path = parts[0]
- test_name = parts[1]
- dirs = file_path.split("/")
+ path = parts[0]
+ test_name = parts[1].split("[")[0] # Retire les paramètres
+ dirs = path.split("/")
- current_level = tree
- for dir_name in dirs[:-1]: # Parcourir les répertoires
- current_level = current_level[dir_name]
- current_level[dirs[-1]].append(test_name) # Ajouter le fichier et le test
-
- # 2. Fonction récursive pour afficher l'arborescence
- def print_tree(node, indent=0, f=f):
- for key, value in sorted(node.items()):
- if isinstance(value, dict):
- f.write(" " * indent + f"- 📁 {key}\n")
- print_tree(value, indent + 1, f)
- elif isinstance(value, list):
- f.write(" " * indent + f"- 📄 {key}\n")
- for test in sorted(value):
- f.write(" " * (indent + 1) + f" - 🧪 {test}\n")
-
- print_tree(tree)
+ current = collector_tree
+ for dir_name in dirs[:-1]:
+ current = current[dir_name]['files']
+ current['files'][dirs[-1]].append({
+ 'test_name': test_name,
+ 'outcome': outcome,
+ 'result': result
+ })
+
+ # 2. Fonction d'affichage récursive
+ def print_collector_tree(node, level=0, f=f):
+ indent = " " * level
+ for name, data in sorted(node.items()):
+ if name == 'files':
+ for file_name, tests in sorted(data.items()):
+ f.write(f"{indent}- 📄 {file_name}
\n\n")
+ for test in tests:
+ emoji = "✅" if test['outcome'] == "passed" else "❌"
+ f.write(f"{indent} - {emoji} `{test['test_name']}`\n")
+ if test['result']:
+ f.write(f"{indent} - **result:**\n```\n")
+ for item in test['result']:
+ if isinstance(item, dict):
+ for k, v in item.items():
+ f.write(f"{k}: {v}\n")
+ else:
+ f.write(f"{item}\n")
+ f.write("```\n")
+ f.write(f"{indent} \n")
+ elif isinstance(data, dict):
+ f.write(f"{indent}- 📁 {name}
\n\n")
+ print_collector_tree(data, level + 1, f)
+ f.write(f"{indent} \n")
+
+ print_collector_tree(collector_tree)
f.write("\n")
if "tests" in data and "summary" in data: