Demo Script — Test Card
Environment
| Setting | Value |
|---|---|
| Target | local / sandbox / dev (select one) |
| Base URLs | |
| Local | http://localhost:3000 (adjust per local setup) |
| Sandbox | https://apollo-sandbox.uncrew.dev.droneup.cloud/otto-apollo-frontend/ |
| Dev | https://apollo.uncrew.dev.droneup.cloud/otto-apollo-frontend/ |
| Date | |
| Tester |
Playwright Tests
Automated E2E test stubs for this test card live in the frontend repo:
uncrew-apollo-frontend/e2e/demo-script.spec.tsTest IDs in the tables below (e.g., S-01, L1-02) match the test names in the spec file. Run against any environment:
cd ../uncrew-apollo-frontend
E2E_TARGET=sandbox npx playwright test # or local / devSee uncrew-apollo-frontend/e2e/README.md for auth setup and codegen instructions.
Pre-Demo Setup (Section 3)
| # | Test | Pass | Notes |
|---|---|---|---|
| S-01 | Application loads — login screen or landing page renders | ||
| S-02 | Authenticate as Observer / Authority role — Live Map loads | ||
| S-03 | (Optional) Jurisdictional Manager view accessible — Flight Review loads | ||
| S-04 | (Optional) Pilot / Operator view accessible — My Flights loads | ||
| S-05 | Live Map shows ADS-B Exchange / AirDex background traffic | ||
| S-06 | Jurisdictions are visible on the map | ||
| S-07 | Demo controls pull-out panel opens and closes | ||
| S-08 | Demo prep script (Ctrl+D → Start Setup) completes without error: creates ATOMx Alpha (software verified), ATOMx Bravo (hardware verified), Fort McNair jurisdictions, and pre-approved authorizations | ||
| S-09 | Jurisdiction selector renders as dropdown in top-right corner (not left panel) | ||
| S-10 | Full-screen map button is present and functional | ||
| S-11 | Navigation suppressed to demo-safe items only — Mission Console, Mission Manager, Vehicle Manager, Settings, Mission Planner are hidden | ||
| S-12 | Demo environment confirmed as apollo.uncrew.dev.droneup.cloud (dev) |
Opening: COP Backdrop
| # | Test | Pass | Notes |
|---|---|---|---|
| O-01 | Live Map renders with light gray basemap and moving aircraft dots | ||
| O-02 | No legends, panels, or labels visible on initial load (clean backdrop) | ||
| O-03 | 1 red dot (unknown flight) is already moving across the map on load — no manual start required |
Act 1: Trust Levels
Layer 1 — Counter-UAS Feed Only (Red)
| # | Test | Pass | Notes |
|---|---|---|---|
| L1-01 | Demo controls: Fly button is present | ||
| L1-02 | Clicking Fly places a red dot on the map | ||
| L1-03 | Red dot moves (live telemetry simulation) | ||
| L1-04 | Clicking red dot opens detail panel | ||
| L1-05 | Detail panel shows all fields as unknown / N/A | ||
| L1-06 | Legend shows Red = Unidentified (all five trust levels visible at all times) |
Layer 2 — Remote ID Added (Declared)
| # | Test | Pass | Notes |
|---|---|---|---|
| L2-01 | Demo controls: Remote ID button is present | ||
| L2-02 | Pressing Remote ID transitions the dot from red to orange | ||
| L2-03 | Clicking orange dot shows: pilot identity = declared with pilot name/identifier (not just “Declared Only”), UA identity = declared with Remote ID serial (not just “Declared”) | ||
| L2-04 | Detail panel shows flight intent = absent | ||
| L2-05 | Legend shows Orange = Declared |
Layer 3 — Operational Intent Added (Correlated)
| # | Test | Pass | Notes |
|---|---|---|---|
| L3-01 | Demo controls: Inject Intent button is present | ||
| L3-02 | Pressing Inject Intent places a shaded polygon on the map | ||
| L3-03 | Dot transitions automatically from orange to yellow upon OI injection (no separate correlation button needed) | ||
| L3-04 | OI polygon does not display a “too late” or temporal non-conformance status | ||
| L3-05 | OI polygon color matches the trust level color of the correlated aircraft (not always red) | ||
| L3-06 | Clicking yellow dot shows correlated status | ||
| L3-07 | Legend shows Yellow = Correlated |
Layer 4 — Software Identity / Full Authorization (Authorized)
| # | Test | Pass | Notes |
|---|---|---|---|
| L4-01 | Pre-authorized ATOMx Alpha flight is visible as a blue dot | ||
| L4-02 | Clicking blue dot shows: pilot = Verified (login.gov or equivalent — NOT “Software Verified”), UA = Software Verified (software certificate), flight = Authorized | ||
| L4-03 | All three axes populated in detail panel | ||
| L4-04 | Legend shows Authorized (trust level summary) — NOT “Software Verified” (drone identity attribute) |
Layer 5 — Hardware Identity (Verified)
| # | Test | Pass | Notes |
|---|---|---|---|
| L5-01 | Pre-authorized ATOMx Bravo flight is visible as a green dot | ||
| L5-02 | Clicking green dot shows: pilot = Verified (NOT “Hardware Verified”), UA = Hardware Verified (TPM attested) | ||
| L5-03 | Legend shows Green = Verified |
Non-Conformance Scene
| # | Test | Pass | Notes |
|---|---|---|---|
| NC-01 | Demo controls: Deviate button is present | ||
| NC-02 | Pressing Deviate causes the authorized aircraft to leave its authorized area geographically | ||
| NC-03 | Dot gains non-conformance indicator (pulsing border, exclamation, or similar) | ||
| NC-04 | Dot retains underlying trust level color (still blue/green underneath) | ||
| NC-05 | Clicking dot shows: conformance = non-conformant, identity fields unchanged | ||
| NC-06 | Red and orange dots do not show a non-conformance indicator (no intent = no conformance check) |
Act 2: The Authority’s Role
| # | Test | Pass | Notes |
|---|---|---|---|
| A2-01 | Jurisdictional Manager session: Flight Review / Authorizations tab loads | ||
| A2-02 | List of pending flight requests is visible | ||
| A2-03 | Each request shows: pilot, aircraft, requested area, time window | ||
| A2-04 | Approve/deny controls are present on each request | ||
| A2-05 | Approving a flight succeeds — operator receives notification showing flight name and authorization ID (not auth ID alone) | ||
| A2-06 | Approved flight appears as blue dot on Observer’s Live Map | ||
| A2-07 | Operator identity shows Verified (not “Validated”) after identity check | ||
| A2-08 | Show All Jurisdictions toggle is present on Live Map layer controls and overlays all jurisdiction boundaries when enabled |
Closing: Full Common Operating Picture
| # | Test | Pass | Notes |
|---|---|---|---|
| C-01 | Zooming out shows full demo area with multiple aircraft at different trust levels | ||
| C-02 | Multiple dot colors visible simultaneously (red, orange, yellow, blue, green) | ||
| C-03 | Operational intent polygons visible on map | ||
| C-04 | Orphaned OI polygon (no correlated aircraft) is visible | ||
| C-05 | Full legend is visible with all trust levels (static — all five levels always shown regardless of what is on screen) | ||
| C-06 | Demo controls: Populate Area button is present | ||
| C-07 | Pressing Populate Area spawns a fleet of predominantly L4/L5 (blue/green) flights across the demo region with one or two unknowns |
Demo Controls Panel
| # | Test | Pass | Notes |
|---|---|---|---|
| DC-01 | Panel slides out from left side of Live Map | ||
| DC-02 | Panel is labeled “Demo Controls” | ||
| DC-03 | Controls are simple buttons (no complex forms, no dropdowns) | ||
| DC-04 | Fly button is present | ||
| DC-05 | Pressing Fly starts the simulation and places a moving red dot on the map (does NOT open a sub-panel) | ||
| DC-06 | Buttons present: Remote ID, Inject Intent, Deviate, Populate Area | ||
| DC-07 | Pressing each button produces the correct trust level transition | ||
| DC-08 | Simulations generate telemetry through normal backend pipeline (not mocked) | ||
| DC-09 | Insertable operational intents do not show an “Activated” status badge | ||
| DC-10 | Insertable operational intents do not show a bearing field | ||
| DC-11 | Demo prep Reset button stops all simulations, cancels authorizations, and restores clean state |
Summary
| Section | Total | Passed | Failed | Skipped |
|---|---|---|---|---|
| Pre-Demo Setup | 12 | |||
| Opening | 3 | |||
| Layer 1 (Red) | 6 | |||
| Layer 2 (Orange) | 5 | |||
| Layer 3 (Yellow) | 7 | |||
| Layer 4 (Blue) | 4 | |||
| Layer 5 (Green) | 3 | |||
| Non-Conformance | 6 | |||
| Act 2 (Authority) | 8 | |||
| Closing (COP) | 7 | |||
| Demo Controls | 11 | |||
| Total | 72 |
Last updated on