UI Consistency
21 requirements
·
43 scenarios
Workflow Selection Options
JR-ui-consistency-008
The workflow selector SHALL display all authorized workflows returned from the backend discovery endpoint. The menu SHALL include built-in options for automatic selection and disabling workflow routing.
1 test scenario
- Authorized workflows appear in menu JR-ui-consistency-008.1
Light and Dark Theme Support
JR-ui-consistency-019
The application SHALL support light and dark themes with a user-accessible toggle. Theme preference SHALL be persisted across sessions. The default theme SHALL be light.
2 test scenarios
- Theme toggle is accessible in sidebar JR-ui-consistency-019.1
- Theme preference persists across sessions JR-ui-consistency-019.2
Host-Based White-Label Branding
JR-ui-consistency-021
The sidebar logo and alt text SHALL be determined by the deployment hostname, not hardcoded. White-label deployments SHALL display their own branding instead of the default logo. Unknown hostnames SHALL fall back to default branding. Adding a new white-label brand SHALL require only a configuration entry and a logo asset, not component changes.
4 test scenarios
- White-label deployment shows custom logo JR-ui-consistency-021.1
- Default deployment shows standard logo JR-ui-consistency-021.2
- Unknown hostname falls back to default JR-ui-consistency-021.3
- Subdomain matching resolves correct brand JR-ui-consistency-021.4
Chat State Persistence
JR-ui-consistency-033
Chat conversations, messages, and the active conversation SHALL be persisted with backend synchronization when chat persistence is enabled, falling back to local cache for fast startup. The backend SHALL be the source of truth on startup for persistence-enabled domains. Messages SHALL be limited per conversation to prevent storage overflow. Transient state such as processing indicators SHALL NOT be persisted, and processing status SHALL reset on restore to prevent stuck states.
6 test scenarios
- Active conversation persists after page refresh JR-ui-consistency-033.1
- Backend is source of truth for persistence-enabled domains JR-ui-consistency-033.2
- Chat messages persist after page refresh JR-ui-consistency-033.3
- Multiple conversations persist independently JR-ui-consistency-033.4
- Empty state when no stored data exists JR-ui-consistency-033.5
- Transient state is excluded from persistence JR-ui-consistency-033.6
Destructive Action Confirmation
JR-ui-consistency-035
The application SHALL present a confirmation dialog before executing destructive or significant actions. The dialog SHALL support customizable title, message, and button text. The dialog SHALL close on backdrop click and Escape key.
2 test scenarios
- Delete confirmation dialog appears JR-ui-consistency-035.1
- Confirmation dialog closes on backdrop click JR-ui-consistency-035.2
Chat Context Attachment
JR-ui-consistency-038
The chat interface SHALL provide modals for attaching context such as contracts, deals, and property profiles to conversations. Each modal SHALL fetch and display available items from the backend. Selecting an item SHALL add it to pending attachments for the current message.
1 test scenario
- Attach contract grid to chat conversation JR-ui-consistency-038.1
Citation Detail View
JR-ui-consistency-039
The contract analysis view SHALL provide a detail view for viewing paragraph citations in context. The view SHALL display the full paragraph text from the contract and highlight the cited section where applicable.
1 test scenario
- View citation in context JR-ui-consistency-039.1
Suggested Edit Loading Indicator
JR-ui-consistency-040
The Suggested Edits column in the review workbench SHALL display an animated loading indicator while edits are being generated. The static placeholder SHALL only appear when processing is complete with no suggested edit. The loading indicator SHALL communicate active processing to reduce user uncertainty.
3 test scenarios
- Loading indicator displays during edit generation JR-ui-consistency-040.1
- Loading indicator clears on completion JR-ui-consistency-040.2
- Static empty state when processing is done JR-ui-consistency-040.3
Tenant-Configurable Navigation
JR-ui-consistency-044
The sidebar SHALL support tenant-based configuration for section labels and visibility so tenant deployments can hide or rename navigation sections.
2 test scenarios
- Tenant hides specific navigation sections JR-ui-consistency-044.1
- Tenant renames chat section label JR-ui-consistency-044.2
Tenant-Filtered Workflow Selector
JR-ui-consistency-045
The workflow selector SHALL filter available workflows based on tenant configuration. Tenant priority settings SHALL influence workflow display order.
2 test scenarios
- Tenant allowlist filters workflows JR-ui-consistency-045.1
- Tenant priority influences workflow order JR-ui-consistency-045.2
Contract Analysis Action Feedback
JR-ui-consistency-047
Contract analysis actions that trigger long-running backend work SHALL show visible loading feedback and disable repeat actions while pending. Actions include sync, import, add column, delete column, delete contract, and regeneration. Loading feedback SHALL clear on both success and error.
1 test scenario
- Grid sync shows loading state JR-ui-consistency-047.1
Playbook Upload Loading Feedback
JR-ui-consistency-049
Playbook upload interactions SHALL display a visible loading indicator while the upload request or subsequent list refresh is in progress. Loading feedback SHALL clear on both success and error.
3 test scenarios
- Upload shows spinner during request JR-ui-consistency-049.1
- Selector shows loading during list refresh JR-ui-consistency-049.2
- Loading clears on error JR-ui-consistency-049.3
Manual Grid Creation
JR-ui-consistency-050
The contract analysis feature SHALL provide a button that allows users to create an empty grid by entering a name. After successful creation, the view SHALL navigate into the newly created grid. If the user cancels or enters an empty name, no grid SHALL be created.
2 test scenarios
- User creates a new empty grid JR-ui-consistency-050.1
- User cancels new grid creation JR-ui-consistency-050.2
Shared Folder Import
JR-ui-consistency-051
When a user imports a shared folder in the contract analysis view, the system SHALL auto-create a grid from the folder contents. The system SHALL auto-detect the cloud storage provider from the URL. After a successful folder sync, the grid list SHALL be refreshed.
2 test scenarios
- User imports a Google Drive folder JR-ui-consistency-051.1
- User imports a SharePoint folder JR-ui-consistency-051.2
Chat Context Attachment Persistence
JR-ui-consistency-053
Chat context attachments SHALL remain visible and active across follow-up messages until the user explicitly removes them.
2 test scenarios
- Context cards remain after sending message JR-ui-consistency-053.1
- Contexts are removable by the user JR-ui-consistency-053.2
User Message Attachment Display
JR-ui-consistency-054
User messages that include uploaded files SHALL display an attachment summary in the chat history. Messages without attachments SHALL omit the summary.
2 test scenarios
- User message lists attached file names JR-ui-consistency-054.1
- Message without attachments omits summary JR-ui-consistency-054.2
Output Attachment Downloads
JR-ui-consistency-055
Assistant messages with output attachments SHALL provide working download links. Download links SHALL use token-based authentication for secure file retrieval.
2 test scenarios
- Output attachments expose download link JR-ui-consistency-055.1
- Download link triggers file retrieval JR-ui-consistency-055.2
Apply State Synchronization
JR-ui-consistency-056
When review edits are applied, the workbench SHALL immediately reflect applied status so users can navigate edits and download revised documents. Applied rows SHALL display applied-state indicators instead of action buttons. When all edits are resolved, batch-apply actions SHALL be disabled. After one or more edits are applied, the download revised action SHALL be enabled.
2 test scenarios
- Apply-all completion hides row action buttons JR-ui-consistency-056.1
- Download Revised enables after edits apply JR-ui-consistency-056.2
Edited Response Indicator
JR-ui-consistency-059
When a user edits the recommended response, the response cell SHALL display the edited text with an explicit "(edited)" indicator. The edited text SHALL reflect the user-provided content, not the pre-edit suggestion.
1 test scenario
- Edited response shows edited indicator JR-ui-consistency-059.1
User-Edited Provenance Tracking
JR-ui-consistency-060
When a user edits the recommended response and then applies the edit, the edit genealogy SHALL display provenance indicating the response was user-edited. The provenance label SHALL appear alongside other source metadata.
1 test scenario
- Genealogy indicates user-edited response JR-ui-consistency-060.1
Genealogy Consistency Across Apply Paths
JR-ui-consistency-061
Edit genealogy SHALL render consistently regardless of whether edits are applied individually or in batch. The user SHALL NOT experience missing genealogy details when applying a single row versus batch apply.
1 test scenario
- Single-row apply shows full genealogy JR-ui-consistency-061.1