Skip to content

Manual Testing Checklist ​

A comprehensive step-by-step checklist for manually verifying every feature in the SafeCall web interface. Use this when performing a full application review, after major releases, or when onboarding testers.

Prerequisites ​

Server Mode (Full SafeCall) ​

For a complete test, run the server with all features enabled:

json
"server_features": ["bridge", "safecall"]

"safecall" expands to navigation, alerting, rtls, and sensors. This ensures all UI pages and feature-gated elements are visible.

Required Test Data ​

Before starting, ensure the system has:

  • At least 2 users (1 admin, 1 regular)
  • At least 2 locations in a hierarchy (e.g., Building > Floor)
  • At least 3 beacons of different types (watch, navigation, sensor)
  • At least 2 gateways
  • At least 1 map uploaded and assigned to a location
  • At least 1 floor with a navigation graph (nodes + edges)
  • At least 1 zone drawn on a map with connections
  • Some log entries and beacon events in the database

Browser Setup ​

  • Test in Chrome/Chromium (primary target)
  • Keep DevTools Console open to catch JavaScript errors
  • Test responsive behavior by resizing the window or using DevTools device toolbar

1. Login Page ​

1.1 Page Rendering ​

  • [ ] Page loads with product name in hero section
  • [ ] Email and password input fields are visible
  • [ ] Login button is visible
  • [ ] App version and build date appear in footer

1.2 Authentication ​

  • [ ] Valid login: Enter valid admin credentials → redirects to Dashboard
  • [ ] Invalid credentials: Enter wrong password → danger notification appears with error message
  • [ ] Empty fields: Submit with empty email/password → appropriate error shown
  • [ ] Enter key submission: Type credentials and press Enter → form submits (no need to click the button)

1.3 Error Handling ​

  • [ ] If server is unreachable → notification shows connection error
  • [ ] Notification disappears or can be dismissed

2. Dashboard ​

2.1 Page Rendering ​

  • [ ] Dashboard loads after login with all sections visible
  • [ ] Page title is set to "Dashboard"

2.2 Navbar (Global — test from Dashboard) ​

  • [ ] All navbar items are present: Dashboard, Locations, Zones, Beacons, Users, Gateways, Maps, Navigation, Gateway ID, Placement Planner, Sensors (if enabled), Logout
  • [ ] Dropdown menus: Hover over dropdown parent items (e.g., "RTLS" containing Zones, "Admin" containing Users/Gateways) → child items become visible
  • [ ] Each navbar item navigates to its respective page
  • [ ] Active state: Current page's navbar item is visually highlighted
  • [ ] Logout: Clicking Logout clears session and returns to login page

2.3 Mobile Navbar ​

  • [ ] Resize browser to mobile width (< 1024px)
  • [ ] Burger menu icon appears
  • [ ] Clicking burger toggles the navbar menu open/closed
  • [ ] Dropdown submenus expand on click in mobile mode
  • [ ] All navigation items remain accessible in mobile layout

2.4 Status Section ​

  • [ ] MQTT, KISS, and ntfy rows render with last-checked time and Recheck buttons
  • [ ] Fleet summary table shows configured / active / disabled / seen recently / stale counts
  • [ ] Issues list shows software-detected problems, or a success line when none
  • [ ] Recheck MQTT / KISS / ntfy updates the corresponding row from the cached snapshot

2.5 Beacon Events Section ​

  • [ ] Events table renders with recent beacon events (if data exists)
  • [ ] Export Events button: Click → triggers CSV file download (events.csv)
  • [ ] Downloaded CSV contains event data

2.6 Logs Section ​

  • [ ] Recent logs are displayed in a list
  • [ ] Log entries show timestamp and message content

