Files
kefu/deploy/review-assistant-20260917/source-ui-tests.log
T
2026-09-21 10:34:06 +08:00

209 lines
29 KiB
Plaintext

test_account_mismatch_never_reads_the_old_accounts_database (test_review_assistant_ui.ReminderContactTest.test_account_mismatch_never_reads_the_old_accounts_database) ... ok
test_account_switch_during_validation_rejects_selection (test_review_assistant_ui.ReminderContactTest.test_account_switch_during_validation_rejects_selection) ... ok
test_duplicate_names_remain_separate_and_identifiable (test_review_assistant_ui.ReminderContactTest.test_duplicate_names_remain_separate_and_identifiable) ... ok
test_group_internal_or_unknown_recipient_cannot_be_saved (test_review_assistant_ui.ReminderContactTest.test_group_internal_or_unknown_recipient_cannot_be_saved) ... ok
test_lists_exact_private_wechat_contacts_without_message_content (test_review_assistant_ui.ReminderContactTest.test_lists_exact_private_wechat_contacts_without_message_content) ... ok
test_missing_account_does_not_fall_back_to_another_account (test_review_assistant_ui.ReminderContactTest.test_missing_account_does_not_fall_back_to_another_account) ... ok
test_preview_is_static_and_does_not_load_real_customer_data (test_review_assistant_ui.ReminderContactTest.test_preview_is_static_and_does_not_load_real_customer_data) ... ok
test_queries_are_read_only_and_do_not_initialize_or_modify_databases (test_review_assistant_ui.ReminderContactTest.test_queries_are_read_only_and_do_not_initialize_or_modify_databases) ... ok
test_recipient_validation_uses_id_and_rechecks_identity (test_review_assistant_ui.ReminderContactTest.test_recipient_validation_uses_id_and_rechecks_identity) ... ok
test_search_and_pagination_are_independent_of_message_preview (test_review_assistant_ui.ReminderContactTest.test_search_and_pagination_are_independent_of_message_preview) ... ok
test_active_identity_only_uses_native_readonly_scope (test_review_assistant_ui.ReminderIdentityTest.test_active_identity_only_uses_native_readonly_scope) ... ok
test_native_unavailable_is_clear_and_does_not_use_another_account (test_review_assistant_ui.ReminderIdentityTest.test_native_unavailable_is_clear_and_does_not_use_another_account) ... ok
test_same_name_rows_keep_exact_identity_and_validate_selected_one (test_review_assistant_ui.ReminderPickerTest.test_same_name_rows_keep_exact_identity_and_validate_selected_one) ... ok
test_stale_list_and_late_validation_after_cancel_are_ignored (test_review_assistant_ui.ReminderPickerTest.test_stale_list_and_late_validation_after_cancel_are_ignored) ... ok
test_wrong_account_cannot_load_or_accept_and_retry_stays_available (test_review_assistant_ui.ReminderPickerTest.test_wrong_account_cannot_load_or_accept_and_retry_stays_available) ... ok
test_only_explicit_refresh_reads_notification_summary (test_review_assistant_ui.ReminderRefreshTest.test_only_explicit_refresh_reads_notification_summary) ... ok
test_default_disabled_and_cannot_enable_without_recipient (test_review_assistant_ui.ReminderSettingsTest.test_default_disabled_and_cannot_enable_without_recipient) ... ok
test_enable_revalidates_target_and_does_not_change_other_accounts (test_review_assistant_ui.ReminderSettingsTest.test_enable_revalidates_target_and_does_not_change_other_accounts) ... ok
test_expected_account_mismatch_or_validation_failure_never_saves (test_review_assistant_ui.ReminderSettingsTest.test_expected_account_mismatch_or_validation_failure_never_saves) ... ok
test_explicit_disable_only_needs_current_account_not_deleted_contact (test_review_assistant_ui.ReminderSettingsTest.test_explicit_disable_only_needs_current_account_not_deleted_contact) ... ok
test_persist_failure_does_not_claim_config_is_enabled (test_review_assistant_ui.ReminderSettingsTest.test_persist_failure_does_not_claim_config_is_enabled) ... ok
test_replacing_an_enabled_contact_requires_explicit_reenable (test_review_assistant_ui.ReminderSettingsTest.test_replacing_an_enabled_contact_requires_explicit_reenable) ... ok
test_runtime_save_preserves_other_account_mapping_and_rolls_back_failure (test_review_assistant_ui.ReminderSettingsTest.test_runtime_save_preserves_other_account_mapping_and_rolls_back_failure) ... ok
test_selection_persists_exact_verified_recipient_and_stays_off (test_review_assistant_ui.ReminderSettingsTest.test_selection_persists_exact_verified_recipient_and_stays_off) ... ok
test_snapshot_does_not_probe_scan_or_query_databases (test_review_assistant_ui.ReminderSettingsTest.test_snapshot_does_not_probe_scan_or_query_databases) ... ok
test_stale_async_reply_and_shutdown_do_not_save (test_review_assistant_ui.ReminderSettingsTest.test_stale_async_reply_and_shutdown_do_not_save) ... ok
test_setting_panel_disables_until_verified_and_uses_exact_account_for_toggle (test_review_assistant_ui.ReminderWebTest.test_setting_panel_disables_until_verified_and_uses_exact_account_for_toggle) ... ok
test_a_blank_name_leaves_the_current_one_alone (test_qt_console_bridge.ConsoleBridgeTest.test_a_blank_name_leaves_the_current_one_alone)
空名字是"没填",不是"改成空"——改成空会让提示词里出现一个没有名字的客服。 ... ok
test_a_failed_connection_says_why_in_the_log (test_qt_console_bridge.ConsoleBridgeTest.test_a_failed_connection_says_why_in_the_log)
失败必须留下原因。只说"连接失败"的话,人不知道是地址错了还是后台没起。 ... ok
test_an_over_long_agent_name_is_truncated (test_qt_console_bridge.ConsoleBridgeTest.test_an_over_long_agent_name_is_truncated)
昵称会拼进系统提示词,不能让它无限长。 ... ok
test_approve_task_reaches_the_host_with_the_exact_key (test_qt_console_bridge.ConsoleBridgeTest.test_approve_task_reaches_the_host_with_the_exact_key)
「通过并发送」必须真的连到后端。 ... ok
test_approving_a_task_that_left_the_queue_sends_nothing (test_qt_console_bridge.ConsoleBridgeTest.test_approving_a_task_that_left_the_queue_sends_nothing)
任务已经不在队列里就别再放行——否则可能把草稿发到别的会话去。 ... ok
test_archive_date_button_uses_real_business_filter (test_qt_console_bridge.ConsoleBridgeTest.test_archive_date_button_uses_real_business_filter) ... ok
test_archive_selection_only_commits_an_existing_visible_key (test_qt_console_bridge.ConsoleBridgeTest.test_archive_selection_only_commits_an_existing_visible_key) ... ok
test_auto_send_header_selects_auto_mode_before_starting (test_qt_console_bridge.ConsoleBridgeTest.test_auto_send_header_selects_auto_mode_before_starting) ... ok
test_connect_backend_forwards_the_url_to_the_host (test_qt_console_bridge.ConsoleBridgeTest.test_connect_backend_forwards_the_url_to_the_host)
控制台上填的后台地址要真的到得了后端。 ... ok
test_console_html_and_javascript_assets_are_packaged_together (test_qt_console_bridge.ConsoleBridgeTest.test_console_html_and_javascript_assets_are_packaged_together) ... ok
test_console_push_timer_coalesces_against_earliest_deadline (test_qt_console_bridge.ConsoleBridgeTest.test_console_push_timer_coalesces_against_earliest_deadline) ... ok
test_editable_fields_look_editable (test_qt_console_bridge.ConsoleBridgeTest.test_editable_fields_look_editable)
能改的地方要看得出来能改。 ... ok
test_every_html_navigation_schedules_authoritative_state (test_qt_console_bridge.ConsoleBridgeTest.test_every_html_navigation_schedules_authoritative_state) ... ok
test_every_save_button_gives_the_user_feedback (test_qt_console_bridge.ConsoleBridgeTest.test_every_save_button_gives_the_user_feedback)
点了保存必须看得见反馈。 ... ok
test_handoff_only_reports_tasks_the_backend_accepted (test_qt_console_bridge.ConsoleBridgeTest.test_handoff_only_reports_tasks_the_backend_accepted) ... ok
test_no_layout_container_keeps_a_hard_coded_height (test_qt_console_bridge.ConsoleBridgeTest.test_no_layout_container_keeps_a_hard_coded_height)
去掉滚动条之后,"装不下"不再表现为滚动条,而是内容画到别的面板身上。 ... ok
test_no_layout_scrolls_anywhere (test_qt_console_bridge.ConsoleBridgeTest.test_no_layout_scrolls_anywhere)
整套界面不许出现滚动条——内容多了就往下铺,由整体缩放来兜。 ... ok
test_number_fields_tell_you_the_allowed_range (test_qt_console_bridge.ConsoleBridgeTest.test_number_fields_tell_you_the_allowed_range) ... ok
test_page_grids_use_proportional_columns (test_qt_console_bridge.ConsoleBridgeTest.test_page_grids_use_proportional_columns)
各栏必须按比例分配宽度。写死像素的话,舞台变宽它们也不会跟着变宽, ... ok
test_queue_actions_select_exact_key_before_forwarding (test_qt_console_bridge.ConsoleBridgeTest.test_queue_actions_select_exact_key_before_forwarding) ... ok
test_ready_state_delivery_updates_cache_only_after_emit (test_qt_console_bridge.ConsoleBridgeTest.test_ready_state_delivery_updates_cache_only_after_emit) ... ok
test_request_state_forces_webchannel_handshake_payload (test_qt_console_bridge.ConsoleBridgeTest.test_request_state_forces_webchannel_handshake_payload) ... ok
test_same_view_state_push_preserves_sidebar_and_main_dom_identity (test_qt_console_bridge.ConsoleBridgeTest.test_same_view_state_push_preserves_sidebar_and_main_dom_identity) ... ok
test_save_ai_only_applies_the_agent_name (test_qt_console_bridge.ConsoleBridgeTest.test_save_ai_only_applies_the_agent_name)
AI 设置页现在只有客服昵称是真正的本机设置。 ... ok
test_set_view_waits_for_loaded_document_and_replays_once (test_qt_console_bridge.ConsoleBridgeTest.test_set_view_waits_for_loaded_document_and_replays_once) ... ok
test_sidebar_orb_is_wired_to_the_listen_toggle (test_qt_console_bridge.ConsoleBridgeTest.test_sidebar_orb_is_wired_to_the_listen_toggle)
侧栏那颗球是用户最常点的开关,HTML 上必须真的绑着动作。 ... ok
test_stale_queue_key_never_mutates_previous_selection (test_qt_console_bridge.ConsoleBridgeTest.test_stale_queue_key_never_mutates_previous_selection) ... ok
test_state_is_not_cached_before_webchannel_handshake (test_qt_console_bridge.ConsoleBridgeTest.test_state_is_not_cached_before_webchannel_handshake) ... ok
test_the_canvas_fills_the_window_in_both_directions (test_qt_console_bridge.ConsoleBridgeTest.test_the_canvas_fills_the_window_in_both_directions)
画布要铺满窗口:高度按设计画布等比缩放,宽度靠加宽画布本身补齐。 ... ok
test_the_console_script_handles_that_action (test_qt_console_bridge.ConsoleBridgeTest.test_the_console_script_handles_that_action) ... ok
test_the_feedback_helper_covers_pending_result_and_failure (test_qt_console_bridge.ConsoleBridgeTest.test_the_feedback_helper_covers_pending_result_and_failure)
反馈要三段齐全:立刻响应、真实结果、失败也要说清。 ... ok
test_the_save_slots_report_their_result_back (test_qt_console_bridge.ConsoleBridgeTest.test_the_save_slots_report_their_result_back)
Qt 侧的保存槽必须把结果回传,否则网页那边永远只能瞎猜。 ... ok
test_the_scale_never_depends_on_which_page_is_open (test_qt_console_bridge.ConsoleBridgeTest.test_the_scale_never_depends_on_which_page_is_open)
缩放只能由窗口尺寸决定,绝不能看当前页内容有多高。 ... ok
test_the_side_rail_height_does_not_follow_page_content (test_qt_console_bridge.ConsoleBridgeTest.test_the_side_rail_height_does_not_follow_page_content)
侧栏在每一页必须一样高。 ... ok
test_the_stage_and_pages_grow_with_their_content (test_qt_console_bridge.ConsoleBridgeTest.test_the_stage_and_pages_grow_with_their_content)
舞台和单页都必须是"下限高度",不能写死——写死就必然要么滚要么裁。 ... ok
test_toggle_listen_starts_and_stops_the_host (test_qt_console_bridge.ConsoleBridgeTest.test_toggle_listen_starts_and_stops_the_host) ... ok
test_activation_waits_until_ui_exists (test_qt_tray_lifecycle.InstanceActivationTest.test_activation_waits_until_ui_exists) ... ok
test_guard_constructor_failure_is_reported_without_login (test_qt_tray_lifecycle.InstanceActivationTest.test_guard_constructor_failure_is_reported_without_login) ... ok
test_guard_failure_never_starts_unguarded_client (test_qt_tray_lifecycle.InstanceActivationTest.test_guard_failure_never_starts_unguarded_client) ... ok
test_login_modal_activated_before_main_window (test_qt_tray_lifecycle.InstanceActivationTest.test_login_modal_activated_before_main_window) ... ok
test_no_signal_does_not_change_window (test_qt_tray_lifecycle.InstanceActivationTest.test_no_signal_does_not_change_window) ... ok
test_packaging_selfcheck_does_not_contact_real_instance (test_qt_tray_lifecycle.InstanceActivationTest.test_packaging_selfcheck_does_not_contact_real_instance) ... ok
test_primary_enters_session_and_releases_guard (test_qt_tray_lifecycle.InstanceActivationTest.test_primary_enters_session_and_releases_guard) ... ok
test_secondary_does_not_enter_login_or_construct_main_window (test_qt_tray_lifecycle.InstanceActivationTest.test_secondary_does_not_enter_login_or_construct_main_window) ... ok
test_session_exception_releases_guard (test_qt_tray_lifecycle.InstanceActivationTest.test_session_exception_releases_guard) ... ok
test_smoke_test_does_not_contact_real_instance (test_qt_tray_lifecycle.InstanceActivationTest.test_smoke_test_does_not_contact_real_instance) ... ok
test_about_to_quit_is_wired_to_cleanup (test_qt_tray_lifecycle.TrayLifecycleTest.test_about_to_quit_is_wired_to_cleanup) ... ok
test_application_quit_marks_window_for_real_close (test_qt_tray_lifecycle.TrayLifecycleTest.test_application_quit_marks_window_for_real_close) ... ok
test_capsule_closes_to_tray_and_restores_original_geometry (test_qt_tray_lifecycle.TrayLifecycleTest.test_capsule_closes_to_tray_and_restores_original_geometry) ... ok
test_cleanup_stops_listener_and_backup_once (test_qt_tray_lifecycle.TrayLifecycleTest.test_cleanup_stops_listener_and_backup_once) ... ok
test_console_interrupt_uses_real_exit_not_window_close (test_qt_tray_lifecycle.TrayLifecycleTest.test_console_interrupt_uses_real_exit_not_window_close) ... ok
test_exit_menu_bypasses_close_to_tray (test_qt_tray_lifecycle.TrayLifecycleTest.test_exit_menu_bypasses_close_to_tray) ... ok
test_explicit_disable_close_to_tray_quits (test_qt_tray_lifecycle.TrayLifecycleTest.test_explicit_disable_close_to_tray_quits) ... ok
test_forced_relogin_restores_tray_hidden_web_surface (test_qt_tray_lifecycle.TrayLifecycleTest.test_forced_relogin_restores_tray_hidden_web_surface) ... ok
test_no_tray_fallback_restores_capsule_hidden_surfaces (test_qt_tray_lifecycle.TrayLifecycleTest.test_no_tray_fallback_restores_capsule_hidden_surfaces) ... ok
test_no_tray_falls_back_to_taskbar_even_when_running (test_qt_tray_lifecycle.TrayLifecycleTest.test_no_tray_falls_back_to_taskbar_even_when_running) ... ok
test_repeated_activation_keeps_current_visible_geometry (test_qt_tray_lifecycle.TrayLifecycleTest.test_repeated_activation_keeps_current_visible_geometry) ... ok
test_running_status_does_not_reopen_capsule_after_tray_close (test_qt_tray_lifecycle.TrayLifecycleTest.test_running_status_does_not_reopen_capsule_after_tray_close) ... ok
test_running_window_closes_to_tray_without_capsule_or_stop (test_qt_tray_lifecycle.TrayLifecycleTest.test_running_window_closes_to_tray_without_capsule_or_stop) ... ok
test_save_failure_does_not_prevent_worker_shutdown (test_qt_tray_lifecycle.TrayLifecycleTest.test_save_failure_does_not_prevent_worker_shutdown) ... ok
test_single_and_double_click_restore_but_context_menu_does_not (test_qt_tray_lifecycle.TrayLifecycleTest.test_single_and_double_click_restore_but_context_menu_does_not) ... ok
test_stopped_window_closes_to_tray_without_stopping_worker (test_qt_tray_lifecycle.TrayLifecycleTest.test_stopped_window_closes_to_tray_without_stopping_worker) ... ok
test_system_logoff_does_not_close_to_tray (test_qt_tray_lifecycle.TrayLifecycleTest.test_system_logoff_does_not_close_to_tray) ... ok
test_taskbar_native_restore_clears_fallback_mode (test_qt_tray_lifecycle.TrayLifecycleTest.test_taskbar_native_restore_clears_fallback_mode) ... ok
test_tray_menu_has_explicit_open_and_exit_actions (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_menu_has_explicit_open_and_exit_actions) ... ok
test_tray_restore_preserves_maximized_window (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_restore_preserves_maximized_window) ... ok
test_tray_restore_reopens_without_restarting_listener (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_restore_reopens_without_restarting_listener) ... ok
test_tray_setting_outweighs_legacy_keep_background_false (test_qt_tray_lifecycle.TrayLifecycleTest.test_tray_setting_outweighs_legacy_keep_background_false) ... ok
test_a_long_nickname_is_shortened_instead_of_overflowing (test_qt_capsule.CapsuleWindowTest.test_a_long_nickname_is_shortened_instead_of_overflowing) ... ok
test_compact_layout_has_no_horizontal_overlap (test_qt_capsule.CapsuleWindowTest.test_compact_layout_has_no_horizontal_overlap) ... ok
test_running_keeps_the_progress_line_alone (test_qt_capsule.CapsuleWindowTest.test_running_keeps_the_progress_line_alone) ... ok
test_running_without_a_task_still_shows_a_real_process (test_qt_capsule.CapsuleWindowTest.test_running_without_a_task_still_shows_a_real_process) ... ok
test_status_copy_and_actions_remain_connected (test_qt_capsule.CapsuleWindowTest.test_status_copy_and_actions_remain_connected) ... ok
test_stopping_clears_a_stale_progress_line (test_qt_capsule.CapsuleWindowTest.test_stopping_clears_a_stale_progress_line) ... ok
test_the_progress_line_says_who_is_being_answered (test_qt_capsule.CapsuleWindowTest.test_the_progress_line_says_who_is_being_answered) ... ok
test_the_timer_sits_above_the_full_width_progress_line (test_qt_capsule.CapsuleWindowTest.test_the_timer_sits_above_the_full_width_progress_line) ... ok
test_timer_and_longest_copy_fit_their_widgets (test_qt_capsule.CapsuleWindowTest.test_timer_and_longest_copy_fit_their_widgets) ... ok
test_window_flags_and_position_keep_capsule_non_intrusive (test_qt_capsule.CapsuleWindowTest.test_window_flags_and_position_keep_capsule_non_intrusive) ... ok
test_entering_capsule_twice_is_harmless (test_qt_capsule.MainWindowMinimizeTest.test_entering_capsule_twice_is_harmless) ... ok
test_minimize_from_maximized_restores_maximized_console (test_qt_capsule.MainWindowMinimizeTest.test_minimize_from_maximized_restores_maximized_console) ... ok
test_minimize_while_running_switches_to_capsule_and_can_expand (test_qt_capsule.MainWindowMinimizeTest.test_minimize_while_running_switches_to_capsule_and_can_expand) ... ok
test_minimize_while_stopped_keeps_normal_taskbar_behavior (test_qt_capsule.MainWindowMinimizeTest.test_minimize_while_stopped_keeps_normal_taskbar_behavior) ... ok
test_starting_the_listener_switches_to_capsule_by_itself (test_qt_capsule.MainWindowMinimizeTest.test_starting_the_listener_switches_to_capsule_by_itself)
开始监听就收进胶囊:控制台不该挡在企业微信前面。 ... ok
test_delete_action_emits_the_full_untruncated_task_key (test_qt_capsule.QueuePageDeleteTest.test_delete_action_emits_the_full_untruncated_task_key) ... ok
test_retry_action_emits_only_a_real_retry_wait_task (test_qt_capsule.QueuePageDeleteTest.test_retry_action_emits_only_a_real_retry_wait_task) ... ok
test_builtin_risk_categories_are_read_only_and_rule_management_emits (test_qt_capsule.SettingsSendModeTest.test_builtin_risk_categories_are_read_only_and_rule_management_emits) ... ok
test_mode_buttons_are_exclusive_reflect_settings_and_emit_values (test_qt_capsule.SettingsSendModeTest.test_mode_buttons_are_exclusive_reflect_settings_and_emit_values) ... ok
test_rule_management_navigation_targets_ai_security_policy (test_qt_capsule.SettingsSendModeTest.test_rule_management_navigation_targets_ai_security_policy) ... ok
test_window_redetection_reports_the_real_detected_handle (test_qt_capsule.SettingsSendModeTest.test_window_redetection_reports_the_real_detected_handle) ... ok
test_clicking_the_orb_toggles_the_same_way (test_qt_capsule.SidebarMonitorToggleTest.test_clicking_the_orb_toggles_the_same_way) ... ok
test_clicking_the_status_text_starts_the_listener (test_qt_capsule.SidebarMonitorToggleTest.test_clicking_the_status_text_starts_the_listener) ... ok
test_clicking_the_status_text_while_running_pauses (test_qt_capsule.SidebarMonitorToggleTest.test_clicking_the_status_text_while_running_pauses) ... ok
test_intermediate_states_count_as_running (test_qt_capsule.SidebarMonitorToggleTest.test_intermediate_states_count_as_running) ... ok
test_one_click_never_fires_both_signals (test_qt_capsule.SidebarMonitorToggleTest.test_one_click_never_fires_both_signals)
旧实现每次都 disconnect 再 connect;少断一次就会自相抵消。 ... ok
test_the_tooltip_says_what_the_click_will_do (test_qt_capsule.SidebarMonitorToggleTest.test_the_tooltip_says_what_the_click_will_do) ... ok
test_a_clock_rollback_never_deletes_a_fresh_log (test_runtime_settings.LogRetentionTest.test_a_clock_rollback_never_deletes_a_fresh_log) ... ok
test_a_shorter_window_deletes_more (test_runtime_settings.LogRetentionTest.test_a_shorter_window_deletes_more) ... ok
test_logs_older_than_the_retention_window_are_deleted (test_runtime_settings.LogRetentionTest.test_logs_older_than_the_retention_window_are_deleted) ... ok
test_out_of_range_values_fall_back_to_the_documented_defaults (test_runtime_settings.LogRetentionTest.test_out_of_range_values_fall_back_to_the_documented_defaults) ... ok
test_the_file_count_cap_still_applies (test_runtime_settings.LogRetentionTest.test_the_file_count_cap_still_applies) ... ok
test_unreadable_directory_never_breaks_startup (test_runtime_settings.LogRetentionTest.test_unreadable_directory_never_breaks_startup) ... ok
test_atomic_operation_progress_includes_phase_step_detail_and_customer (test_runtime_settings.RuntimeSettingsTest.test_atomic_operation_progress_includes_phase_step_detail_and_customer) ... ok
test_bot_uses_instance_batch_window_when_call_has_no_override (test_runtime_settings.RuntimeSettingsTest.test_bot_uses_instance_batch_window_when_call_has_no_override) ... ok
test_classic_capsule_renders_each_progress_message_as_a_numbered_step (test_runtime_settings.RuntimeSettingsTest.test_classic_capsule_renders_each_progress_message_as_a_numbered_step) ... ok
test_classic_queue_consumes_the_runtime_progress_channel (test_runtime_settings.RuntimeSettingsTest.test_classic_queue_consumes_the_runtime_progress_channel) ... ok
test_classic_settings_save_persists_and_updates_live_thread (test_runtime_settings.RuntimeSettingsTest.test_classic_settings_save_persists_and_updates_live_thread) ... ok
test_customer_chat_body_is_not_mirrored_into_floating_capsule (test_runtime_settings.RuntimeSettingsTest.test_customer_chat_body_is_not_mirrored_into_floating_capsule) ... ok
test_invalid_saved_batch_window_falls_back_to_twenty_seconds (test_runtime_settings.RuntimeSettingsTest.test_invalid_saved_batch_window_falls_back_to_twenty_seconds) ... ok
test_invalid_saved_send_delay_falls_back_to_one_second (test_runtime_settings.RuntimeSettingsTest.test_invalid_saved_send_delay_falls_back_to_one_second) ... ok
test_invalid_send_mode_falls_back_to_automatic (test_runtime_settings.RuntimeSettingsTest.test_invalid_send_mode_falls_back_to_automatic) ... ok
test_legacy_settings_without_batch_window_keep_twenty_second_default (test_runtime_settings.RuntimeSettingsTest.test_legacy_settings_without_batch_window_keep_twenty_second_default) ... ok
test_manual_queue_delete_removes_only_selected_full_key_atomically (test_runtime_settings.RuntimeSettingsTest.test_manual_queue_delete_removes_only_selected_full_key_atomically) ... ok
test_manual_retry_only_requeues_retry_wait_tasks (test_runtime_settings.RuntimeSettingsTest.test_manual_retry_only_requeues_retry_wait_tasks) ... ok
test_message_copy_retries_when_wecom_writes_clipboard_late (test_runtime_settings.RuntimeSettingsTest.test_message_copy_retries_when_wecom_writes_clipboard_late) ... ok
test_retry_request_queues_until_bot_startup_finishes (test_runtime_settings.RuntimeSettingsTest.test_retry_request_queues_until_bot_startup_finishes) ... ok
test_review_pending_state_survives_restart (test_runtime_settings.RuntimeSettingsTest.test_review_pending_state_survives_restart) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。
ok
test_runtime_thread_syncs_updated_batch_window_before_next_poll (test_runtime_settings.RuntimeSettingsTest.test_runtime_thread_syncs_updated_batch_window_before_next_poll) ... [引擎B] 数据直读检测已启动
[+] 窗口激活模式已开启:企业微信未显示时会自动还原到前台
[i] 数据库新消息与未读标记共同触发回复任务,窗口异常时保留任务并重试
[+] 人机共存已开启:鼠标静止 5 秒后才自动操作
[+] 连续消息合并等待:7 秒
[+] 发送前等待:1.5 秒
[+] 发送模式:人工审核草稿(AI 只把回复填进输入框,不会自动按回车;需要自动发送请在设置里切到“自动发送”)
[引擎B] DB 直读失败: 数据库正在初始化或刷新,暂用备用读取,备用检测继续运行
ok
test_send_delay_wait_is_independent_and_interruptible (test_runtime_settings.RuntimeSettingsTest.test_send_delay_wait_is_independent_and_interruptible) ... ok
test_tagged_low_level_logs_are_mirrored_to_capsule_progress (test_runtime_settings.RuntimeSettingsTest.test_tagged_low_level_logs_are_mirrored_to_capsule_progress) ... ok
test_async_protocol_check_retains_explicit_approval_request (test_desktop_review_visibility.DesktopReviewTest.test_async_protocol_check_retains_explicit_approval_request) ... skipped 'This directory has no protocol transport'
test_explicit_approval_reaches_thread_with_exact_key_and_refreshes (test_desktop_review_visibility.DesktopReviewTest.test_explicit_approval_reaches_thread_with_exact_key_and_refreshes) ... ok
test_human_filter_includes_unknown_receipt_and_no_empty_send (test_desktop_review_visibility.DesktopReviewTest.test_human_filter_includes_unknown_receipt_and_no_empty_send) ... ok
test_legacy_receipt_states_are_visible_but_not_sendable (test_desktop_review_visibility.DesktopReviewTest.test_legacy_receipt_states_are_visible_but_not_sendable) ... ok
test_real_queue_snapshot_renders_review_and_handoff_in_embedded_browser (test_desktop_review_visibility.DesktopReviewTest.test_real_queue_snapshot_renders_review_and_handoff_in_embedded_browser) ... ok
test_review_counts_remain_visible_under_an_unrelated_filter (test_desktop_review_visibility.DesktopReviewTest.test_review_counts_remain_visible_under_an_unrelated_filter) ... ok
test_review_filter_surfaces_protocol_draft_and_reason (test_desktop_review_visibility.DesktopReviewTest.test_review_filter_surfaces_protocol_draft_and_reason) ... ok
test_stale_snapshot_requires_explicit_confirmation_before_backend_handoff (test_desktop_review_visibility.DesktopReviewTest.test_stale_snapshot_requires_explicit_confirmation_before_backend_handoff) ... ok
test_stopped_handoff_uses_offline_resolution_and_preserves_seen (test_desktop_review_visibility.DesktopReviewTest.test_stopped_handoff_uses_offline_resolution_and_preserves_seen) ... ok
test_unknown_receipt_handoff_requires_confirmation_and_never_calls_approve (test_desktop_review_visibility.DesktopReviewTest.test_unknown_receipt_handoff_requires_confirmation_and_never_calls_approve) ... ok
test_generation_failure_is_retryable_but_not_sendable (test_desktop_review_visibility.ReviewStateTest.test_generation_failure_is_retryable_but_not_sendable) ... ok
test_media_without_draft_cannot_be_approved (test_desktop_review_visibility.ReviewStateTest.test_media_without_draft_cannot_be_approved) ... ok
test_protocol_and_visual_reviews_have_the_same_action_contract (test_desktop_review_visibility.ReviewStateTest.test_protocol_and_visual_reviews_have_the_same_action_contract) ... ok
test_uncertain_delivery_cannot_be_approved_or_retried_even_with_stale_review_flag (test_desktop_review_visibility.ReviewStateTest.test_uncertain_delivery_cannot_be_approved_or_retried_even_with_stale_review_flag) ... ok
test_counts_are_disjoint_and_count_conversations_not_messages (test_review_badges.AttentionBadgeTests.test_counts_are_disjoint_and_count_conversations_not_messages) ... ok
test_hidden_queue_refreshes_counts_without_rebuilding_widgets (test_review_badges.AttentionBadgeTests.test_hidden_queue_refreshes_counts_without_rebuilding_widgets) ... ok
test_native_badge_scales_and_preserves_exact_accessible_count (test_review_badges.AttentionBadgeTests.test_native_badge_scales_and_preserves_exact_accessible_count) ... ok
test_queue_refresh_updates_both_native_entrances_under_unrelated_filter (test_review_badges.AttentionBadgeTests.test_queue_refresh_updates_both_native_entrances_under_unrelated_filter) ... ok
test_web_badges_update_while_editing_and_hide_when_resolved (test_review_badges.AttentionBadgeTests.test_web_badges_update_while_editing_and_hide_when_resolved) ... ok
test_bundle_is_used_without_source_checkout (test_packaging_paths.PackagedExporterPathsTest.test_bundle_is_used_without_source_checkout) ... ok
test_explicit_exporter_override_is_preserved (test_packaging_paths.PackagedExporterPathsTest.test_explicit_exporter_override_is_preserved) ... ok
test_exporter_import_does_not_replace_desktop_crypto (test_packaging_paths.PackagedExporterPathsTest.test_exporter_import_does_not_replace_desktop_crypto) ... ok
test_failed_exporter_import_restores_host_modules (test_packaging_paths.PackagedExporterPathsTest.test_failed_exporter_import_restores_host_modules) ... ok
test_fresh_database_initialization (test_packaging_paths.PackagedExporterPathsTest.test_fresh_database_initialization) ... [引擎B] 已登记新消息 → test
ok
test_packaged_settings_use_persistent_data_directory (test_packaging_paths.PackagedExporterPathsTest.test_packaged_settings_use_persistent_data_directory) ... ok
test_windows_powershell_scripts_have_utf8_bom (test_packaging_paths.PackagedExporterPathsTest.test_windows_powershell_scripts_have_utf8_bom) ... ok
----------------------------------------------------------------------
Ran 172 tests in 15.354s
OK (skipped=1)