feat(vwb): add dashboard competence testing and health tools
This commit is contained in:
@@ -6,6 +6,7 @@ Vérifie que les fonctions d'extraction d'apps et de génération
|
||||
d'actions de setup 100% visuelles fonctionnent correctement.
|
||||
"""
|
||||
import pytest
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
@@ -13,6 +14,10 @@ from pathlib import Path
|
||||
ROOT = Path(__file__).parent.parent.parent
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
# api_stream est fail-closed si RPA_API_TOKEN est absent. Ces tests ciblent les
|
||||
# helpers de setup, pas le bootstrap d'authentification.
|
||||
os.environ.setdefault("RPA_API_TOKEN", "test_env_setup_token_0123456789abcdef")
|
||||
|
||||
from agent_v0.server_v1.api_stream import (
|
||||
_extract_required_apps_from_events,
|
||||
_extract_required_apps_from_workflow,
|
||||
@@ -630,7 +635,7 @@ class TestGenerateSetupActions:
|
||||
}
|
||||
actions = _generate_setup_actions(app_info)
|
||||
|
||||
assert len(actions) == 7
|
||||
assert len(actions) == 10
|
||||
|
||||
assert actions[0]["type"] == "key_combo"
|
||||
assert actions[0]["keys"] == ["win", "r"]
|
||||
@@ -652,7 +657,17 @@ class TestGenerateSetupActions:
|
||||
assert actions[5]["duration_ms"] == 2000
|
||||
|
||||
assert actions[6]["type"] == "verify_screen"
|
||||
assert actions[6]["expected_window_title_contains"] == ["Bloc-notes", "notepad"]
|
||||
assert actions[6]["_setup_step"] == "verify_app_ready_before_fresh_document"
|
||||
|
||||
assert actions[7]["type"] == "key_combo"
|
||||
assert actions[7]["keys"] == ["ctrl", "n"]
|
||||
assert actions[7]["_setup_step"] == "ensure_fresh_document"
|
||||
|
||||
assert actions[8]["type"] == "wait"
|
||||
assert actions[8]["duration_ms"] == 400
|
||||
|
||||
assert actions[9]["type"] == "verify_screen"
|
||||
assert actions[9]["expected_window_title_contains"] == ["Bloc-notes", "notepad"]
|
||||
|
||||
# Toutes les actions sont marquées comme phase setup
|
||||
for action in actions:
|
||||
@@ -1126,9 +1141,10 @@ class TestSetupPipeline:
|
||||
|
||||
app_info = _extract_required_apps_from_events(events)
|
||||
assert app_info["primary_app"] == "Notepad.exe"
|
||||
assert app_info["has_neutral_window_title"] is True
|
||||
|
||||
actions = _generate_setup_actions(app_info)
|
||||
assert len(actions) == 7
|
||||
assert len(actions) == 10
|
||||
|
||||
types = [a["type"] for a in actions]
|
||||
steps = [a.get("_setup_step") for a in actions]
|
||||
@@ -1139,11 +1155,14 @@ class TestSetupPipeline:
|
||||
"wait_launch_command",
|
||||
"submit_run_dialog",
|
||||
"wait_app_launch",
|
||||
"verify_app_ready_before_fresh_document",
|
||||
"ensure_fresh_document",
|
||||
"wait_fresh_document",
|
||||
"verify_app_ready",
|
||||
]
|
||||
assert steps == expected_step_order, steps
|
||||
|
||||
assert types.count("key_combo") == 2
|
||||
assert types.count("key_combo") == 3
|
||||
|
||||
idx_type = steps.index("type_launch_command")
|
||||
assert actions[idx_type]["text"] == "notepad"
|
||||
@@ -1165,14 +1184,15 @@ class TestSetupPipeline:
|
||||
|
||||
app_info = _extract_required_apps_from_workflow(workflow)
|
||||
assert app_info["primary_app"] == "Notepad.exe"
|
||||
assert app_info["has_neutral_window_title"] is True
|
||||
|
||||
actions = _generate_setup_actions(app_info)
|
||||
assert len(actions) == 7
|
||||
assert len(actions) == 10
|
||||
|
||||
# Le texte tapé doit être la commande shell pour le setup Win+R.
|
||||
type_action = [a for a in actions if a["type"] == "type"][0]
|
||||
assert type_action["text"] == "notepad"
|
||||
|
||||
# Le setup Notepad s'appuie maintenant sur deux key_combo.
|
||||
# Win+R, Enter, puis Ctrl+N pour garantir un document vierge.
|
||||
key_combos = [a for a in actions if a["type"] == "key_combo"]
|
||||
assert len(key_combos) == 2
|
||||
assert len(key_combos) == 3
|
||||
|
||||
Reference in New Issue
Block a user