feat(webui): unify dashboard into 4 primary tabs and administration subtabs row, deprecate separate client-info
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m24s
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m24s
This commit is contained in:
+76
-911
File diff suppressed because it is too large
Load Diff
@@ -824,16 +824,16 @@ class TestServerComponent(unittest.TestCase):
|
|||||||
html_content = resp.body.decode("utf-8")
|
html_content = resp.body.decode("utf-8")
|
||||||
|
|
||||||
# Verify clean tab buttons without number suffixes
|
# Verify clean tab buttons without number suffixes
|
||||||
self.assertIn('>💻 Forwarders</button>', html_content)
|
self.assertIn('>💻 Fleet Forwarders</button>', html_content)
|
||||||
self.assertIn('>🏢 Server Roles</button>', html_content)
|
self.assertIn('>🖥️ Server Roles & Client Directory</button>', html_content)
|
||||||
self.assertIn('>📊 Telemetry</button>', html_content)
|
self.assertIn('>📊 Events</button>', html_content)
|
||||||
self.assertIn('>📜 Events</button>', html_content)
|
self.assertIn('>⚙️ Administration', html_content)
|
||||||
self.assertIn('>⚙️ Settings', html_content)
|
self.assertIn('>🤖 Hermes AI & Tokens</button>', html_content)
|
||||||
self.assertIn('>📜 Sub-CA & Licensing</button>', html_content)
|
self.assertIn('>📜 Sub-CA & Licensing</button>', html_content)
|
||||||
self.assertIn('>💾 DB Engine</button>', html_content)
|
self.assertIn('>💾 DB Engine</button>', html_content)
|
||||||
self.assertIn('>🤖 Hermes AI & Tokens</button>', html_content)
|
self.assertIn('>📦 Updates & Distribution', html_content)
|
||||||
self.assertNotIn('🟢 UNLOCKED', html_content)
|
self.assertNotIn('🟢 UNLOCKED', html_content)
|
||||||
self.assertNotIn('Forwarders (', html_content)
|
self.assertNotIn('Fleet Forwarders (', html_content)
|
||||||
|
|
||||||
# Verify Licensed Capabilities card is present
|
# Verify Licensed Capabilities card is present
|
||||||
self.assertIn('Licensed Capabilities & Feature Modules', html_content)
|
self.assertIn('Licensed Capabilities & Feature Modules', html_content)
|
||||||
|
|||||||
@@ -173,30 +173,36 @@ class TestServerRolesAndBestPractices(unittest.TestCase):
|
|||||||
self.assertIn("Node Telemetry & Server Roles Inventory", res_follow.text)
|
self.assertIn("Node Telemetry & Server Roles Inventory", res_follow.text)
|
||||||
|
|
||||||
def test_dashboard_tabs_structure(self):
|
def test_dashboard_tabs_structure(self):
|
||||||
"""Verifies primary tabs (Forwarders, Server Roles, Telemetry, Events, Settings) and secondary settings subtabs (Sub-CA, DB, Updates, Hermes)."""
|
"""Verifies primary tabs (Fleet Forwarders, Server Roles & Client Directory, Events, Administration) and secondary admin subtabs (Hermes, Sub-CA, DB, Updates)."""
|
||||||
res = self.client.get("/webui", cookies={SessionManager.SESSION_COOKIE_NAME: self.session_token})
|
res = self.client.get("/webui", cookies={SessionManager.SESSION_COOKIE_NAME: self.session_token})
|
||||||
self.assertEqual(res.status_code, 200)
|
self.assertEqual(res.status_code, 200)
|
||||||
html = res.text
|
html = res.text
|
||||||
|
|
||||||
# Primary navigation tabs
|
# Primary navigation tabs (only 4 tabs on top row)
|
||||||
self.assertIn("id=\"mainTabsNav\"", html)
|
self.assertIn("id=\"mainTabsNav\"", html)
|
||||||
self.assertIn("id=\"tabBtn-fleet\"", html)
|
self.assertIn("id=\"tabBtn-fleet\"", html)
|
||||||
|
self.assertIn(">💻 Fleet Forwarders</button>", html)
|
||||||
self.assertIn("id=\"tabBtn-server-roles\"", html)
|
self.assertIn("id=\"tabBtn-server-roles\"", html)
|
||||||
self.assertIn("id=\"tabBtn-telemetry\"", html)
|
self.assertIn(">🖥️ Server Roles & Client Directory</button>", html)
|
||||||
self.assertIn("id=\"tabBtn-events\"", html)
|
self.assertIn("id=\"tabBtn-events\"", html)
|
||||||
self.assertIn("id=\"tabBtn-settings\"", html)
|
self.assertIn(">📊 Events</button>", html)
|
||||||
|
self.assertIn("id=\"tabBtn-admin\"", html)
|
||||||
|
self.assertIn(">⚙️ Administration", html)
|
||||||
|
|
||||||
# Settings sub-navigation tabs (row below)
|
# Administration sub-navigation tabs (row below)
|
||||||
self.assertIn("id=\"settingsSubtabs\"", html)
|
self.assertIn("id=\"adminSubtabs\"", html)
|
||||||
self.assertIn("id=\"tabBtn-pki\"", html)
|
|
||||||
self.assertIn("id=\"tabBtn-db\"", html)
|
|
||||||
self.assertIn("id=\"tabBtn-updates\"", html)
|
|
||||||
self.assertIn("id=\"tabBtn-hermes\"", html)
|
self.assertIn("id=\"tabBtn-hermes\"", html)
|
||||||
|
self.assertIn(">🤖 Hermes AI & Tokens</button>", html)
|
||||||
|
self.assertIn("id=\"tabBtn-pki\"", html)
|
||||||
|
self.assertIn(">📜 Sub-CA & Licensing</button>", html)
|
||||||
|
self.assertIn("id=\"tabBtn-db\"", html)
|
||||||
|
self.assertIn(">💾 DB Engine</button>", html)
|
||||||
|
self.assertIn("id=\"tabBtn-updates\"", html)
|
||||||
|
self.assertIn(">📦 Updates & Distribution", html)
|
||||||
|
|
||||||
# Tab panes
|
# Tab panes
|
||||||
self.assertIn("id=\"tabPane-fleet\"", html)
|
self.assertIn("id=\"tabPane-fleet\"", html)
|
||||||
self.assertIn("id=\"tabPane-server-roles\"", html)
|
self.assertIn("id=\"tabPane-server-roles\"", html)
|
||||||
self.assertIn("id=\"tabPane-telemetry\"", html)
|
|
||||||
self.assertIn("id=\"tabPane-events\"", html)
|
self.assertIn("id=\"tabPane-events\"", html)
|
||||||
self.assertIn("id=\"tabPane-pki\"", html)
|
self.assertIn("id=\"tabPane-pki\"", html)
|
||||||
self.assertIn("id=\"tabPane-db\"", html)
|
self.assertIn("id=\"tabPane-db\"", html)
|
||||||
|
|||||||
Reference in New Issue
Block a user