2.7 Mobile Access / QR Section ​

  • [ ] The Ariadne QR renders independently on the right-hand card
  • [ ] The Keryx card default-checks SOS, watches, and daily status. Condition categories (sensors, batteries, not-seen, calibration, installation health last) remain available and unchecked
  • [ ] Admin features is collapsed by default; Test notifications and debug access are both unchecked
  • [ ] Generating a normal Keryx QR does not show an admin warning
  • [ ] Enabling Test or debug access shows a warning overlay; Cancel creates no QR and Continue creates a v2 QR with only the selected categories
  • [ ] The generated Keryx QR can be enlarged without exposing subscribe_auth in visible page text
  • [ ] QR status label updates

3. Locations ​

3.1 Access Control ​

  • [ ] Admin user can access the page
  • [ ] Non-admin user sees a danger notification and no content

3.2 Page Rendering ​

  • [ ] Location tree renders with existing locations
  • [ ] Each location shows an icon matching its type (building, floor, department, room, other)
  • [ ] "Add New Location", "Save", and "Reset" buttons are visible

3.3 CRUD Operations ​

  • [ ] Add Location: Click "Add New Location" → modal opens with name and type fields
    • [ ] Enter name and select type → click Create → new location appears in tree
    • [ ] Close modal via Cancel button
    • [ ] Close modal via X button
    • [ ] Close modal via Escape key
  • [ ] Edit Location: Click the edit icon on a location → inline inputs appear
    • [ ] Change name and/or type → click Save → changes apply in the tree
  • [ ] Delete Location: Click the delete icon → location and its children are removed from the tree

3.4 Drag and Drop ​

  • [ ] Drag a location onto another → it becomes a child of the target
  • [ ] Drag a location to the "Drop here to make root" zone → it becomes a root-level location
  • [ ] Dragging a parent onto its own descendant is prevented (no cycles)

3.5 Save and Reset ​

  • [ ] Save: After making changes, click Save → changes persist (reload page to verify)
  • [ ] Reset: After making unsaved changes, click Reset → tree reverts to server state

4. Beacons ​

4.1 Access Control ​

  • [ ] Admin user can access the page

4.2 Page Rendering ​

  • [ ] Beacon table renders with columns: ID, Name, MAC, Type, IP, Send to KISS, Active, Actions
  • [ ] Existing beacons appear in the table
  • [ ] Type in the search input → table filters to matching beacons (fuzzy match across name, MAC, etc.)
  • [ ] Clear search → full list restores

4.4 Create Beacon ​

  • [ ] Click "New Beacon" → modal opens
  • [ ] Fill in required fields (MAC, type, name)
  • [ ] Type-dependent fields:
    • [ ] Select type "Watch" or "Panic" → watch/panic-specific fields appear
    • [ ] Select type "Navigation" → navigation fields appear (floor, x, y, uname, rnumber, POI, static)
    • [ ] Select type "Sensor" → sensor fields appear (update interval, humidity/temperature coefficients and ranges)
  • [ ] Submit → success notification, table updates with new beacon
  • [ ] Close modal via Cancel → no beacon created
  • [ ] Close modal via X button → no beacon created
  • [ ] Close modal via Escape → no beacon created

4.5 Edit Beacon ​

  • [ ] Click edit icon on a beacon → edit modal opens with pre-filled data
  • [ ] Modify fields → save → success notification, table updates
  • [ ] Type select is disabled (unless original type was "unknown")

4.6 View Beacon Info ​

  • [ ] Click view icon on a beacon → info modal opens
  • [ ] Modal shows beacon details, active flags, and relevant sections based on type
  • [ ] Events table: Recent events listed
  • [ ] Sightings table: Gateway sightings with MAC, RSSI, time
  • [ ] Sensor data table (sensor type only): Type, value, timestamp

4.7 Test Transmit (WebSocket) ​

In the beacon info modal:

  • [ ] Battery test: Click battery test button → response notification appears
  • [ ] Sensor test (sensor type): Click sensor test button → response notification
  • [ ] Watch/Panic test (watch/panic type): Click test button → response notification

4.8 Delete Beacon ​

  • [ ] Click delete icon → confirmation modal appears
  • [ ] Confirm → beacon removed from table
  • [ ] Cancel → beacon remains

4.9 Import Beacons ​

  • [ ] Click "Import Beacons" → import runs and shows summary notification with count

5. Gateways ​

5.1 Page Rendering ​

  • [ ] Gateway table renders with columns: ID, MAC, IP, Sticker Name, Location, Room, Tag, Actions
  • [ ] Existing gateways appear, sorted by IP

5.2 Create Gateway ​

  • [ ] Click "New Gateway" → modal opens
  • [ ] Fill in fields: MAC, MAC2, IP, short name, room, cable, tag, location (dropdown)
  • [ ] Submit → success notification, table updates
  • [ ] Cancel/X/Escape → no gateway created

5.3 Edit Gateway ​

  • [ ] Click edit icon → edit modal with pre-filled data
  • [ ] Modify fields → save → success notification

5.4 Delete Gateway ​

  • [ ] Click delete icon → confirmation modal
  • [ ] Confirm → gateway removed

5.5 Import Gateways ​

  • [ ] Click "Import Gateways" → import runs and shows summary notification

6. Maps ​

6.1 Page Rendering ​

  • [ ] Maps overview shows cards for each existing map
  • [ ] Each card displays name, location, file path, and Edit/Delete buttons
  • [ ] "Create Map" button is visible

6.2 Create Map ​

  • [ ] Click "Create Map" → modal opens
  • [ ] Fill in name, select location, choose an image file
  • [ ] File name label updates when file is selected
  • [ ] Submit → success notification, new map card appears
  • [ ] Submit without file → appropriate error
  • [ ] Cancel/X/Escape → modal closes without creating

6.3 Edit Map ​

  • [ ] Click "Edit" on a map card → edit modal with pre-filled data
  • [ ] Metadata-only update: Change name or location without new file → save → success
  • [ ] With new image: Select new file + update metadata → save → success

6.4 Delete Map ​

  • [ ] Click "Delete" on a map card → confirmation modal with map name shown
  • [ ] Confirm → map removed from overview
  • [ ] Cancel → map remains

7. Zones ​

7.1 Tab Navigation ​

  • [ ] Zones page loads with tabs: Overview, Track, Manage Zones, Debug
  • [ ] Clicking each tab switches the visible content
  • [ ] Active tab is visually highlighted

7.2 Overview Tab ​

  • [ ] Map listing sidebar shows available maps
  • [ ] Clicking a map item loads the zone overview canvas
  • [ ] Tracking status: Shows running/stopped indicator with correct icon
  • [ ] Algorithm display: Shows the current tracking algorithm as a readable label (e.g. "Zone voting"), or "None" while tracking is stopped
  • [ ] Algorithm select: Dropdown lists the available algorithms as readable labels with "Zone voting" (the default) first, followed by the other registered algorithms: Zone voting max, Zone voting v2, Zone voting v2 fast, Geo bayes, Fingerprint nb, Ref beacons, Centroid snap, Zone voting motion gate
  • [ ] Retired algorithms: "Brutus" and "Trilateration" are not offered
  • [ ] Algorithm preselection: Dropdown preselects the running algorithm, or "Zone voting" while tracking is stopped
  • [ ] Start Tracking: Click without touching the dropdown → tracking starts with Zone voting (status updates to running)
  • [ ] Stop Tracking: Click → tracking stops (status updates to stopped, algorithm display shows "None")
  • [ ] Change Algorithm: Select a different algorithm → click "Choose Algorithm" → algorithm switches and stays selected in the dropdown
  • [ ] Live overview (requires active tracking + beacons): Canvas shows real-time beacon positions via WebSocket updates

7.3 Manage Zones Tab ​

Map Management ​

  • [ ] Map listing sidebar shows maps with visible delete buttons
  • [ ] "New Map" button opens create map modal (same fields as Maps page)
  • [ ] "Edit Map" button is disabled until a map is selected
  • [ ] Select a map → "Edit Map" enables → click opens edit modal
  • [ ] Delete a map from sidebar → confirmation modal → map removed

Zone Editor Canvas ​

  • [ ] Select a map → editor canvas loads with map image background
  • [ ] Toolbar appears with buttons: Reset, Save, New Zone, Add Gateway, visibility/lock toggles

Zone Operations ​

  • [ ] Create Zone: Click "New Zone" → zone form modal opens
    • [ ] Fill in zone name and properties → submit → zone rectangle appears on canvas
    • [ ] Cancel → no zone created
  • [ ] Move Zone: Drag a zone rectangle → position updates
  • [ ] Resize Zone: Drag corner handles (TL/TR/BR/BL) → zone resizes
  • [ ] Edit Zone: Right-click a zone → zone form modal opens with pre-filled data
    • [ ] Modify fields → submit → zone updates on canvas
  • [ ] Delete Zone: Click the red X button on a zone → zone removed from canvas
  • [ ] Zone Connections:
    • [ ] In zone form modal, select a target zone from the connection dropdown → click Add → connection tag appears
    • [ ] Delete a connection tag → connection removed
    • [ ] Connections display as text overlays on zone rectangles

Gateway Placement ​

  • [ ] Click "Add Gateway" → modal shows list of unassigned gateways
  • [ ] Select a gateway → it appears on the canvas as a draggable circle with IP label
  • [ ] Drag a gateway → position updates
  • [ ] Right-click a gateway on map → gateway removed from map (unassigned)

Toolbar Toggles ​

  • [ ] Toggle Zones Visibility: Click → zones layer shows/hides
  • [ ] Toggle Gateways Visibility: Click → gateways layer shows/hides
  • [ ] Lock Zones: Click → zone drag/resize/delete handles disappear, interactions disabled
  • [ ] Lock Gateways: Click → gateway drag handles disappear

Save and Reset ​

  • [ ] Save: After making changes → click Save → changes persist to server
  • [ ] Reset: Click Reset → canvas reloads from server, discarding unsaved changes

7.4 Track Tab ​

  • [ ] Beacon select dropdown populated with active beacons
  • [ ] Select a beacon → click "Track" → canvas loads map with beacon's estimated area
  • [ ] Live tracking (requires active tracking): Canvas updates in real-time via WebSocket as beacon moves
  • [ ] Tracking rectangle updates position and camera follows

7.5 Debug Tab ​

  • [ ] Beacon select dropdown populated with active beacons
  • [ ] Select a beacon → click "Debug" → debug panel opens
  • [ ] Panel shows: current algorithm, beacon MAC, predictions per second, last prediction
  • [ ] Terminal: Streaming log lines appear in the debug terminal via WebSocket
  • [ ] Predictions per second counter updates periodically

8. Navigation ​

8.1 Tab Navigation ​

  • [ ] Navigation page loads with tabs: Overview, Floors, Beacons
  • [ ] Clicking each tab switches content

8.2 Overview Tab ​

  • [ ] Summary cards display: floor count, total navigation beacons, assigned beacons, total nodes, total edges
  • [ ] Values match expected data

8.3 Floors Tab ​

Floor Management ​

  • [ ] Floor listing sidebar shows existing floors
  • [ ] "New Floor" button opens create floor modal
    • [ ] Fill in name, select location, optionally select map → submit → new floor appears in listing
    • [ ] Cancel → no floor created
  • [ ] "Edit Floor" button is disabled until a floor is selected
  • [ ] Select a floor → "Edit Floor" enables → opens edit modal
    • [ ] Pre-filled with floor data including compass angle and map scale
    • [ ] Modify and save → success notification
  • [ ] Delete a floor from listing → confirmation modal → floor removed

Graph Editor Canvas ​

  • [ ] Select a floor → canvas loads with map background, existing nodes, edges, and navigation beacons
  • [ ] Graph Tools box appears with tool buttons and calibration inputs

Tool: Select (Default) ​

  • [ ] Click a node → it is selected
  • [ ] Drag a node → node moves, connected edges redraw
  • [ ] Drag a navigation beacon → beacon moves on canvas

