Files
Artemis-Eapil/tests/unit/test_ui_automator_client_awake.py
T
somew1nd 54fcef9887 refactor: clean up legacy code, rename hopper to entity_extractor, and add third-party notices
- Add NOTICE file and README license references for mobile-use and finalrun-agent
- Add derivative attribution headers to 17 files derived from mobile-use
- Rename hopper agent to entity_extractor across prompts, tools, and configs
- Remove obsolete adb_tunnel, ApiBaseUrl, and legacy CLI utility scripts
- Replace legacy examples with native Artemis diagnostic and workflow examples
- Update unit and tool tests to validate entity_extractor and SDK builders
2026-09-11 16:19:42 -07:00

73 lines
2.0 KiB
Python

from unittest.mock import MagicMock, patch
import pytest
from artemis.clients.ui_automator_client import UIAutomatorClient
from artemis.drivers.android.adb_driver import AndroidAdbDriver
@patch("artemis.clients.ui_automator_client.u2.connect")
@patch(
"artemis.clients.ui_automator_client.ensure_device_awake",
return_value="host_heartbeat",
)
def test_new_ui_connection_enrolls_device_in_shared_awake_strategy(
mock_ensure_awake, mock_connect
):
client = UIAutomatorClient("device-123")
client.connect()
client.connect()
mock_ensure_awake.assert_called_once_with("device-123")
mock_connect.assert_called_once_with("device-123")
@patch("artemis.clients.ui_automator_client.u2.connect", side_effect=RuntimeError("offline"))
@patch(
"artemis.clients.ui_automator_client.ensure_device_awake",
return_value="host_heartbeat",
)
def test_failed_ui_connection_does_not_stop_process_awake_service(
mock_ensure_awake, _mock_connect
):
client = UIAutomatorClient("device-123")
with pytest.raises(RuntimeError, match="offline"):
client.connect()
mock_ensure_awake.assert_called_once_with("device-123")
assert client._awake_strategy is None
@patch("artemis.clients.ui_automator_client.u2.connect")
@patch(
"artemis.clients.ui_automator_client.ensure_device_awake",
return_value="host_heartbeat",
)
def test_client_disconnect_does_not_send_power_cleanup_commands(
mock_ensure_awake, _mock_connect
):
client = UIAutomatorClient("device-123")
client.connect()
client.disconnect()
mock_ensure_awake.assert_called_once_with("device-123")
assert client._device is None
assert client._awake_strategy is None
@pytest.mark.asyncio
async def test_android_driver_disconnect_cleans_up_ui_client():
ui_client = MagicMock()
driver = AndroidAdbDriver(
device_id="device-123",
adb_client=MagicMock(),
ui_adb_client=ui_client,
)
await driver.disconnect()
ui_client.disconnect.assert_called_once_with()