fix: guard transient controls and verify timeline endpoints
This commit is contained in:
1 parent
479a185192
commit
00e62a663a
29 files changed
+1150
-90
No files matched your search
@@ -284,6 +284,39 @@ async def test_android_driver_parses_xml_hierarchy_fallback():
|
||||
assert any(element.get("text") == "Settings" for element in screen_data.ui_elements)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_android_live_targets_read_fresh_hierarchy_without_screenshot():
|
||||
client = MagicMock()
|
||||
client.get_hierarchy.side_effect = [
|
||||
'<hierarchy><node resource-id="app:id/plus" bounds="[10,20][30,40]"/></hierarchy>',
|
||||
"<hierarchy/>",
|
||||
]
|
||||
driver = AndroidAdbDriver("test-device", MagicMock(), ui_adb_client=client)
|
||||
driver.get_screen_data = AsyncMock(side_effect=AssertionError("must not capture screen"))
|
||||
|
||||
present = await driver.get_ui_elements()
|
||||
absent = await driver.get_ui_elements()
|
||||
|
||||
assert any(e.get("resource-id") == "app:id/plus" for e in present)
|
||||
assert not any(e.get("resource-id") == "app:id/plus" for e in absent)
|
||||
assert client.get_hierarchy.call_count == 2
|
||||
client.get_screen_data.assert_not_called()
|
||||
driver.get_screen_data.assert_not_called()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_android_live_hierarchy_errors_do_not_fall_back_to_stale_screen():
|
||||
client = MagicMock()
|
||||
client.get_hierarchy.side_effect = TimeoutError("hierarchy unavailable")
|
||||
driver = AndroidAdbDriver("test-device", MagicMock(), ui_adb_client=client)
|
||||
driver.get_screen_data = AsyncMock()
|
||||
|
||||
with pytest.raises(TimeoutError, match="hierarchy unavailable"):
|
||||
await driver.get_ui_elements()
|
||||
|
||||
driver.get_screen_data.assert_not_called()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_find_element_prefers_fresh_bounds_over_stale_center():
|
||||
"""Layout transitions must not leave dynamic element taps at old coordinates."""
|
||||
|
||||
Reference in new issue
Block a user