|
import pytest |
|
|
|
from openhands.agenthub.browsing_agent.response_parser import ( |
|
BrowseInteractiveAction, |
|
BrowsingResponseParser, |
|
) |
|
|
|
|
|
@pytest.mark.parametrize( |
|
'action_str, expected', |
|
[ |
|
("click('81'", "click('81')```"), |
|
( |
|
'"We need to search the internet\n```goto("google.com")', |
|
'"We need to search the internet\n```goto("google.com")```', |
|
), |
|
("```click('81'", "```click('81')```"), |
|
("click('81')", "click('81')```"), |
|
( |
|
"send_msg_to_user('The server might not be running or accessible. Please check the server status and try again.')", |
|
"send_msg_to_user('The server might not be running or accessible. Please check the server status and try again.')```", |
|
), |
|
], |
|
) |
|
def test_parse_response(action_str: str, expected: str) -> None: |
|
|
|
parser = BrowsingResponseParser() |
|
response = {'choices': [{'message': {'content': action_str}}]} |
|
result = parser.parse_response(response) |
|
assert result == expected |
|
|
|
|
|
@pytest.mark.parametrize( |
|
'action_str, expected_browser_actions, expected_thought, expected_msg_content', |
|
[ |
|
("click('81')```", "click('81')", '', ''), |
|
("```click('81')```", "click('81')", '', ''), |
|
( |
|
"We need to perform a click\n```click('81')", |
|
"click('81')", |
|
'We need to perform a click', |
|
'', |
|
), |
|
( |
|
'Tell the user that the city was built in 1751.\n```send_msg_to_user("Based on the results of my search, the city was built in 1751.")', |
|
'send_msg_to_user("Based on the results of my search, the city was built in 1751.")', |
|
'Tell the user that the city was built in 1751.', |
|
'Based on the results of my search, the city was built in 1751.', |
|
), |
|
( |
|
'Tell the user that the city was built in 1751.\n```send_msg_to_user("Based on the results of my search, the city was built in 1751.")```', |
|
'send_msg_to_user("Based on the results of my search, the city was built in 1751.")', |
|
'Tell the user that the city was built in 1751.', |
|
'Based on the results of my search, the city was built in 1751.', |
|
), |
|
( |
|
"Tell the user that the city was built in 1751.\n```send_msg_to_user('Based on the results of my search, the city was built in 1751.')```", |
|
"send_msg_to_user('Based on the results of my search, the city was built in 1751.')", |
|
'Tell the user that the city was built in 1751.', |
|
'Based on the results of my search, the city was built in 1751.', |
|
), |
|
( |
|
"send_msg_to_user('The server might not be running or accessible. Please check the server status and try again.'))```", |
|
"send_msg_to_user('The server might not be running or accessible. Please check the server status and try again.'))", |
|
'', |
|
'The server might not be running or accessible. Please check the server status and try again.', |
|
), |
|
], |
|
) |
|
def test_parse_action( |
|
action_str: str, |
|
expected_browser_actions: str, |
|
expected_thought: str, |
|
expected_msg_content: str, |
|
) -> None: |
|
|
|
parser = BrowsingResponseParser() |
|
action = parser.parse_action(action_str) |
|
assert isinstance(action, BrowseInteractiveAction) |
|
assert action.browser_actions == expected_browser_actions |
|
assert action.thought == expected_thought |
|
assert action.browsergym_send_msg_to_user == expected_msg_content |
|
|