Files
agentic-mobile-control/tests/test_active_app.py
T
2026-07-16 08:13:04 +08:00

55 lines
1.6 KiB
Python

from __future__ import annotations
from unittest.mock import MagicMock
from core.models import ActiveApp
from driver.android_driver import AndroidDriver
from driver.wda_driver import WDADriver
from tools.ui_tree import get_ui_tree
from device.manager import DeviceManager
from tests.fakes import FakeDriver
def test_android_driver_reads_current_package_and_activity() -> None:
driver = AndroidDriver()
driver._client = MagicMock()
driver._client.current_package = "com.example.mobile"
driver._client.current_activity = ".MainActivity"
assert driver.active_app() == ActiveApp(
platform="android",
package="com.example.mobile",
activity=".MainActivity",
)
def test_wda_driver_reads_current_bundle_id() -> None:
driver = WDADriver()
driver._client = MagicMock()
driver._client.execute_script.return_value = {
"bundleId": "com.example.mobile",
"pid": 123,
}
assert driver.active_app() == ActiveApp(
platform="ios",
bundle_id="com.example.mobile",
)
driver._client.execute_script.assert_called_once_with("mobile: activeAppInfo")
def test_ui_tree_keeps_list_response_without_active_app_option() -> None:
manager = DeviceManager()
manager.register_device(
"phone-1",
lambda: FakeDriver(
active_app=ActiveApp(platform="ios", bundle_id="com.example.mobile")
),
)
manager.connect("phone-1")
response = get_ui_tree("phone-1", manager=manager)
assert isinstance(response, list)
assert any(node["text"] == "Search" for node in response)