Level 1 asked whether each screen looks right. Level 2 reads real values out of the live product â a drone's latitude and longitude off the 3D map, the video's decoded frame rate, the movement trail's geometry â and compares them against the simulator's ground truth. So it catches wrong or stale live data with exact evidence, and passes cleanly when the product is correct.
The strongest Levelâ2 check is geospatial. Argus reaches the running Cesium viewer through the page's React fiber and reads each drone marker's actual position, converting it to latitude/longitude with the map's own WGSâ84 ellipsoid. Ground truth is the simulator's true position; the gap is measured in metres.
In normal flight the marker matches the drone to within a metre. Delay the telemetry by 8 seconds and the marker keeps showing where the drone was â up to 110 m from where it is â with no stale indicator. An operator directing ground crews to that spot would be 110 m off. That is a real, highâimpact bug, proven with coordinates, not pixels.
UI marker 18.56179, 73.69496
ground truth 18.56247, 73.69572
gap 110 m · stale indicator: none
Reach the live Cesium viewer via React fiber; read marker and trail positions; convert with the map's WGSâ84 ellipsoid; compare to the simulator in metres.
Liveness from the `<video>` element's frame counter and a frame hash, so a frozen or wrongâsource stream is caught even when the label says âliveâ.
LongâTasks blocking, clickâtoâpaint latency and JSâheap size, measured at rest and under a sustained multiâdrone load.
Ground truth (simulator state, backend health, active faults) always comes from the control API and a socket feed subscribed like the cockpit â never from the UI under test. Verdicts are deterministic; symptoms of one root cause are grouped; correct behaviour is reported as PASS.
Each scenario below has its own recording with voice narration and a live evidence overlay — turn your sound on 🔊
| Bonus capability | How Argus tests it |
|---|---|
| Movement trails · shown | Read the drawn trail polyline from the live map; verify it matches the drone's true flown path within tolerance. |
| Alerts & notifications | Drive a real condition (low battery, disconnect) via the control API and assert the correct alert appears and clears â never spuriously. |
| Shared map drawings & markers | Read placed markers/shapes from the Cesium viewer; verify coordinates and that they replicate to a second operator. |
| Synchronized replay | Compare the replay's positions and timeline against the recorded groundâtruth trajectory, frame for frame. |
| Multiple video layouts | Verify each tile shows a distinct, correctlyâlabelled feed (perceptual hash per drone) across layouts. |
| Search & filtering in history | Assert filtered results match the groundâtruth event log â nothing missing, duplicated or misattributed. |
# start the product
docker compose up --build # cockpit :4010 · control API :4000/api
# run a Level-2 scenario (a real Chrome opens and records)
argus live run --only S11 # map shows an old position as current
argus live run --only S12 # movement-trail accuracy (bonus)
argus live run # the whole suite
Each run writes runs/live/<id>/ â an MP4 with a HUD narrating UIâclaim vs groundâtruth, screenshots, timed samples and a machineâreadable result.json.