Tool: Add Node ​

  • [ ] Activate "Add Node" tool
  • [ ] Click on canvas → new node appears at click position

Tool: Connect ​

  • [ ] Activate "Connect" tool
  • [ ] Click one node, then click another → edge created between them with auto-calculated weight
  • [ ] Attempting to create a duplicate edge is prevented
  • [ ] Right-click a node → node and its edges are deleted

Tool: Ruler ​

  • [ ] Activate "Ruler" tool
  • [ ] Click two points on canvas → measurement line with distance label appears

Edge Interaction ​

  • [ ] Right-click an edge → edge is deleted

Calibration ​

  • [ ] Modify compass angle input → value stored for save
  • [ ] Modify map scale input → value stored for save

Save and Discard ​

  • [ ] Save Graph: Click → beacon positions, graph (nodes/edges/deletions), and calibration are all saved to server
  • [ ] Discard: Click → all unsaved changes are cleared, canvas reloads from server
  • [ ] Unsaved changes counter updates as changes are made

8.4 Beacons Tab ​

  • [ ] Table shows navigation beacons with: Name, MAC, Unique Name, Floor, X, Y, POI, Static
  • [ ] Data is read-only (no edit controls in this tab)
  • [ ] Values match beacons assigned to navigation floors

9. Users ​

9.1 Page Rendering ​

  • [ ] User table renders with columns: ID, Email, Role (Admin/User), Actions
  • [ ] Existing users appear in the table
  • [ ] The main admin (ID 1) does not have a Delete button

9.2 Create User ​

  • [ ] Click "New User" → modal opens
  • [ ] Fill in email, password, repeat password
  • [ ] Toggle admin checkbox
  • [ ] Submit → success notification, new user appears in table
  • [ ] Password mismatch: Enter different passwords → appropriate error
  • [ ] Cancel/X/Escape → no user created

9.3 Change Password ​

  • [ ] Click "Change Password" on a user row → modal opens
  • [ ] Enter new password and repeat → submit → success notification
  • [ ] Password mismatch: Enter different passwords → appropriate error

9.4 Delete User ​

  • [ ] Click "Delete" on a non-admin user → user removed
  • [ ] Verify that user ID 1 (main admin) cannot be deleted (no delete button present)

10. Sensors ​

Feature Gated

The Sensors page is only accessible when "sensors" is in the server's feature list. If the Sensors navbar item is not visible, verify server_features includes "sensors" (or "safecall").

10.1 Page Rendering ​

  • [ ] Sensors page loads with Alerts and Charts sections

10.2 Alerts Section ​

  • [ ] Loading indicator appears, then either:
    • [ ] Success notification: "No alerts" (if no alerts)
    • [ ] Table of alerts: beacon name, sensor MAC, type, value, expected range, last occurred

10.3 Charts Section ​

  • [ ] Loading indicator appears, then Chart.js line charts render
  • [ ] One chart per sensor type (Temperature, Humidity, Battery)
  • [ ] Charts show per-beacon lines with tooltips
  • [ ] Legend toggles individual beacon lines on/off

11. Gateway ID Tool ​

11.1 Page Rendering ​

  • [ ] Page loads with scan configuration inputs, results area, and scan history

11.2 Scan Configuration ​

  • [ ] Enter a beacon MAC (without colons)
  • [ ] Select scan duration from dropdown (3–30 seconds)
  • [ ] Set RSSI cutoff value

11.3 Running a Scan ​

  • [ ] Click "Scan" → button disables, loading state shown
  • [ ] Progress bar fills over the scan duration
  • [ ] Countdown timer updates
  • [ ] WebSocket status indicator shows Connected (green)

11.4 Scan Results ​

  • [ ] After scan completes:
    • [ ] Summary notification showing best gateway (or "no result" if none above cutoff)
    • [ ] Detailed table: Rank, Gateway MAC, IP, Average RSSI, Min, Max, Sample Count
    • [ ] Footer summarizes settings used

