Register `SUPPORTED_DRIVER_TYPES["uiautomator2"]` backed by the new `AndroidDriver`, mirroring `WDADriver` method-for-method. tap/swipe/home use the confirmed UiAutomator2 mobile commands (`clickGesture`, `dragGesture`, `pressKey`); swipe converts `duration_ms` to a drag speed with a zero-distance guard. Adds 34 mocked unit tests, an env-var-gated integration test, and corrects the outdated "Android not registered" note in the iPhone setup doc. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ from dataclasses import fields
|
||||
from typing import Any
|
||||
|
||||
from device.manager import DriverFactory
|
||||
from driver.android_driver import AndroidDriver, AndroidDriverConfig
|
||||
from driver.wda_driver import WDADriver, WDADriverConfig
|
||||
|
||||
DriverFactoryBuilder = Callable[[dict[str, Any]], DriverFactory]
|
||||
@@ -29,8 +30,28 @@ def build_wda_driver_factory(connection_info: dict[str, Any]) -> DriverFactory:
|
||||
return lambda: WDADriver(config)
|
||||
|
||||
|
||||
def build_android_driver_factory(connection_info: dict[str, Any]) -> DriverFactory:
|
||||
config_fields = {field.name for field in fields(AndroidDriverConfig)}
|
||||
data = dict(connection_info)
|
||||
raw_extra_capabilities = data.pop("extra_capabilities", {})
|
||||
if not isinstance(raw_extra_capabilities, dict):
|
||||
raise ValueError("extra_capabilities must be an object")
|
||||
|
||||
config_values: dict[str, Any] = {}
|
||||
for key in list(data):
|
||||
if key in config_fields and key != "extra_capabilities":
|
||||
config_values[key] = data.pop(key)
|
||||
|
||||
config = AndroidDriverConfig(
|
||||
**config_values,
|
||||
extra_capabilities={**raw_extra_capabilities, **data},
|
||||
)
|
||||
return lambda: AndroidDriver(config)
|
||||
|
||||
|
||||
SUPPORTED_DRIVER_TYPES: dict[str, DriverFactoryBuilder] = {
|
||||
"wda": build_wda_driver_factory,
|
||||
"uiautomator2": build_android_driver_factory,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user