STD: Client Configuration (CLIENTCFG)
Version: v1.0.0 Status: Draft SRS Source:
docusaurus/docs/srs/client-config.mdDomain: CLIENTCFG
Overview
This document specifies tests for the Client Configuration domain, which covers system-wide configuration settings and feature toggles that control application behavior across all functional areas.
Domain Characteristics:
- Primary function: Configuration CRUD operations (view, edit, persist)
- Secondary function: File I/O operations (import/export)
- Authorization: Super User role required for modifications
- System impact: Changes apply globally (all users, all sessions)
Test Method Rationale:
Per Test Plan §3.3, Configuration domains use TM-API as primary method with TM-UI secondary. CLIENTCFG is predominantly backend-driven:
- Configuration persistence and validation are API operations
- Import/export are file I/O operations testable without UI
- Feature toggle effects are verifiable via API responses
- Constraint enforcement (e.g., Westgard ordering) is backend logic
TM-UI is used only where user interaction flow verification is essential.
Test Case Convention:
Steps describe logical actions, not UI mechanics. Use "Load configuration settings" or "Save configuration changes", not "Click the Save button" or "Select dropdown option X". This ensures test intent survives UI redesigns.
Coverage Summary
| REQ ID | Title | ACs | Tests | AC Coverage | Method | Gaps |
|---|---|---|---|---|---|---|
| REQ-CLIENTCFG-001 | View and Edit Client Configuration Settings | 11 | TC-CLIENTCFG-001 through TC-CLIENTCFG-007 | 11/11 (100%) | TM-API, TM-UI | None |
| REQ-CLIENTCFG-002 | Export Client Configuration | 4 | TC-CLIENTCFG-008, TC-CLIENTCFG-009 | 4/4 (100%) | TM-API | None |
| REQ-CLIENTCFG-003 | Import Client Configuration | 9 | TC-CLIENTCFG-010 through TC-CLIENTCFG-013 | 9/9 (100%) | TM-API | None |
Totals: 3 REQs, 24 ACs, 13 Test Cases, 100% Coverage
Test Cases
TC-CLIENTCFG-001: Configuration settings display and organization
Verifies: REQ-CLIENTCFG-001 (AC-Display-1, AC-Display-2, AC-Display-3)
Method: TM-UI
Priority: High
Preconditions:
- User logged in with Super User role
- Client configuration has settings of various types (toggle, dropdown, multiselect)
Test Data:
- Configuration with: boolean setting (fallback_shared_controls_enabled), dropdown setting (lims_export_location), multiselect setting (allowed_accession_characters)
Steps:
- Navigate to Client Configuration screen
- Observe settings display and organization
Expected Results:
- AC-Display-1: All available configuration settings are displayed organized by category (Login/User Management, Import/Data, Export, Display, Edit/Manage Results, Westgard)
- AC-Display-2: Toggle-type settings display as enable/disable controls
- AC-Display-3: Selection-type settings display as dropdown/choice lists
Automation Status: Automated
Jira: Derived from SRS Trace (Items 1.1, 2.1, 3.1, 4.1, 5.1, 6.1)
TC-CLIENTCFG-002: Configuration value validation
Verifies: REQ-CLIENTCFG-001 (AC-Validation-1, AC-Validation-2, AC-ErrorHandling-1)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated via API
- Configuration endpoint accessible
Test Data:
- Valid dropdown value: lims_export_location = "DOWNLOAD"
- Invalid dropdown value: lims_export_location = "INVALID_OPTION"
Steps:
- Submit configuration update with valid option value
- Verify update accepted
- Submit configuration update with invalid option value
- Observe validation response
Expected Results:
- AC-Validation-1: Valid setting values accepted against defined option constraints
- AC-Validation-2: Invalid setting values outside defined option sets are rejected
- AC-ErrorHandling-1: Validation failure returns error message identifying the invalid setting and constraint
Automation Status: Automated
Jira: Derived from SRS Trace (Items 1.5, 1.6)
TC-CLIENTCFG-003: Configuration persistence
Verifies: REQ-CLIENTCFG-001 (AC-Persistence-1, AC-ErrorHandling-2)
Method: TM-API
Priority: Critical
Preconditions:
- Super User authenticated
- Known initial configuration state
Test Data:
- Toggle setting: include_passive_targets_in_count = true
- Export setting: export_quant_wells_separate_csv = true
Steps:
- Retrieve current configuration values
- Update multiple settings via save operation
- Retrieve configuration again
- Verify persisted values match submitted values
Expected Results:
- AC-Persistence-1: Configuration changes persist when user confirms save operation
- (Negative test) AC-ErrorHandling-2: On save failure, error message displayed and unsaved changes retained in session
Automation Status: Automated
Jira: Derived from SRS Trace (Item 7.1)
TC-CLIENTCFG-004: Feature toggle system-wide application
Verifies: REQ-CLIENTCFG-001 (AC-FeatureToggle-1)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
- Second user (Junior User) authenticated in separate session
Test Data:
- Feature toggle: help_items = false (hide context sensitive help)
Steps:
- As Super User, set feature toggle help_items = false
- Save configuration
- As Junior User, request feature flags via API
- Verify feature flag state reflects Super User's change
Expected Results:
- AC-FeatureToggle-1: Feature visibility toggle changes apply to all users, not just the configuring user
Automation Status: Automated
Jira: Source: CR 2.17.0 Feature Visibility Toggles
TC-CLIENTCFG-005: Westgard ordering constraint enforcement
Verifies: REQ-CLIENTCFG-001 (AC-Constraint-1, AC-ErrorHandling-3)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
- "Inherit Run Date" setting is enabled
Test Data:
- inherit_run_date = true
- westgard_second_priority_ordering = "Target Name" (attempted change)
Steps:
- Verify "Inherit Run Date" is enabled
- Attempt to modify Westgard second priority ordering setting
- Observe response
Expected Results:
- AC-Constraint-1: Westgard second priority ordering setting is disabled/blocked when "Inherit Run Date" is enabled
- AC-ErrorHandling-3: Constraint violation prevented with reason indicated
Automation Status: Automated
Jira: Derived from SRS Trace (Items 8.1, 8.2)
TC-CLIENTCFG-006: Drag-and-drop import constraint enforcement
Verifies: REQ-CLIENTCFG-001 (AC-Constraint-2)
Method: TM-API
Priority: Medium
Preconditions:
- Super User authenticated
Test Data:
- prevent_drag_drop_import = true
Steps:
- Enable "Prevent file import via drag and drop" setting
- Save configuration
- Verify upload button import is also disabled (API response indicates import methods blocked)
Expected Results:
- AC-Constraint-2: Upload button import is disabled when "Prevent file import via drag and drop" is enabled
Automation Status: Automated
Jira: Derived from SRS Trace (Items 8.3, 8.4)
TC-CLIENTCFG-007: Individual configuration settings persistence
Verifies: REQ-CLIENTCFG-001 (comprehensive settings coverage)
Method: TM-API
Priority: Medium
Preconditions:
- Super User authenticated
- Clean configuration state
Test Data:
| Setting | Test Value |
|---|---|
| allowed_accession_characters | ["A-Z", "0-9", "-"] |
| fallback_shared_controls_enabled | true |
| include_passive_targets_in_count | true |
| show_comment_count | true |
| display_outcomes_as_hyperlinks | true |
| export_quant_wells_separate_csv | true |
| lims_export_location | SAVE_ON_CLOUD |
| include_well_comments_in_export | true |
| use_role_priority_for_resolution | true |
Steps:
- For each setting in test data: a. Set value via API b. Save configuration c. Retrieve configuration d. Verify value persisted correctly
Expected Results:
- All toggle settings persist enable/disable state correctly
- All dropdown settings persist selected option correctly
- Multiselect settings persist multiple selections correctly
Automation Status: Automated (Browser)
Feature: user-management-crud.feature
Jira: Derived from SRS Trace (Items 1.1 through 7.2)
TC-CLIENTCFG-008: Export configuration file generation
Verifies: REQ-CLIENTCFG-002 (AC1, AC5)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
- Known configuration state established
Test Data:
- Pre-set configuration values across all categories
Steps:
- Invoke configuration export endpoint
- Receive exported file
- Verify file format is consistent and parseable
Expected Results:
- AC1: Configuration file generated containing all current settings
- AC5: Export file format is consistent and parseable for re-import (valid structure, no corruption)
Automation Status: Manual (XLSX verification — client settings in kit config import/export)
Jira: Derived from SRS Trace (Item 1.2)
TC-CLIENTCFG-009: Export configuration content verification
Verifies: REQ-CLIENTCFG-002 (AC2, AC3, AC4)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
Test Data:
- allowed_accession_characters = ["A-Z", "0-9", "-"]
- westgard_second_priority_ordering = "Run Date"
- use_role_priority_for_resolution = true
Steps:
- Set specific configuration values as test data
- Save configuration
- Export configuration
- Parse exported file
- Verify specific settings present with correct values
Expected Results:
- AC2: Exported file includes accession character validation settings (["A-Z", "0-9", "-"])
- AC3: Exported file includes Westgard ordering priority settings ("Run Date")
- AC4: Exported file includes role priority resolution settings (true)
Automation Status: Manual (XLSX verification — client settings in kit config import/export)
Jira: Derived from SRS Trace (Items 2.3, 5.2)
TC-CLIENTCFG-010: Import valid configuration file
Verifies: REQ-CLIENTCFG-003 (AC-FileProcessing-1, AC-FileProcessing-2, AC-Validation-3)
Method: TM-API
Priority: Critical
Preconditions:
- Super User authenticated
- Valid configuration export file available
Test Data:
- Configuration file with known valid values for all settings
Steps:
- Invoke import endpoint with valid configuration file
- Observe response
- Retrieve current configuration
- Compare values to imported file contents
Expected Results:
- AC-FileProcessing-1: Configuration file in supported export format accepted
- AC-FileProcessing-2: Client configuration updated with values from imported file
- AC-Validation-3: Success feedback indicates import completed
Automation Status: Manual (XLSX verification — client settings in kit config import/export)
Jira: Derived from SRS Trace (Item 1.3)
TC-CLIENTCFG-011: Import accession character validation settings
Verifies: REQ-CLIENTCFG-003 (AC-FileProcessing-3)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
- Configuration file containing allowed_accession_characters = ["A-Z", "0-9"]
Steps:
- Set allowed_accession_characters to different value (baseline)
- Import configuration file
- Retrieve allowed_accession_characters setting
Expected Results:
- AC-FileProcessing-3: Accession character validation settings updated from import file to ["A-Z", "0-9"]
Automation Status: Manual (XLSX verification — client settings in kit config import/export)
Jira: Derived from SRS Trace (Item 1.4)
TC-CLIENTCFG-012: Import validation - invalid option values
Verifies: REQ-CLIENTCFG-003 (AC-Validation-1, AC-Validation-2, AC-ErrorHandling-2)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
Test Data:
- Configuration file with invalid dropdown value: lims_export_location = "INVALID_OPTION"
Steps:
- Invoke import endpoint with configuration file containing invalid value
- Observe response
Expected Results:
- AC-Validation-1: Imported values validated against defined option constraints
- AC-Validation-2: Import values not in defined option sets are rejected
- AC-ErrorHandling-2: Validation error message identifies the invalid field (lims_export_location) and value (INVALID_OPTION)
Automation Status: Manual (XLSX verification — client settings in kit config import/export)
Jira: Derived from SRS Trace (Item 1.4)
TC-CLIENTCFG-013: Import validation - malformed file
Verifies: REQ-CLIENTCFG-003 (AC-ErrorHandling-1, AC-ErrorHandling-3)
Method: TM-API
Priority: High
Preconditions:
- Super User authenticated
Test Data:
- Malformed configuration file (corrupted structure, invalid format)
- Wrong file type (e.g., text file instead of expected format)
Steps:
- Attempt import with malformed/corrupted file
- Observe response
- Attempt import with wrong file type
- Observe response
Expected Results:
- AC-ErrorHandling-1: Invalid file format rejected with "Invalid configuration file format" message
- AC-ErrorHandling-3: Malformed or corrupted file rejected with appropriate error message
Automation Status: Manual (XLSX verification — client settings in kit config import/export)
Jira: Derived from SRS Trace (Item 1.4)
Gap Analysis
No gaps identified. All 24 acceptance criteria have test coverage.
Coverage by AC Category
| AC Category | Count | Covered | Notes |
|---|---|---|---|
| Display/Rendering | 3 | 3 | Verified via TM-UI |
| Validation | 5 | 5 | Verified via TM-API |
| Persistence | 1 | 1 | Verified via TM-API |
| Feature Toggles | 1 | 1 | Verified via TM-API (multi-user) |
| Constraints | 2 | 2 | Verified via TM-API |
| Error Handling | 6 | 6 | Verified via TM-API |
| Export Content | 4 | 4 | Verified via TM-API |
| Import Processing | 2 | 2 | Verified via TM-API |
Traceability to Existing Tests
| Test Case | SRS Reference | Existing Gherkin |
|---|---|---|
| TC-CLIENTCFG-001 | TC-CLIENTCFG-001 (Access configuration screen) | Yes |
| TC-CLIENTCFG-002 | TC-CLIENTCFG-002-005 (Setting modifications) | Yes |
| TC-CLIENTCFG-003 | TC-CLIENTCFG-007-010 (Persistence tests) | Yes |
| TC-CLIENTCFG-004 | TC-CLIENTCFG-012-016 (Feature toggles) | Yes |
| TC-CLIENTCFG-005 | TC-CLIENTCFG-006 (Westgard constraint) | Yes |
| TC-CLIENTCFG-006 | TC-CLIENTCFG-011 (Drag-drop constraint) | Yes |
| TC-CLIENTCFG-007 | TC-CLIENTCFG-002-010 (Individual settings) | Yes |
| TC-CLIENTCFG-008 | TC-CLIENTCFG-017 (Export) | Yes |
| TC-CLIENTCFG-009 | TC-CLIENTCFG-018 (Export content) | Yes |
| TC-CLIENTCFG-010 | TC-CLIENTCFG-019 (Import valid) | Yes |
| TC-CLIENTCFG-011 | TC-CLIENTCFG-020 (Import characters) | Yes |
| TC-CLIENTCFG-012 | TC-CLIENTCFG-021 (Import validation) | Yes |
| TC-CLIENTCFG-013 | TC-CLIENTCFG-022 (Import format error) | Yes |
Notes
- CLIENTCFG is primarily an API-testable domain; UI tests are used only for display verification
- Configuration changes are globally scoped (affect all users), requiring multi-session test scenarios
- Import/export operations use Excel format (handled by Laravel Excel package)
- Constraint enforcement (Westgard ordering, drag-drop import) is backend logic testable via API
- Existing Gherkin tests in SRS provide behavioral specification; this STD formalizes method and coverage