Skip to content

test(tools): comprehensive test suite for browser_tools module (+75 tests) - #184

Open
manus-use wants to merge 1 commit into
mainfrom
test/browser-tools-suite
Open

test(tools): comprehensive test suite for browser_tools module (+75 tests)#184
manus-use wants to merge 1 commit into
mainfrom
test/browser-tools-suite

Conversation

@manus-use

Copy link
Copy Markdown
Owner

Summary

Comprehensive test suite for the browser_tools module (src/manus_agent/tools/browser_tools.py) — previously at zero dedicated test coverage.

What's tested (75 tests)

Module importability (4 tests)

  • All expected symbols exist (21 tool functions + classes)
  • BROWSER_USE_AVAILABLE flag type check
  • Strands @tool decorator verification

BrowserAgentSession.init (7 tests)

  • Default headless=True behavior
  • Explicit headless parameter override
  • Config-driven headless from browser_use section
  • Explicit param priority over config
  • Config without browser_use attribute fallback
  • Config/None storage

BrowserAgentSession._get_llm (8 tests)

  • Bedrock provider with default config
  • Browser-use config overrides (model, temperature, max_tokens)
  • AWS region from environment variable
  • Default us-east-1 when no env var
  • Unsupported provider raises ValueError
  • No-config defaults
  • Fallback from browser_use.provider=None to main LLM config
  • Config without browser_use uses llm config directly

BrowserAgentSession.run_task (8 tests)

  • ImportError when BROWSER_USE_AVAILABLE=False
  • Full agent creation + run flow
  • Callable extracted_content handling
  • String extracted_content (direct return)
  • all_results fallback (reversed search for is_done)
  • str(result) fallback when no structured output
  • Headless=False passed to BrowserProfile
  • Headless=True passed to BrowserProfile

BrowserAgentSession.cleanup (1 test)

  • No-op completion without error

get_browser_session singleton (5 tests)

  • Creates new session
  • Returns existing singleton
  • Passes headless parameter
  • Passes config parameter
  • Ignores params on existing session (first-creation wins)

browser_do tool (6 tests)

  • Success returns {success, result, task}
  • Error returns {success=False, error, task}
  • Headless from browser_use config
  • Explicit headless override
  • Config.from_file exception handling
  • Fallback to tools.browser_headless when no browser_use

browser_cleanup tool (3 tests)

  • Cleanup with no active session
  • Cleanup with active session (calls cleanup, resets global)
  • Exception during cleanup

Browser action tools (22 tests)

Every delegating tool verified for correct task string construction:

  • browser_navigate, browser_search_google, browser_go_back
  • browser_wait (default + custom seconds)
  • browser_click_element (no index + with index)
  • browser_input_text (no index + with index)
  • browser_save_pdf (no filename + with filename)
  • browser_switch_tab, browser_open_tab, browser_close_tab
  • browser_extract_content (plain + with links)
  • browser_get_page_info
  • browser_scroll_down (default + pixels), browser_scroll_up (default + pixels)
  • browser_scroll_to_text, browser_send_keys
  • browser_select_dropdown, browser_drag_drop
  • Error propagation through action tools

web_search tool (1 test)

  • Fallback to browser_do when web_search import fails

Edge cases (4 tests)

  • None config handling
  • Config without browser_use attribute in browser_do
  • Global session reset on cleanup
  • Task preserved in error dict

BROWSER_USE_AVAILABLE guard (2 tests)

  • Import error message content
  • Install instructions in error

Design

  • 100% mocked — no real HTTP, no real browser, no network calls
  • Tests the __wrapped__ async functions directly (bypasses strands @tool decorator overhead)
  • Mocks at Config.from_file + get_browser_session level for action tools
  • Mocks at BrowserUseAgent/BrowserProfile/Controller/ChatBedrock level for session tests
  • autouse fixture resets the global singleton between every test

Test results

1233 passed, 3 deselected, 0 failures

Baseline: 1158 existing + 75 new = 1233 total passing tests.

Open PRs checked (no overlap)

Checked all 50 open PRs (#134#183). Closest related:

No open or merged PR provides dedicated test coverage for browser_tools.py.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant