feat: release 2.2.0 with PC-only tests and execution reliability fixes
Unify task scheduling and queue state, fix Android input and observation recovery, preserve screenshot paths, and match final review criteria accurately. Add collapsible copyable results and publish the complete 2.1.0 upgrade notes. Validation: 3189 backend tests, 326 frontend tests, 24 client tests, production build and quality gates.
This commit is contained in:
1 parent
fac4ccb760
commit
be6e8c2abd
79 files changed
+2263
-277
No files matched your search
@@ -280,7 +280,7 @@ server.run()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("scope", ["", "test-adb-endpoint"])
|
||||
def test_resource_lock_conflicts_across_devices_without_holding_partial_leases(
|
||||
def test_serial_resource_locks_across_devices_without_holding_partial_leases(
|
||||
tmp_path, monkeypatch, scope
|
||||
):
|
||||
import artemis.runtime.device_lock as locks
|
||||
@@ -304,16 +304,20 @@ def test_resource_lock_conflicts_across_devices_without_holding_partial_leases(
|
||||
try:
|
||||
with pytest.raises(DeviceBusyError):
|
||||
second.acquire(blocking=False)
|
||||
other.acquire(blocking=False)
|
||||
assert len(DeviceExecutionLock.get_active_owners()) == 2
|
||||
assert DeviceExecutionLock.get_active_owners()["phone-a"].resource_ids == ("desktop:local",)
|
||||
with pytest.raises(DeviceBusyError):
|
||||
other.acquire(blocking=False)
|
||||
assert len(DeviceExecutionLock.get_active_owners()) == 1
|
||||
resources = (DeviceExecutionLock.EXECUTION_RESOURCE, "desktop:local")
|
||||
assert DeviceExecutionLock.get_active_owners()["phone-a"].resource_ids == resources
|
||||
assert DeviceExecutionLock.annotate_active_owner(
|
||||
session_id="first", device_id="phone-a", ingress="test"
|
||||
)
|
||||
assert DeviceExecutionLock.get_active_owners()["phone-a"].resource_ids == ("desktop:local",)
|
||||
assert DeviceExecutionLock.get_active_owners()["phone-a"].resource_ids == resources
|
||||
finally:
|
||||
other.release()
|
||||
first.release()
|
||||
other.acquire(blocking=False)
|
||||
other.release()
|
||||
second.acquire(blocking=False)
|
||||
second.release()
|
||||
assert not DeviceExecutionLock.get_active_owners()
|
||||
@@ -562,6 +566,7 @@ server.run()
|
||||
other.release()
|
||||
assert await asyncio.wait_for(future, timeout=15) == (True, None)
|
||||
assert DeviceExecutionLock.get_active_owners()["computer-a"].resource_ids == (
|
||||
DeviceExecutionLock.EXECUTION_RESOURCE,
|
||||
"desktop:local",
|
||||
)
|
||||
result = await runtime.call(next(iter(runtime.bindings)), {})
|
||||
|
||||
Reference in new issue
Block a user