feat: polling titre fenêtre au lieu de wait fixe (post-vérification)

Après chaque clic, poll le titre de la fenêtre active toutes les 300ms
jusqu'à ce qu'il corresponde au titre attendu (max 10s).
100% visuel — pas de wait arbitraire.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-05 08:49:48 +02:00
parent a1c97504ab
commit 20b74286f7

View File

@@ -354,20 +354,32 @@ class ActionExecutorV1:
f"({real_x}, {real_y}) sur ({width}x{height})"
)
# ── Post-vérification : titre fenêtre après le clic ──
# ── Post-vérification : polling du titre fenêtre ──
# On attend que le titre change vers celui attendu (max 10s)
# C'est 100% visuel — pas de wait fixe arbitraire
expected_after = action.get("expected_window_title", "")
if expected_after:
time.sleep(0.5) # Laisser le temps à la fenêtre de changer
from ..window_info_crossplatform import get_active_window_info
post_info = get_active_window_info()
post_title = post_info.get("title", "")
if expected_after.lower() in post_title.lower() or post_title.lower() in expected_after.lower():
print(f" [POST-VÉRIF] OK — '{post_title}'")
logger.info(f"POST-VÉRIF OK : '{post_title}'")
max_wait = 10.0
poll_interval = 0.3
elapsed_wait = 0.0
matched = False
while elapsed_wait < max_wait:
time.sleep(poll_interval)
elapsed_wait += poll_interval
post_info = get_active_window_info()
post_title = post_info.get("title", "")
if (expected_after.lower() in post_title.lower()
or post_title.lower() in expected_after.lower()):
matched = True
break
if matched:
print(f" [POST-VÉRIF] OK en {elapsed_wait:.1f}s — '{post_title}'")
logger.info(f"POST-VÉRIF OK en {elapsed_wait:.1f}s : '{post_title}'")
else:
print(f" [POST-VÉRIF] ATTENTION'{post_title}' attendu '{expected_after}'")
logger.warning(f"POST-VÉRIF : '{post_title}' attendu '{expected_after}'")
result["warning"] = f"post_verif_mismatch:{post_title}"
print(f" [POST-VÉRIF] TIMEOUT {max_wait}s'{post_title}''{expected_after}'")
logger.warning(f"POST-VÉRIF TIMEOUT : '{post_title}''{expected_after}'")
result["warning"] = f"post_verif_timeout:{post_title}"
else:
print(f" [CLICK] Terminé.")