6.7 KiB
settings-about Specification
Purpose
The Settings page: viewer preferences that shape how every page renders, and an About tab that shows versions, schema compatibility, migration, retention and storage as reported by the server.
Requirements
Requirement: Settings tabs
Edition: CE. /settings SHALL show two tabs, Preferences and About, selected by the tab query parameter
(preferences by default); switching tabs writes tab to the URL.
Scenario: Deep link to About
- GIVEN
/settings?tab=about - WHEN the page opens
- THEN the About tab is active and focused
Requirement: Viewer preferences
Edition: CE. Preferences SHALL offer theme (system/light/dark), default time zone (browser zone shown by name, or any IANA zone), default range preset, rows per page (10/25/50/100) and one auto-refresh interval for live views (off/10 s/30 s/1 min/5 min), none for Analytics; other stored intervals are ignored. Changes save at once with a "Saved" toast; a new default zone also becomes the session zone. "Reset to defaults" restores system theme, browser zone, last 24 h, 25 rows and 10 s.
Scenario: Change rows per page
- GIVEN rows per page set to 50
- WHEN the user opens
/egresswithoutlimit - THEN the list shows 50 rows
Scenario: Reset
- GIVEN customised preferences
- WHEN the user presses "Reset to defaults"
- THEN every control shows its default and the stored preferences are cleared
Scenario: One auto-refresh setting
- WHEN the Preferences tab renders
- THEN it shows one auto-refresh control, "Auto-refresh of live views", and none for Analytics
Scenario: Stored interval of another kind
- GIVEN stored preferences with a 50-row page size and
refreshMs.historyof 30 s - WHEN the dashboard loads them
- THEN lists show 50 rows, the
historyinterval is ignored and Analytics does not refresh by itself
Scenario: Any default zone
- GIVEN the Preferences tab of a session in Europe/Madrid
- WHEN the user picks America/New_York as the default zone
- THEN "Saved" shows, the next timed page opens with
tz=America/New_York, and a new browser session starts in America/New_York
Scenario: Stored lowercase utc
- GIVEN stored preferences whose time zone reads
utc - WHEN the dashboard loads them
- THEN the default zone is UTC and the Preferences tab shows "Another zone" selected with UTC
Requirement: OpenVidu version
Edition: CE. About SHALL show one version line, the OpenVidu version (the dashboard version) with the edition badge, as
reported by GET /api/v1/info; a schema incompatibility is reported by the shell's warning banner, not by About.
Scenario: Incompatible schema
- GIVEN the writer reports schema 3
- WHEN About renders
- THEN About shows only the version and badge, and the shell banner names both schema versions
Scenario: Version and edition
- GIVEN the info endpoint reports dashboard 3.10.0, edition CE and schema 1 for dashboard and writer
- WHEN About renders
- THEN it reads "OpenVidu 3.10.0" with the COMMUNITY badge and no schema line
Requirement: Migration status
Edition: CE. About SHALL show the legacy migration only while it runs (progress bar with processed/total records, following the server status poll every 10 s) and, when it ends while the page is open, its outcome (completed with its time, or failed with its message); once the page is reloaded after the migration ended, About shows nothing about it.
Scenario: Migration running
- GIVEN the status reports 300000 of 1200000 records processed
- WHEN About renders
- THEN a progress bar at 25 % shows "300,000 / 1,200,000 records" and updates with the next status response
Scenario: Completed before the page opened
- GIVEN the status reports a migration completed yesterday
- WHEN About renders
- THEN no migration section is shown
Scenario: Completed while watching
- GIVEN About showing a running migration
- WHEN the next status reports it completed
- THEN the section reads "Migration completed at hh:mm:ss" until the page is left
Requirement: Retention and storage
Edition: CE. About SHALL show the retention per data class (events, stats, tracks and subscriptions, entities, 5-minute rollups, hourly rollups, daily rollups) as a table with one row per class in the shared retention length wording, and a storage table with collection, document count, size and oldest document as the info endpoint reports them, closed by a Total row; sizes use the shared byte formatter.
Scenario: Retention line
- GIVEN the defaults
- WHEN About renders
- THEN the retention table has the rows Events 7 days, Stats 7 days, Tracks and subscriptions 7 days, Entities 90 days, 5-minute rollups 7 days, Hourly rollups 400 days and Daily rollups "Kept forever"
Scenario: Retention that is not a whole number of days
- GIVEN
retention.tracksMsof 36 hours andretention.rollupsDailyMsof 1 825 days - WHEN About renders
- THEN the row Tracks and subscriptions reads "36 hours" and the row Daily rollups reads "1,825 days"
Scenario: Storage total
- GIVEN storage entries for
rooms(4 documents, 381 kB with indexes) andevents(285 documents, 356 kB with indexes) - WHEN About renders
- THEN the last row of the storage table reads "Total", "289", "737 kB" and an empty Oldest cell
Scenario: Collection without an oldest date
- GIVEN the
tracksentry withoutoldest - WHEN About renders
- THEN its Oldest cell reads "—" with the tooltip "Not shown: no index starts with this collection's time field"
Requirement: Server info unavailable
Edition: CE. When the info endpoint fails, About SHALL show the error notice "Server info unavailable" with a Retry action and the Preferences tab stays usable.
Scenario: Backend down
- GIVEN the info request fails
- WHEN the user opens About
- THEN the message and retry render, and switching to Preferences works
Requirement: About loading state
Edition: CE. While the info document has not arrived and its request has not failed, About SHALL render a loading skeleton; the version, migration, retention and storage replace it when the document arrives.
Scenario: Info in flight
- GIVEN the info request has not answered yet
- WHEN the user opens About
- THEN the tab shows its loading state, with no version, retention or storage values and no "Server info unavailable" notice
Scenario: Info arrives
- GIVEN About showing its loading state
- WHEN the info document arrives
- THEN the loading state gives way to the version with the edition badge, the retention table and the storage table