11.5 Scan History ​

  • [ ] Each completed scan adds a row: Time, MAC, Settings, Best Gateway, Gateway Count
  • [ ] Clear History: Click → history table empties

11.6 WebSocket Status ​

  • [ ] If WebSocket drops → status indicator changes to Disconnected (red)
  • [ ] Reconnection attempts show appropriate feedback

12. Placement Planner Tool ​

12.1 Initial State ​

  • [ ] Page shows file upload area and empty state message
  • [ ] No canvas or tools visible until a map is uploaded

12.2 Map Upload ​

  • [ ] Select an image file → map loads on canvas
  • [ ] Map dimensions display in the info area
  • [ ] Scale, mode, areas, actions, export, and stats boxes become visible

12.3 Scale Configuration ​

  • [ ] Enter pixels value → meters value updates proportionally
  • [ ] Enter meters value → pixels value updates proportionally
  • [ ] Device range circles resize when scale changes

12.4 Planning Mode ​

  • [ ] RTLS mode: Select RTLS radio → RTLS parameter inputs appear (min spacing, max distance)
  • [ ] Navigation mode: Select Navigation radio → Navigation parameter inputs appear (min spacing, max distance, range)
  • [ ] Device icons change color/label based on mode

12.5 Canvas Tools ​

Select Tool (Default) ​

  • [ ] Drag devices → they move on canvas
  • [ ] Drag usable areas → they move
  • [ ] Middle/right-click drag → canvas pans

Add Area Tool ​

  • [ ] Click and drag on canvas → rectangle area drawn
  • [ ] Release → area finalized, appears in the areas list with name and meter dimensions
  • [ ] Minimum size enforced (very small drags are ignored)

Add Device Tool ​

  • [ ] Click on canvas → device placed at click position

Delete Tool ​

  • [ ] Click on a device → device removed
  • [ ] Click on an area → area removed

12.6 Actions ​

  • [ ] Generate: Click → clears existing devices, generates suggested placements based on usable areas and spacing parameters
  • [ ] Clear Devices: Click → all devices removed, areas remain
  • [ ] Clear All: Click → all devices and areas removed

12.7 Usable Areas List ​

  • [ ] Each area shows name and dimensions in meters
  • [ ] Delete button on each area → area removed from list and canvas

12.8 Stats ​

  • [ ] Device count updates as devices are added/removed/generated
  • [ ] Area count updates as areas are added/removed

12.9 Export ​

  • [ ] Export Image: Click → PNG file downloads with current canvas view
  • [ ] Print: Click → new window opens with rendered image and summary, print dialog triggers

13. Cross-Cutting Concerns ​

13.1 Modal Behavior (All Pages) ​

Test on any page that has modals (Locations, Beacons, Gateways, Maps, Users, Zones, Navigation):

  • [ ] Close via X button: Click the X in the modal header → modal closes
  • [ ] Close via Cancel button: Click Cancel in the modal footer → modal closes
  • [ ] Close via Escape key: Press Escape → modal closes
  • [ ] Draggable modals: Drag the modal by its header handle → modal moves on screen
  • [ ] No data loss warning: If a form has unsaved input and modal is closed, no stale data persists when reopening

13.2 Notifications ​

  • [ ] Success notifications: Green notification appears after successful CRUD operations
  • [ ] Error notifications: Red notification appears on errors (network, validation, server)
  • [ ] Notifications are dismissible or auto-expire

13.3 Responsive Layout ​

  • [ ] Desktop (> 1024px): Full navbar, multi-column layouts
  • [ ] Tablet (768–1024px): Layout adjusts, tables may scroll horizontally
  • [ ] Mobile (< 768px): Burger menu, stacked layouts, touch-friendly targets

13.4 Canvas Interactions (Zones, Navigation, Placement Planner) ​

  • [ ] Mouse wheel zoom: Scroll to zoom in/out on canvas
  • [ ] Pan: Middle-click drag or viewport drag to move the canvas view
  • [ ] Touch support: Pinch-to-zoom works on touch devices
  • [ ] No page scroll: Mouse wheel over canvas does not scroll the page

