hermes-agent/tests/tools
Dave Tist 895fe5a5d3 Fix browser cleanup consistency and screenshot recovery
Unify browser session teardown so manual close, inactivity cleanup, and emergency shutdown all follow the same cleanup path instead of partially duplicating logic.

This changes browser_close() to delegate to cleanup_browser(), which means recording shutdown, Browserbase release, activity bookkeeping cleanup, and local socket-directory removal now happen consistently. It also updates emergency cleanup to route through cleanup_all_browsers() and explicitly clear in-memory tracking state after teardown so stale active-session, last-activity, and recording entries are not left behind on exit.

The screenshot fallback path has also been fixed. _extract_screenshot_path_from_text() now matches real absolute PNG paths, including quoted output, so browser_vision() can recover screenshots when agent-browser emits human-readable text instead of JSON.

Regression coverage was added in tests/tools/test_browser_cleanup.py for screenshot path extraction, cleanup_browser() state removal, browser_close() delegation, and emergency cleanup state clearing.

Verified with:
- python -m pytest tests/tools/test_browser_cleanup.py -q
- python -m pytest tests/tools/test_browser_console.py tests/gateway/test_send_image_file.py -q
2026-03-14 11:28:26 -07:00
..
__init__.py test: reorganize test structure and add missing unit tests 2026-02-26 03:20:08 +03:00
test_approval.py fix: preserve current approval semantics for tirith guard 2026-03-14 00:17:04 -07:00
test_browser_cleanup.py Fix browser cleanup consistency and screenshot recovery 2026-03-14 11:28:26 -07:00
test_browser_console.py fix: update all test mocks for call_llm migration 2026-03-11 21:06:54 -07:00
test_checkpoint_manager.py feat: filesystem checkpoints and /rollback command 2026-03-10 00:49:15 -07:00
test_clarify_tool.py test(tools): add unit tests for clarify_tool.py 2026-02-27 03:29:26 -05:00
test_clipboard.py fix(cli): respect HERMES_HOME in all remaining hardcoded ~/.hermes paths 2026-03-13 21:32:53 -07:00
test_code_execution.py fix: skip hanging tests + add global test timeout 2026-03-12 01:23:28 -07:00
test_command_guards.py fix: preserve current approval semantics for tirith guard 2026-03-14 00:17:04 -07:00
test_cron_prompt_injection.py fix: cron prompt injection scanner bypass for multi-word variants 2026-02-26 13:55:54 +03:00
test_cronjob_tools.py test: add unit tests for 8 modules (batch 2) 2026-02-26 13:54:20 +03:00
test_daytona_environment.py fix(daytona): use shell timeout wrapper instead of broken SDK exec timeout 2026-03-05 13:12:41 -08:00
test_debug_helpers.py fix(tests): isolate HERMES_HOME in tests and adjust log directory for debug session 2026-03-02 04:34:21 -08:00
test_delegate.py feat(delegate): add observability metadata to subagent results (#1175) 2026-03-13 08:07:12 -07:00
test_docker_environment.py fix: clearer docker backend preflight errors (#1276) 2026-03-14 02:53:02 -07:00
test_docker_find.py fix: Docker backend fails when docker is not in PATH (macOS gateway) 2026-03-10 20:45:13 -07:00
test_file_operations.py fix: search_files now reports error for non-existent paths instead of silent empty results 2026-03-08 16:47:20 -07:00
test_file_tools.py merge: resolve file_tools.py conflict with origin/main 2026-03-09 13:21:46 +03:00
test_file_tools_live.py fix: skip hanging tests + add global test timeout 2026-03-12 01:23:28 -07:00
test_force_dangerous_override.py fix: prevent --force from overriding dangerous verdict in should_allow_install 2026-03-04 18:10:18 +03:00
test_fuzzy_match.py test: reorganize test structure and add missing unit tests 2026-02-26 03:20:08 +03:00
test_hidden_dir_filter.py fix: use Path.parts for hidden directory filter in skill listing 2026-03-04 18:34:16 +03:00
test_homeassistant_tool.py fix: add service domain blocklist and entity_id validation to HA tools 2026-03-01 11:53:50 +03:00
test_interrupt.py feat: concurrent tool execution with ThreadPoolExecutor 2026-03-13 02:51:51 -07:00
test_local_env_blocklist.py fix(terminal): strip Hermes provider env vars from subprocess environment (#1157) 2026-03-13 07:52:03 -07:00
test_mcp_tool.py feat(mcp): make selective tool loading capability-aware 2026-03-14 06:22:02 -07:00
test_mcp_tool_issue_948.py fix(mcp): resolve npx stdio connection failures (#1291) 2026-03-14 05:44:00 -07:00
test_memory_tool.py test: strengthen assertions in skill_manager + memory_tool (batch 3) 2026-03-05 18:51:43 -08:00
test_mixture_of_agents_tool.py refactor: tighten MoA traceback logging scope (#1307) 2026-03-14 07:53:56 -07:00
test_modal_sandbox_fixes.py fix: skip tests when atroposlib/minisweagent unavailable in CI 2026-03-11 06:52:55 -07:00
test_parse_env_var.py test(terminal): add tests for env var validation in _get_env_config 2026-03-11 02:59:12 -07:00
test_patch_parser.py test: cover pipe characters in v4a patch apply 2026-03-14 03:54:46 -07:00
test_process_registry.py test: add unit tests for 8 modules (batch 2) 2026-02-26 13:54:20 +03:00
test_read_loop_detection.py fix: improve read-loop detection — consecutive-only, correct thresholds, fix bugs 2026-03-10 16:25:41 -07:00
test_registry.py feat: secure skill env setup on load (core #688) 2026-03-13 03:14:04 -07:00
test_rl_training_tool.py fix: call _stop_training_run on early-return failure paths 2026-03-10 17:09:51 -07:00
test_send_message_tool.py fix: complete send_message MEDIA delivery salvage 2026-03-14 04:02:03 -07:00
test_session_search.py fix: update all test mocks for call_llm migration 2026-03-11 21:06:54 -07:00
test_skill_manager_tool.py test: strengthen assertions in skill_manager + memory_tool (batch 3) 2026-03-05 18:51:43 -08:00
test_skill_view_path_check.py refactor: use Path.is_relative_to() for skill_view boundary check 2026-03-04 05:30:43 -08:00
test_skill_view_traversal.py fix(security): block path traversal in skill_view file_path (fixes #220) 2026-03-02 02:00:09 -08:00
test_skills_guard.py Merge PR #388: fix --force bypassing dangerous verdict in should_allow_install 2026-03-04 19:19:57 -08:00
test_skills_hub.py test(skills): isolate well-known cache in adapter tests 2026-03-14 08:24:59 -07:00
test_skills_hub_clawhub.py Fix ClawHub Skills Hub adapter for updated API 2026-03-02 16:11:49 +01:00
test_skills_sync.py fix: prevent data loss in skills sync on copy/update failure 2026-03-07 03:58:32 +03:00
test_skills_tool.py fix: improve gateway secret capture guidance message 2026-03-13 04:10:22 -07:00
test_symlink_prefix_confusion.py fix: use is_relative_to() for symlink boundary check in skills_guard 2026-03-04 17:23:23 +03:00
test_terminal_disk_usage.py fix: eliminate shell noise from terminal output with fence markers 2026-03-02 22:53:21 +03:00
test_terminal_requirements.py fix: clearer terminal backend requirement errors 2026-03-14 06:04:39 -07:00
test_terminal_tool_requirements.py fix: worktree-aware minisweagent path discovery + clean up requirements check (#1248) 2026-03-13 23:39:51 -07:00
test_tirith_security.py feat(security): add tirith pre-exec command scanning 2026-03-14 00:11:27 -07:00
test_todo_tool.py fix: update test_non_empty_has_markers to match todo filtering behavior 2026-03-08 23:07:38 +03:00
test_transcription.py fix: address PR review round 4 — remove web UI, fix audio/import/interface issues 2026-03-14 14:27:21 +03:00
test_transcription_tools.py fix: address PR review round 4 — remove web UI, fix audio/import/interface issues 2026-03-14 14:27:21 +03:00
test_vision_tools.py fix: update all test mocks for call_llm migration 2026-03-11 21:06:54 -07:00
test_voice_cli_integration.py fix: voice pipeline hardening — 7 bug fixes with tests 2026-03-14 14:27:21 +03:00
test_voice_mode.py fix: voice pipeline hardening — 7 bug fixes with tests 2026-03-14 14:27:21 +03:00
test_web_tools_config.py test: comprehensive tests for model metadata + firecrawl config 2026-03-05 18:22:39 -08:00
test_windows_compat.py fix: guard POSIX-only process functions for Windows compatibility 2026-03-01 01:54:27 +03:00
test_write_deny.py fix: resolve symlink bypass in write deny list on macOS 2026-02-26 13:30:55 +03:00
test_yolo_mode.py fix: preserve current approval semantics for tirith guard 2026-03-14 00:17:04 -07:00