from visual_workflow_builder.backend.services.supervised_popup_guard import ( build_unexpected_popup_pause, ) def test_unexpected_popup_builds_pause_without_auto_resolution(): pause = build_unexpected_popup_pause( {"pattern": "confirm_save_overwrite", "title": "Enregistrer sous"}, expected_state={ "window_title_in": ["Executer"], "process_active": "explorer.exe", }, competence_id="key_win_r_wait_explorer_exe", source_method_id="step_2_wait_state", ) assert pause is not None assert pause["needs_human"] is True assert pause["pause_reason"] == "unexpected_popup" assert pause["auto_resolution"] is False assert pause["write_back_enabled"] is False assert pause["detected_popup"]["title"] == "Enregistrer sous" def test_expected_popup_title_does_not_build_pause(): pause = build_unexpected_popup_pause( {"pattern": "run_dialog", "title": "Executer"}, expected_state={"window_title_in": ["Executer"]}, ) assert pause is None def test_missing_popup_does_not_build_pause(): assert build_unexpected_popup_pause( None, expected_state={"window_title_in": ["Executer"]}, ) is None