Skip to content

xControl UI⚓︎

xControl, the Expeto Management portal, is verified at three levels: unit tests of the front-end code on every change, a browser suite that drives the portal in a real Chromium browser against a real xControl backend and front end, and the browser checks that the platform end-to-end suites make against the deployed portal. This page lists what the browser suite covers, test by test, and the wider UI regression scope it is drawn from.

The browser suite⚓︎

The suite is written in TypeScript on Playwright and runs in Chromium. It does not use mocks or network stubs. Before a run, the pipeline starts a real xControl backend with a seeded in-memory database and generated data, a front end built from the commit under test, and the browser container that drives them; every test acts on the portal the way an administrator does, through the rendered pages. Traces are retained for failed tests, video is recorded for every test, and an HTML report is published as a pipeline artifact.

Tests carry the TestRail case identifiers of the manual regression cases they cover, either in the test title or in the titles of the steps inside the test. The suite authenticates with the ADMIN role; Customer-Admin and Read-Only behaviour is in the manual scope.

The browser suite holds 74 tests in 11 specification files. 70 run in the default selection, 17 of them as the end-to-end sanity chain; the other 5 seed data or authenticate before a run. The tests carry 53 distinct TestRail case identifiers. Of the 137 cases in the UI regression scope below, 56 are covered by a browser test; the remainder stay in the manual regression scope.

The browser suite is a manual, non-blocking job in the front-end pipeline, started before an xControl release. The gates that run on every merge request to the front end are the type check, the linter and the unit tests.

Specification file Area Test TestRail cases Default run
account.spec.ts Accounts C256 - Filter Columns by IP Origin and Email Address C256 Yes
C257 - Filter Columns by First Attempt and Email Address C257 Yes
C258 - Filter Columns by IP Origin and Last Attempt C258 Yes
Create, search, edit, delete new account C252, C255, C254, C253 Yes
C263 - Display default columns C263 Yes
C264 - None selected in the table columns C264 Yes
C259 - Display Only List of Accounts C259 Yes
C260 - Display Only Audit C260 Yes
customer.spec.ts Customers Create, edit, delete new customer as SuperAdmin C6, C50, C200, C209 Yes
Create, edit, delete new customer with extensions as SuperAdmin C6, C207, C208, C209 Yes
keysets.spec.ts Keysets Create, edit, delete keysets C265, C267, C266 Yes
C273 - Verify "Reset List" Button Functionality C273 Yes
C274 - Verify Behavior with no columns selected C274 Yes
Filter columns C275, C276 Yes
mobile.assets.spec.ts Mobile Assets Create a new Mobile Asset C269 Yes
Search, filter mobile asset C272, C270, C271 Yes
Delete created Mobile Asset — Yes
Verify columns track — Yes
Regression check - Spruce Issue #1255 - Unable to search mobile assets by ICCID — Yes
C284 - Verify "Reset List" Button Functionality C284 Yes
C279 - Reset Tiles to Default C279 Yes
C278 - Display Only Data Usage Tile C278 Yes
private.radio.spec.ts Private Radios Create New Private Radio — Yes
Delete Private Radio — Yes
reports.spec.ts Reports C320 - Generate Detailed usage report with Valid Parameters C320 Yes
C321 - Generate Summary usage report - By IMSI with Valid Parameters C321 Yes
C322 - Generate Summary usage report - By System with Valid Parameters C322 Yes
C323 - Generate Summary usage report with Valid Parameters C323 Yes
C324 - Generate Active devices by site report with Valid Parameters C324 Yes
C325 - Generate Active devices report with Valid Parameters C325 Yes
C328 - Filter Columns by ID and Report Name C328 Yes
C329 - Filter Columns by ID and Generated by C329 Yes
C330 - Filter Columns by Report Name and Initiated C330 Yes
C331 - Filter Columns by Report Config and Completed C331 Yes
C332 - Filter Columns by Status and Owned by C332 Yes
C333 - Filter Columns by ID and Status C333 Yes
C334 - Filter Columns by Generated by and Owned by C334 Yes
C335 - Filter Columns by Report Config and Initiated C335 Yes
C336 - Verify "Reset List" Button Functionality C336 Yes
sanity.spec.ts End-to-end sanity chain Create Customer — Yes
Create Account — Yes
Create Keyset — Yes
Create Site & Private Radio — Yes
Create APN Global — Yes
Create System Profile & APN Profile — Yes
Create System — Yes
Create Mobile Asset — Yes
Delete Mobile Asset — Yes
Delete APN Profile — Yes
Delete System Profile — Yes
Delete APN Global — Yes
Delete System — Yes
Delete Site — Yes
Delete Keyset — Yes
Delete Account — Yes
Delete Customer — Yes
sites.spec.ts Sites Search sites — Yes
C293 - Display only Name and Customer Columns in the sites details table C293 Yes
C294 - Display only Status and Systems Columns in the sites details table C294 Yes
C295 - Display only Private Radios and Type Columns in the sites details table C295 Yes
C296 - Display only Name and Status Columns in the sites details table C296 Yes
system-profiles.spec.ts System Profiles and APNs Add a new global APN — Yes
Add a new System Profile — Yes
Add a new APN Profile to the System Profile — Yes
Delete APNProfile from System Profile — Yes
Delete System Profile — Yes
Delete global APN — Yes
systems.spec.ts Systems C299 - Display Name and State Columns in the Systems Details table C299 Yes
C302 - Verify "Reset list" Button Functionality C302 Yes
C301 - Verify Default columns in the Systems Details table C301 Yes
setup.spec.ts Seed data (setup only) Create Customer — No
Create Keyset — No
Create Site — No
Create System — No
auth.setup.ts Login (setup project) Authenticate admin user — No

