diff --git a/experiments/__init__.py b/experiments/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/experiments/agents/agent.py b/experiments/agents/agent.py index bf6ff67..eb54bcb 100644 --- a/experiments/agents/agent.py +++ b/experiments/agents/agent.py @@ -1,5 +1,4 @@ -from os import environ -from base import Agent as BaseAgent +from experiments.agents.base import Agent as BaseAgent from browser_use import Browser, Agent, ChatOpenAI from enum import Enum @@ -28,6 +27,7 @@ class GenericBrowserUseAgent(BaseAgent): browser=self.browser) async def act(self) -> str: self.result = await self.agent.run() + # https://github.com/browser-use/browser-use/blob/main/browser_use/agent/views.py#L301 return self.result.final_result() def get_agent(agent_type: AgentTypes, **kwargs) -> Agent: diff --git a/experiments/agents/test.py b/experiments/agents/test.py index 1b99a02..6d5c769 100644 --- a/experiments/agents/test.py +++ b/experiments/agents/test.py @@ -1,3 +1,27 @@ import pytest +import asyncio +from experiments.agents.agent import get_agent, AgentTypes -from agent import get_agent + +def test_agent_init(): + agent = get_agent(AgentTypes.GENERIC_BROWSER_USE_AGENT, goal="test", url="http://example.com", timeout=100) + assert agent.goal == "test" + assert agent.url == "http://example.com" + assert agent.timeout == 100 + + +def test_invalid_agent(): + with pytest.raises(ValueError): + get_agent("invalid", goal="test") + + +@pytest.mark.asyncio +async def test_agent_execution(): + agent = get_agent(AgentTypes.GENERIC_BROWSER_USE_AGENT, goal="get page title", url="https://example.com", timeout=60) + result = await agent.act() + assert result + assert agent.final_result() + assert agent.final_result().history[-1].result[-1].is_done == True + assert isinstance(result, str) + assert "example" in result.lower() + assert len(result) > 0 diff --git a/requirements.txt b/requirements.txt index 50d8559..af84760 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,5 @@ ipykernel matplotlib graphviz browser-use +pytest +pytest-asyncio