13.5 Authentication Persistence ​

  • [ ] Refresh the page while logged in → session persists, returns to Dashboard
  • [ ] Close and reopen the browser → session persists via localStorage JWT
  • [ ] Token expiration → redirected to login page

13.6 Admin vs Regular User ​

  • [ ] Log in as a regular (non-admin) user
  • [ ] Verify that admin-only pages (Locations, Beacons, Gateways, Maps, Zones, Navigation, Users, Sensors) show access denied or are not navigable
  • [ ] Dashboard, Gateway ID, and Placement Planner remain accessible

14. Feature Flag Variations ​

14.1 All Features Enabled ("safecall") ​

  • [ ] All navbar items are visible
  • [ ] All pages load and function as described above

14.2 Sensors Disabled ​

Set server_features to exclude "sensors" (e.g., ["navigation", "alerting", "rtls"]):

  • [ ] Sensors navbar item is hidden
  • [ ] Navigating directly to a sensors-related action shows no content or is blocked

14.3 Minimal Features ​

Test with only specific features enabled (e.g., ["navigation"] only):

  • [ ] Only navigation-related functionality is expected to work end-to-end
  • [ ] Other pages may render but dependent API calls may fail gracefully

15. WebSocket Features ​

15.1 Connection Management ​

  • [ ] WebSocket connects on pages that need it (Zones overview/track/debug, Gateway ID, Beacon test sends)
  • [ ] Connection established notification appears (where notifications are enabled)
  • [ ] If server WebSocket drops, error/close notification appears
  • [ ] Reconnection retries with backoff (up to 3 attempts for sends)

15.2 Live Data Streams ​

  • [ ] Zones Overview: Real-time beacon position updates on the overview canvas
  • [ ] Zones Track: Live tracking rectangle follows the tracked beacon
  • [ ] Zones Debug: Streaming log lines in the debug terminal
  • [ ] Gateway ID: Real-time RSSI readings during scan

16. Visual Interface Template Designer ​

16.1 Library, roles, and cloning ​

  • [ ] Open Users → Interface templates and create a template; name, target role, and starter layout are required
  • [ ] The designer shows the role as a locked badge and offers no role selector
  • [ ] Clone a maintenance template to user; incompatible maintenance blocks are listed and cloning remains disabled until removal is confirmed
  • [ ] Delete a custom template; the default template has no Delete action

16.2 Structure editing ​

  • [ ] Add, rename, reorder, and remove tabs
  • [ ] Add each row preset (full, 6/6, 8/4, 4/8, three equal, four equal)
  • [ ] Drag a block from the palette, reorder it, and move it between columns
  • [ ] Perform the same movement with the visible arrow controls
  • [ ] Change an advanced width and confirm the linked column keeps the row total at 12
  • [ ] Configure sensor charts and the readings table in Properties
  • [ ] Undo and redo edits; leave with dirty changes and verify the discard prompt

16.3 Preview and saved runtime ​

  • [ ] Mock preview shows representative content for user and maintenance blocks
  • [ ] Live preview can select only users matching the template role and displays their location-scoped data
  • [ ] Preview controls cannot navigate, export, mutate data, or start a WebSocket
  • [ ] Switch desktop/tablet/mobile preview widths
  • [ ] Save, reload the designer, and verify the layout persists
  • [ ] Log in as an assigned user: columns are side-by-side at desktop width and stack at mobile width
  • [ ] Spot-check all designer surfaces in the default dark theme

Quick Reference: Page Access Matrix ​

PageRequires LoginRequires AdminFeature Gated
LoginNoNo—
DashboardYesNo—
LocationsYesYes—
BeaconsYesYes—
GatewaysYesYes—
MapsYesYes—
ZonesYesYes—
NavigationYesYes—
UsersYesYes—
SensorsYesYessensors
Gateway IDYesNo—
Placement PlannerYesNo—