Checks made by the platform suites⚓︎

The platform end-to-end suites also open the deployed portal in a browser. They sign in through the identity provider and confirm that a first login creates the account, open a Site's detail page and confirm that its status is not Offline and its agent version matches the deployed chart, open the documentation sites served by the deployment and check their navigation, and confirm that no device lookup is purchased from an external service while sessions are generated.

UI regression scope⚓︎

The following is the full UI regression scope for xControl, by functional area. It is included for reference: it shows the breadth of behaviour the portal is checked against, from every create, edit and delete flow to list filtering, pagination, column selection, reporting and export. The Automated by column names the browser tests that cover a case; the mapping is kept in the documentation sources from the case identifiers and test titles in the suite's code, and is updated when the suite changes.

APNs (11 cases, 2 automated)

Case Automated by
APNs page - Create APN Global system-profiles.spec.ts: Add a new global APN
sanity.spec.ts: Create APN Global
APNs page - Delete apn system-profiles.spec.ts: Delete global APN
sanity.spec.ts: Delete APN Global
APNs page - Edit APN —
APNs page - Filter by Customer and Max Upload (Mbps) with Max Download (Mbps) —
APNs page - Filter by Customer with Max Download (Mbps) only —
APNs page - Filter by Max Upload (Mbps) and Max Download (Mbps) only —
APNs page - Filter by Name and Customer with Max Download (Mbps) only —
APNs page - Filter by Name and Customer with Max Upload (Mbps) only —
APNs page - Filter by Name and Max Upload (Mbps) with Max Download (Mbps) only —
APNs page - Filter by Name with Max Download (Mbps) only —
APNs page - Filter by Name, Customer, Max Upload (Mbps), and Max Download (Mbps) —

Accounts (24 cases, 11 automated)

Case Automated by
Account - Verify Records Per Page Limit —
Account - Verify Records Per Page Limit in the Accounts Table —
Account - Verify Specific Page Navigation in the Accounts Table —
Accounts - Verify Failed to login —
Accounts - Verify Specific Page Navigation —
Accounts - Verify audit log of the current user's last login —
Accounts Page - Accounts list pagination —
Accounts page - Display Only Audit Tile account.spec.ts: C260 - Display Only Audit
Accounts page - Display Only List of Accounts Tile account.spec.ts: C259 - Display Only List of Accounts
Accounts page - Display default columns account.spec.ts: C263 - Display default columns
Accounts page - Filter Columns by Email Address and First Attempt account.spec.ts: C257 - Filter Columns by First Attempt and Email Address
Accounts page - Filter Columns by Email Address and IP Origin account.spec.ts: C256 - Filter Columns by IP Origin and Email Address
Accounts page - Filter Columns by IP Origin and Last Attempt account.spec.ts: C258 - Filter Columns by IP Origin and Last Attempt
Accounts page - None selected in the table columns account.spec.ts: C264 - None selected in the table columns
Accounts page - Show all tiles in Accounts page —
Accounts page - Verify "Reset List" Button Functionality —
Accounts page - Verify Functionality of Next and Previous Buttons —
Create new Account as Admin account.spec.ts: Create, search, edit, delete new account
sanity.spec.ts: Create Account
Create new Account as Customer —
Create new Account as Read-Only Customer —
Delete Account account.spec.ts: Create, search, edit, delete new account
sanity.spec.ts: Delete Account
Edit account as Admin account.spec.ts: Create, search, edit, delete new account
Search account account.spec.ts: Create, search, edit, delete new account
Search by customer —

Customers (16 cases, 5 automated)

Case Automated by
Create new Customer as Admin customer.spec.ts: Create, edit, delete new customer as SuperAdmin
sanity.spec.ts: Create Customer
Create new Customer as Customer-Admin —
Customers - Display Only Mobile Assets Column —
Customers - Display Only Sites Column —
Customers - Display Only Systems Column —
Delete Customer Extensions as Admin customer.spec.ts: Create, edit, delete new customer with extensions as SuperAdmin
Delete Customer Extensions as Customer-Admin —
Delete existing customer as Admin customer.spec.ts: Create, edit, delete new customer as SuperAdmin
sanity.spec.ts: Delete Customer
Delete existing customer as Customer-Admin —
Delete existing customer as Read-Only —
Edit Customer Extensions as Admin customer.spec.ts: Create, edit, delete new customer with extensions as SuperAdmin
Edit existing customer as Admin customer.spec.ts: Create, edit, delete new customer as SuperAdmin
Edit existing customer as Customer-Admin —
Edit existing customer as Read-Only —
Filter Customers by status —
Filter by customer —

Home (1 case, 0 automated)

Case Automated by
Home - Overview metrics —

Keysets (7 cases, 7 automated)

Case Automated by
Add New Keyset keysets.spec.ts: Create, edit, delete keysets
sanity.spec.ts: Create Keyset
Delete Keyset keysets.spec.ts: Create, edit, delete keysets
sanity.spec.ts: Delete Keyset
Edit Keyset keysets.spec.ts: Create, edit, delete keysets
Keysets page - Filter by Customer keysets.spec.ts: Filter columns
Keysets page - Filter by Name keysets.spec.ts: Filter columns
Keysets page - Verify "Reset List" Button Functionality keysets.spec.ts: C273 - Verify "Reset List" Button Functionality
Keysets page - Verify Behavior with no columns selected keysets.spec.ts: C274 - Verify Behavior with no columns selected

Login (2 cases, 1 automated)

Case Automated by
Login to xControl with Admin role auth.setup.ts: Authenticate admin user
Logout from xControl —

Mobile Assets (18 cases, 6 automated)

Case Automated by
Create New Mobile Assets mobile.assets.spec.ts: Create a new Mobile Asset
sanity.spec.ts: Create Mobile Asset
Display All Columns in the Mobile Assets Details Table —
Display Only Connected or Disconnected Since Column in the Mobile Assets Details Table —
Display Only IMSI and IMEI Columns in the Mobile Assets Details Table —
Download Mobile Assets as .CSV File —
Filter Mobile Assets by system mobile.assets.spec.ts: Search, filter mobile asset
Mobile Assets - Delete bulk —
Mobile Assets - Display All Tiles —
Mobile Assets - Display Only Data Usage Tile mobile.assets.spec.ts: C278 - Display Only Data Usage Tile
Mobile Assets - Display Only Mobile Assets Details Tile —
Mobile Assets - Display Only Overview Tile —
Mobile Assets - Display deafult columns on the table —
Mobile Assets - Edit bulk —
Mobile Assets - Edit bulk as Customer Admin —
Mobile Assets - Reset Tiles to Default mobile.assets.spec.ts: C279 - Reset Tiles to Default
Mobile Assets - Verify "Reset List" Button Functionality mobile.assets.spec.ts: C284 - Verify "Reset List" Button Functionality
Mobile Assets Page - Overview metrics —
Search mobile assets mobile.assets.spec.ts: Search, filter mobile asset

Private Radios (5 cases, 1 automated)

Case Automated by
Create New Private Radio private.radio.spec.ts: Create New Private Radio
sanity.spec.ts: Create Site & Private Radio
Deselect All Columns in the Private Radios Details table —
Display Private Radio ID and Site Columns —
Private Radios - Verify "Reset Tiles" Button Functionality —
Verify Default columns in the Private Radios Details table —

Profiles (7 cases, 0 automated)

Case Automated by
Create New Profile —
Create New Profile with extensions —
Delete profile —
Edit profile —
Profiles - Display Only System Column —
Profiles - Display Only Customer Column —
Search profile —

Reports (16 cases, 14 automated)

Case Automated by
Download Report from the "Generated Reports" table as Admin —
Download Report from the "Generated Reports" table as Customer-Admin —
Generate a Detailed Usage Report with Valid Parameters reports.spec.ts: C320 - Generate Detailed usage report with Valid Parameters
Generate a Summary Usage Report - By IMSI with Valid Parameters reports.spec.ts: C321 - Generate Summary usage report - By IMSI with Valid Parameters
Generate a Summary Usage Report - By System with Valid Parameters reports.spec.ts: C322 - Generate Summary usage report - By System with Valid Parameters
Generate a Summary Usage Report with Valid Parameters reports.spec.ts: C323 - Generate Summary usage report with Valid Parameters
Generate an Active Devices Report with Valid Parameters reports.spec.ts: C325 - Generate Active devices report with Valid Parameters
Generate an Active Devices by Site Report with Valid Parameters reports.spec.ts: C324 - Generate Active devices by site report with Valid Parameters
Reports page - Filter Columns by Generated by and Owned by reports.spec.ts: C334 - Filter Columns by Generated by and Owned by
Reports page - Filter Columns by ID and Generated by reports.spec.ts: C329 - Filter Columns by ID and Generated by
Reports page - Filter Columns by ID and Report Name reports.spec.ts: C328 - Filter Columns by ID and Report Name
Reports page - Filter Columns by ID and Status reports.spec.ts: C333 - Filter Columns by ID and Status
Reports page - Filter Columns by Report Config and Completed reports.spec.ts: C331 - Filter Columns by Report Config and Completed
Reports page - Filter Columns by Report Config and Initiated reports.spec.ts: C335 - Filter Columns by Report Config and Initiated
Reports page - Filter Columns by Report Name and Initiated reports.spec.ts: C330 - Filter Columns by Report Name and Initiated
Reports page - Verify "Reset List" Button Functionality reports.spec.ts: C336 - Verify "Reset List" Button Functionality

Sites (9 cases, 2 automated)

Case Automated by
Add custom extensions to a Site —
Create Sites as SuperUser sanity.spec.ts: Create Site & Private Radio
Deselect All Columns in the Sites Details List on the Sites Page —
Search sites sites.spec.ts: Search sites
Sites Page - Overview metrics —
Verify Associated System(s) —
Verify Default columns in the Sites Details list on Sites page —
Verify General Information of a Site —
Verify Name columns in the Sites Details list on Sites page —

System Profile (8 cases, 3 automated)

Case Automated by
Systems profile page - Filter by "Customer" Column —
Systems profile page - Filter by "Name" Column —
Systems profile page - Filter by "System" Column —
Systems profile page - Create systems profile system-profiles.spec.ts: Add a new System Profile
sanity.spec.ts: Create System Profile & APN Profile
Systems profile page - Delete systems profile system-profiles.spec.ts: Delete System Profile
sanity.spec.ts: Delete System Profile
Systems profile page - Reset Column Selection to Default —
Systems profile page - Search by name profile —
Systems profile page.- Edit system profile system-profiles.spec.ts: Add a new APN Profile to the System Profile

Systems (13 cases, 4 automated)

Case Automated by
Create systems sanity.spec.ts: Create System
Delete a System sanity.spec.ts: Delete System
Deselect All Columns in the Systems Details table —
Display Name and State Columns in the Systems Details table systems.spec.ts: C299 - Display Name and State Columns in the Systems Details table
Edit systems extensions —
Export System Details as .JPEG File —
Export System Details as .PNG File —
Export System Details as .SVG File —
Systems - Edit system name —
Systems - Enable/disable status —
Systems - Verify "Reset Tiles" Button Functionality —
Systems - Verify Default columns in the Systems Details table systems.spec.ts: C301 - Verify Default columns in the Systems Details table
Systems Page - Overview metrics —