STD: Kit Configuration (KITCFG)
Version: v1.0.0 Status: Draft SRS Source:
docusaurus/docs/srs/kitcfg.mdDomain: KITCFG
Overview
This document specifies tests for the Kit Configuration domain, which covers assay and instrument configuration management for PCR analysis workflows including mixes, targets, instruments, quality control parameters, rules, and calibration settings.
Domain Characteristics:
- Primary function: Configuration data management (CRUD operations)
- Secondary function: Import/export functionality (Excel files)
- Tertiary function: Validation logic and audit trail
- Configuration dependency: Multi-site settings, feature flags
Test Method Rationale: Per Test Plan §3.3, Configuration domains use TM-API as primary method with TM-UI fallback. KITCFG requirements are predominantly backend configuration management with deterministic validation logic. API-level testing provides faster, more reliable coverage. UI testing supplements for user interaction flows and visual verification of configuration widgets.
Test Case Convention: Steps describe logical actions, not UI mechanics. Use "Create mix configuration" or "Import configuration file", not "Click the Add button" or "Select file from dialog". This ensures test intent survives UI redesigns.
Coverage Summary
| REQ ID | Title | ACs | Tests | AC Coverage | Method | Gaps |
|---|---|---|---|---|---|---|
| REQ-KITCFG-001 | Manage Mix and Target Configuration | 24 | TC-KITCFG-001, TC-KITCFG-002, TC-KITCFG-003, TC-KITCFG-004, TC-KITCFG-046, TC-KITCFG-B001, TC-KITCFG-B003, TC-KITCFG-B004, TC-KITCFG-B005, TC-KITCFG-B006, TC-KITCFG-B008, TC-KITCFG-B009, TC-KITCFG-B010, TC-KITCFG-B011, TC-KITCFG-B012, TC-KITCFG-B013, TC-KITCFG-B014, TC-KITCFG-B015, TC-KITCFG-B016, TC-KITCFG-B017, TC-KITCFG-B022, TC-KITCFG-B025, TC-KITCFG-B030 | 24/24 (100%) | TM-API, TM-UI | None |
| REQ-KITCFG-002 | Import and Export Mix Configuration | 9 | TC-KITCFG-005, TC-KITCFG-006, TC-KITCFG-B026, TC-KITCFG-B027, TC-KITCFG-B031, TC-KITCFG-B032, TC-KITCFG-B033, TC-KITCFG-B034, TC-KITCFG-B035, TC-KITCFG-B037 | 9/9 (100%) | TM-API, TM-UI | None |
| REQ-KITCFG-003 | Manage Extraction Instruments | 11 | TC-KITCFG-007, TC-KITCFG-047 | 11/11 (100%) | TM-API | None |
| REQ-KITCFG-004 | Manage Thermocycler Instruments | 10 | TC-KITCFG-008, TC-KITCFG-048 | 10/10 (100%) | TM-API | None |
| REQ-KITCFG-005 | Manage Error Codes | 9 | TC-KITCFG-009, TC-KITCFG-010, TC-KITCFG-049 | 9/9 (100%) | TM-API | None |
| REQ-KITCFG-006 | Manage Error Resolutions | 15 | TC-KITCFG-011, TC-KITCFG-012, TC-KITCFG-050 | 15/15 (100%) | TM-API | None |
| REQ-KITCFG-007 | Manage Control Labels | 13 | TC-KITCFG-013, TC-KITCFG-014, TC-KITCFG-051 | 13/13 (100%) | TM-API | None |
| REQ-KITCFG-008 | Manage Run Tags | 10 | TC-KITCFG-015, TC-KITCFG-052 | 10/10 (100%) | TM-API | None |
| REQ-KITCFG-009 | Manage LIMS Export Mappings | 10 | TC-KITCFG-016, TC-KITCFG-053 | 10/10 (100%) | TM-API | None |
| REQ-KITCFG-010 | Provide Unified Assay Configuration Interface | 5 | TC-KITCFG-017 | 5/5 (100%) | TM-UI | None |
| REQ-KITCFG-011 | Manage Combined Outcome Rules | 22 | TC-KITCFG-018, TC-KITCFG-019, TC-KITCFG-020, TC-KITCFG-054 | 22/22 (100%) | TM-API, TM-UI | None |
| REQ-KITCFG-012 | Manage Westgard Settings | 11 | TC-KITCFG-021, TC-KITCFG-022, TC-KITCFG-055 | 11/11 (100%) | TM-API | None |
| REQ-KITCFG-013 | Manage Cross Contamination Limits | 13 | TC-KITCFG-023, TC-KITCFG-024 | 13/13 (100%) | TM-API | None |
| REQ-KITCFG-014 | Manage Curve Control Limits | 11 | TC-KITCFG-025, TC-KITCFG-026 | 11/11 (100%) | TM-API | None |
| REQ-KITCFG-015 | Manage Known Quantities | 7 | TC-KITCFG-027 | 7/7 (100%) | TM-API | None |
| REQ-KITCFG-016 | Manage Reporting Cut-offs | 5 | TC-KITCFG-028 | 5/5 (100%) | TM-API | None |
| REQ-KITCFG-017 | Manage Test Codes | 8 | TC-KITCFG-029 | 8/8 (100%) | TM-API | None |
| REQ-KITCFG-018 | Manage QIR Quantification Settings | 4 | TC-KITCFG-030 | 4/4 (100%) | TM-API | None |
| REQ-KITCFG-019 | Manage Delta CT Configurations | 12 | TC-KITCFG-031 | 12/12 (100%) | TM-API | None |
| REQ-KITCFG-020 | Perform Assay Calibration Analysis | 6 | TC-KITCFG-032, TC-KITCFG-033 | 6/6 (100%) | TM-HYB | None |
| REQ-KITCFG-021 | Manage Calibration Boundaries | 7 | TC-KITCFG-034 | 7/7 (100%) | TM-UI | None |
| REQ-KITCFG-022 | Manage Calibration Versions | 6 | TC-KITCFG-035 | 6/6 (100%) | TM-HYB | None |
| REQ-KITCFG-023 | Display Calibration in Run Reports | 3 | TC-KITCFG-036 | 3/3 (100%) | TM-UI | None |
| REQ-KITCFG-024 | Manage Rule Mappings | 5 | TC-KITCFG-037, TC-KITCFG-038 | 5/5 (100%) | TM-API | None |
| REQ-KITCFG-025 | Manage Rule Settings | 4 | TC-KITCFG-039 | 4/4 (100%) | TM-API | None |
| REQ-KITCFG-026 | Manage Prepend Cycles | 4 | TC-KITCFG-040 | 4/4 (100%) | TM-API | None |
| REQ-KITCFG-027 | Support Multi-Site Configuration | 4 | TC-KITCFG-041 | 4/4 (100%) | TM-API | None |
| REQ-KITCFG-028 | Manage Help Item Tags | 4 | TC-KITCFG-042 | 4/4 (100%) | TM-API | None |
| REQ-KITCFG-029 | Manage Dye Configuration | 7 | TC-KITCFG-043, TC-KITCFG-044, TC-KITCFG-045 | 7/7 (100%) | TM-API | None |
| REQ-KITCFG-030 | Manage Westgard Event Codes | 6 | TC-KITCFG-046, TC-KITCFG-047 | 6/6 (100%) | TM-API | None |
| REQ-KITCFG-031 | Manage Specimen Types | 7 | TC-KITCFG-048, TC-KITCFG-049, TC-KITCFG-050 | 7/7 (100%) | TM-API | None |
Totals: 31 REQs, 183 ACs, 76 Test Cases (50 API + 26 Browser), 100% Coverage
Test Cases
TC-KITCFG-001: Mix display and sorting
Verifies: REQ-KITCFG-001 (AC1-4: Display and Navigation)
Method: TM-UI
Priority: High
Preconditions:
- User logged in with Manager or Super Admin role
- Multiple mixes configured with varying enabled status
Test Data:
- Mix A (enabled), Mix B (disabled), Mix C (enabled)
- Each mix has multiple targets including IC and passive targets
Steps:
- Navigate to Kit Configuration Mixes and Targets page
- Observe table display and sort order
- Verify target ordering within each mix
Expected Results:
- AC1: All configured mixes displayed with their associated targets and properties
- AC2: Mixes sorted with enabled first (alphabetically), then disabled (alphabetically): Mix A, Mix C, Mix B
- AC3: Targets sorted alphabetically within mix, with IC penultimate and passive last
- AC4: Navigation between mixes available during editing
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-002: Mix property modification
Verifies: REQ-KITCFG-001 (AC5-8: Mix Properties)
Method: TM-API
Priority: High
Preconditions:
- Existing mix with default configuration
Test Data:
- Mix A with targets: Target X, Target Y, Target Z
Steps:
- Retrieve mix configuration via API
- Modify mix-level properties (name, IC designation, passive target, extraction instrument, discrepancy check, result provider, enabled status)
- Save changes via API
- Verify persistence
Expected Results:
- AC5: Mix-level properties modifiable (name, IC, passive, extraction instrument, discrepancy check, result provider, enabled)
- AC6: Disabled mix configuration preserved (enable/disable toggle does not clear settings)
- AC7: Disabled mix excluded from application dropdowns
- AC8: Unknown mix cannot be enabled without mix name
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-003: Target property modification and validation
Verifies: REQ-KITCFG-001 (AC9-14: Target Properties)
Method: TM-API
Priority: High
Preconditions:
- Mix with multiple targets configured
Test Data:
| Field | Valid Value | Invalid Value |
|---|---|---|
| Min Fluorescence | 1234567890123456.1234567890123456 | 12345678901234567 (17 int digits) |
| Expected Threshold | 999.123456789012345 | 1000.1 (4 int digits) |
| Max Fluorescence | >= Min Fluorescence | < Min Fluorescence |
| CT Inhibition Delta | 3 (positive integer) | 0, -1, 1.5 |
Steps:
- Modify target-level properties via API
- Test IC and passive target mutual exclusion
- Test field validations with boundary values
- Verify CT Inhibition Delta default value for IC targets
Expected Results:
- AC9: Target properties modifiable (fluorescence thresholds, CT inhibition delta, display order)
- AC10: Target cannot be both IC and passive simultaneously
- AC11: Min Fluorescence validation: max 16 integer, 16 decimal places
- AC12: Expected Threshold validation: max 3 integer, 15 decimal places
- AC13: Max Fluorescence validation: max 16 integer, 16 decimal places, >= Min Fluorescence
- AC14: CT Inhibition Delta: positive non-zero integer, default 3
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-004: Unknown mix auto-creation and error handling
Verifies: REQ-KITCFG-001 (AC15-17: Error Handling, AC5: Mix Uniqueness)
Method: TM-API
Priority: High
Preconditions:
- No mix configured with specific target/dye combination
Test Data:
- Runfile with targets {TargetA, TargetB, ROX} not matching any configured mix
Steps:
- Import runfile with unrecognized target/dye combination
- Verify unknown mix auto-creation
- Test validation error scenarios
- Test unsaved changes navigation behavior
Expected Results:
- AC15: Unknown mix auto-created as disabled "Unknown" entry with default values
- AC16: Validation errors display specific message and prevent save
- AC17: Unsaved changes prompt on navigation
- AC5 (uniqueness): Mix uniqueness determined by target/dye combination set
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-005: Mix configuration import
Verifies: REQ-KITCFG-002 (AC1-6: Import)
Method: TM-API
Priority: High
Preconditions:
- Empty mix table (for import support)
- Valid import file prepared
Test Data:
| Mix | Target | Dye | IC | Passive | Extraction Instrument | CT Inhibition Delta | Target Display Order |
|---|---|---|---|---|---|---|---|
| Mix A | Target A | FAM | N | N | Extractor1 | 3 | 2 |
| Mix A | Target B | VIC | Y | N | Extractor1 | 5 | 1 |
| Mix A | Target C | ROX | N | Y | Extractor1 | - | 3 |
Steps:
- Prepare import file with mix configurations
- Execute import via API
- Verify imported data
- Test Target Display Order handling
Expected Results:
- AC1: Import supported when mix table is empty
- AC2: All columns imported: Mix name, Target, Dye, IC, Passive, Extraction Instrument, CT Inhibition Delta, Target Display Order
- AC3: Default alphabetical ordering when Target Display Order empty for all targets
- AC4: Mixes with partial Target Display Order ignored
- AC5: Empty IC CT Delta defaults to 3
- AC6: Invalid CT Inhibition Delta rows ignored with status "Ignored"
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1934
TC-KITCFG-006: Mix configuration export
Verifies: REQ-KITCFG-002 (AC7-9: Export)
Method: TM-API
Priority: Medium
Preconditions:
- Multiple mixes configured with targets
Steps:
- Export configuration via API
- Verify exported file contents
- Verify import result status in export
Expected Results:
- AC7: All mixes and targets exported including CT Inhibition Delta and Target Display Order
- AC8: Import result status (Imported/Ignored) displayed per row
- AC9: Non-numeric Target Display Order rows marked as Ignored
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1934
TC-KITCFG-007: Extraction instrument management
Verifies: REQ-KITCFG-003 (AC1-6)
Method: TM-API
Priority: Medium
Preconditions:
- User with Manager role
Test Data:
- Extraction Model: "Model X"
- Extraction Instruments: "Instrument 1", "Instrument 2"
Steps:
- Create extraction model via API
- Add instruments to model
- Attempt to delete instrument
- Export/import configuration
- Verify audit trail entry
Expected Results:
- AC1: Extraction instruments displayed grouped by extraction model
- AC2: New extraction models and instruments can be added
- AC3: Extraction model names can be edited
- AC4: Instrument deletion prevented (data integrity)
- AC5: Import/export via Excel supported
- AC6: Changes logged to audit trail
Automation Status: Planned
Jira: Pending
TC-KITCFG-008: Thermocycler instrument management
Verifies: REQ-KITCFG-004 (AC1-6)
Method: TM-API
Priority: Medium
Preconditions:
- User with Manager role
Test Data:
- Thermocycler Model: "ABI 7500"
- Thermocycler Instruments: "TC-001", "TC-002"
Steps:
- Verify default "Unknown" model/instrument exists
- Create thermocycler model via API
- Add instruments to model
- Attempt to delete instrument
- Import runfile and verify auto-population option
Expected Results:
- AC1: Thermocycler instruments displayed grouped by model
- AC2: Default "Unknown" model and instrument maintained
- AC3: New models and instruments can be added
- AC4: Instrument deletion prevented
- AC5: Import/export via Excel supported
- AC6: Auto-populate from runfile data optionally supported
Automation Status: Planned
Jira: Pending
TC-KITCFG-009: Error codes display and filtering
Verifies: REQ-KITCFG-005 (AC1-3: Display and Management)
Method: TM-API
Priority: High
Preconditions:
- Multiple error codes configured
Test Data:
- Error codes with various type, affects, and flag combinations
Steps:
- Retrieve error codes via API
- Verify all properties returned
- Add new error code
- Filter by code, type, and prevents analysis
Expected Results:
- AC1: Error codes display with all properties (code, message, type, affects, LIMS export, control error, Westgard error, prevents analysis, ignored, causes missing mixes, inhibited)
- AC2: New error codes can be added with required fields (code, message, type, affects, prevents analysis)
- AC3: Error code properties editable except the code itself
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-010: Error codes ignore and visibility
Verifies: REQ-KITCFG-005 (AC4-6: Ignore and Filter)
Method: TM-API
Priority: Medium
Preconditions:
- Error code exists
Steps:
- Mark error code as ignored
- Verify deletion not allowed
- Check runfile reports exclude ignored codes
- Test filter functionality
Expected Results:
- AC4: Error codes can be ignored but not deleted
- AC5: Ignored error codes hidden from runfile reports
- AC6: Filtering by code, type, and prevents analysis supported
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1896
TC-KITCFG-011: Error resolution configuration
Verifies: REQ-KITCFG-006 (AC1-4: Display and Configuration)
Method: TM-API
Priority: High
Preconditions:
- Error codes configured
- LIMS statuses configured
Test Data:
- Resolution for error "QC_FAIL" with outcome "RERUN"
Steps:
- View resolutions grouped by error message
- Add resolution with all configuration options
- Specify affected wells by LIMS status, error code, or "All Wells"
- Configure resolution levels
Expected Results:
- AC1: Resolutions displayed grouped by error message
- AC2: Resolution options configurable (message, affected wells/LIMS, rules skipped, outcome, default flag, affected well type)
- AC3: Resolution levels supported (Well, All Observations, Discrepant Observations)
- AC4: Affected wells specifiable by LIMS status, error code, or "All Wells"
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-012: Error resolution enable/disable and import/export
Verifies: REQ-KITCFG-006 (AC5-7: Enable/Disable and Import/Export)
Method: TM-API
Priority: Medium
Preconditions:
- Resolutions configured
Steps:
- Enable/disable resolution
- Delete resolution
- Export resolutions with affected well type
- Import resolutions
Expected Results:
- AC5: Resolutions can be enabled/disabled and deleted
- AC6: Import/export supported with affected well type
- AC7: Exported data includes all configuration fields
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-3862, BT-4686, BT-5270
TC-KITCFG-013: Control label mapping configuration
Verifies: REQ-KITCFG-007 (AC1-4: Display and Basic Configuration)
Method: TM-API
Priority: High
Preconditions:
- Mixes configured
Test Data:
- Label pattern: "PC*" matching "PC1", "PC2", "PCA"
- Role: Positive Control
- Type: PC
Steps:
- View control label mappings
- Add mapping with wildcard pattern
- Configure backup mixes
- Test case-insensitive matching
Expected Results:
- AC1: Mappings display with Role, Mix, Is extracted, Labels, Type, Backup Mixes, Resolution Priority
- AC2: Wildcard patterns supported (case-insensitive)
- AC3: Labels mappable to roles with types: PC, NC, Sample, Ignore, Quantitative
- AC4: Backup mixes configurable for failover
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-014: Control label advanced features
Verifies: REQ-KITCFG-007 (AC5-7: Advanced Features)
Method: TM-API
Priority: Medium
Preconditions:
- Control labels configured
Steps:
- Configure role aliasing
- Configure IC delta check exclusion
- Export control labels to Excel
Expected Results:
- AC5: Role aliasing and remapping supported
- AC6: Roles can be excluded from IC delta check
- AC7: Export to Excel supported
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-3913
TC-KITCFG-015: Run tag management
Verifies: REQ-KITCFG-008 (AC1-5)
Method: TM-API
Priority: Medium
Preconditions:
- User with Manager role
Test Data:
- Tag names: "Batch 1", "Archived", "Production Run 2024-01-01"
Steps:
- Verify archive mode toggle behavior
- Attempt to edit/delete "Archived" tag
- Add tag with duplicate name
- Add tag exceeding 40 characters
- Import/export tags
Expected Results:
- AC1: Non-archived tags displayed when archive mode deactivated
- AC2: Archived tags displayed when archive mode activated
- AC3: Default "Archived" tag cannot be deleted or edited
- AC4: Tag names unique, max 40 characters
- AC5: Import/export supported (>40 char rows ignored on import)
Automation Status: Planned
Jira: Pending
TC-KITCFG-016: LIMS export mapping configuration
Verifies: REQ-KITCFG-009 (AC1-5)
Method: TM-API
Priority: High
Preconditions:
- Outcome types configured
Test Data:
- LIMS code: "POS_DETECTED"
- Message with dynamic term: "Detected at {LOQ} copies/mL"
Steps:
- View LIMS mappings with all properties
- Add LIMS code with dynamic term
- Edit message and type
- Verify unsaved changes prompt
Expected Results:
- AC1: LIMS mappings display with Code, Message, Type, Causes Missing Mixes, Is Inhibited, Does Prevent Analyse
- AC2: Dynamic LIMS terms supported: {LOQ}, {Quant}, {HIQ}
- AC3: Message and type (Exclude/Information/Warning) editable
- AC4: New LIMS codes with unique values can be added
- AC5: Unsaved changes prompt on close
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-017: Unified assay configuration interface
Verifies: REQ-KITCFG-010 (AC1-5)
Method: TM-UI
Priority: Medium
Preconditions:
- Multiple configuration types populated
Steps:
- Navigate to unified assay configuration screen
- Verify widget consolidation
- Test mix/target filtering
- Test filter state preservation across widgets
- Test global settings and override behavior
- Test print/export functionality
Expected Results:
- AC1: Consolidated widgets (Mixes/Targets, Control Labels, Rules, Test Codes, Curve Control Limits, Westgard Settings, Cross Contamination Limits, Reporting Cut-offs, QIR Settings, Calibration)
- AC2: Mix and target filter dropdowns scope displayed data
- AC3: Filter state preserved when switching widgets
- AC4: Global settings apply to all mixes/targets as defaults
- AC5: Print and export selected widgets supported
Automation Status: Automated (Browser — 3 scenarios in kit-config.feature)
Jira: Pending
TC-KITCFG-018: Combined outcome display and target configuration
Verifies: REQ-KITCFG-011 (AC1-4: Display and Target Configuration)
Method: TM-UI
Priority: High
Preconditions:
- Mixes and targets configured
- LIMS outcomes configured
Test Data:
- Combined outcome for Mix A with targets: Target X (Positive, CT 15-25), Target Y (Negative)
Steps:
- View combined outcomes hierarchical table
- Configure target result conditions (Positive, Negative, Any with CT/Quantity ranges)
- Configure outcome properties (LIMS status, errors, IC failed, priority, name, code)
- Configure CLS/CT Discrepancy Required settings
Expected Results:
- AC1: Combined outcomes displayed in hierarchical table grouped by outcome
- AC2: Target result conditions configurable (Positive, Negative, Any with CT/Quantity ranges)
- AC3: Outcome properties configurable (LIMS status, well error, target error, IC failed, priority, name, code)
- AC4: CLS Discrepancy Required and CT Discrepancy Required supported per target result
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-019: Combined outcome role scope and multi-mix
Verifies: REQ-KITCFG-011 (AC5-8: Role Scope)
Method: TM-API
Priority: High
Preconditions:
- Multiple mixes configured
- Sample and control roles defined
Test Data:
- Multi-mix combined outcome for Sample role spanning Mix A and Mix B
Steps:
- Configure role scope (PC, NC, Quantification, Sample)
- Attempt multi-mix for non-Sample role (expect failure)
- Configure multi-mix with cross-run matching
- Enable CLS/CT Discrepancy Required and verify multi-run disabled
Expected Results:
- AC5: Role scope configurable (PC, NC, Quantification, Sample - excluding Ignore)
- AC6: Multi-mix combined outcomes supported for Sample typed roles with cross-run matching
- AC7: Multi-mix restricted to Sample typed roles only
- AC8: Multi-run disabled when CLS/CT Discrepancy Required enabled
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-020: Combined outcome validation and import/export
Verifies: REQ-KITCFG-011 (AC9-14: Validation and Import/Export)
Method: TM-API
Priority: High
Preconditions:
- Combined outcomes configured
Test Data:
| Scenario | Input | Expected |
|---|---|---|
| Duplicate outcome | Same target/outcome combination | Validation error |
| Invalid Quantity | -1 | Validation error |
| Valid Quantity | 0.0000000001 to 9999999999999999999999.9999999999 | Accepted |
| CT with Quantity | Both configured | Validation error |
Steps:
- Attempt duplicate combined outcome (expect failure)
- Test Quantity range validation
- Test CT range validation against CT Reporting range
- Attempt CT and Quantity conditions simultaneously
- Import/export combined outcomes
- Verify audit trail logging
Expected Results:
- AC9: Duplicate prevention for same target/outcome combination
- AC10: Quantity range enforced: 0.0000000001 to 9999999999999999999999.9999999999
- AC11: CT range restricted to related CT Reporting range or default 1-90
- AC12: CT and Quantity conditions mutually exclusive
- AC13: Import/export supported
- AC14: Changes logged to audit trail
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-3885, BT-2635, BT-5230
TC-KITCFG-021: Westgard settings display and management
Verifies: REQ-KITCFG-012 (AC1-5: Display and Management)
Method: TM-API
Priority: High
Preconditions:
- Mixes with targets configured
- Control label mappings exist
Test Data:
- Westgard range for Mix A, Target X, Role PC with Mean=25.0, SD=1.5
Steps:
- View Westgard settings with all properties
- Verify role selector shows only valid control label mappings
- Create new Westgard range
- Edit Mean/SD for range without control data
- Verify range with control data is display-only except enabled slider
Expected Results:
- AC1: Westgard settings display with Mix, Target, Role, Range, Start Date, Extraction Models, Instrument, Mean, SD, Quant/Ct, Enabled
- AC2: Role selector shows only roles with valid control label mappings for selected mix
- AC3: New Westgard ranges can be created
- AC4: Mean/SD editable for ranges without control data
- AC5: Ranges with control data display-only except enabled slider
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-022: Westgard settings import/export and re-analysis
Verifies: REQ-KITCFG-012 (AC6-8: Import/Export and Re-analysis)
Method: TM-API
Priority: Medium
Preconditions:
- Westgard settings with control data
Test Data:
- Import file with role name and role alias rows
Steps:
- Change Mean/SD that affects a failure
- Trigger re-analysis
- Verify failure reset
- Export settings by role name
- Import with role alias row (expect ignore)
Expected Results:
- AC6: Westgard failures reset on re-analysis when mean/SD changes affect the failure
- AC7: Import/export by role name supported
- AC8: Import rows with role aliases ignored
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-2371
TC-KITCFG-023: Cross contamination limits configuration
Verifies: REQ-KITCFG-013 (AC1-4: Display and Configuration)
Method: TM-API
Priority: High
Preconditions:
- Mixes with targets configured
Test Data:
- Mix A, Target X: Potential Contaminated = 30, Potential Contaminating = 20
Steps:
- View cross contamination limits
- Add limits for multiple mix/target combinations
- Enforce Potential Contaminated > Potential Contaminating
- Verify limits used in ADJ rule
Expected Results:
- AC1: Cross contamination limits display with Mix, Target, Potential Contaminated, Potential Contaminating, Quant/Ct
- AC2: Enforced: Potential Contaminated > Potential Contaminating
- AC3: Bulk add for multiple mix/target combinations supported
- AC4: Only targets without existing limits can be added
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-024: Cross contamination limits validation and audit
Verifies: REQ-KITCFG-013 (AC5-7: Validation and Audit)
Method: TM-API
Priority: Medium
Preconditions:
- Cross contamination limits configured
Test Data:
| Mode | Valid Value | Invalid Value |
|---|---|---|
| CT | 25 (non-decimal, >= 1) | 24.5, 0, -1 |
| Quant | 0.0000000001 (decimal, >= min) | 0, negative |
Steps:
- Test CT mode validation (non-decimal, min 1)
- Test Quant mode validation (decimal, min 0.0000000001)
- Verify configured limits used in ADJ rule evaluation
- Verify audit trail logging
Expected Results:
- AC5: CT mode values validated as non-decimal numeric with minimum 1
- AC6: Quant mode values validated as decimal with minimum 0.0000000001
- AC7: Changes logged to audit trail
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1964
TC-KITCFG-025: Curve control limits configuration
Verifies: REQ-KITCFG-014 (AC1-4: Display and Configuration)
Method: TM-API
Priority: High
Preconditions:
- Mixes with targets configured
- Sample roles defined
Test Data:
- Mix A, Target X, Role CC: Lower Bound = 20, Upper Bound = 30
Steps:
- View curve control limits
- Add limits for multiple mix/target/role combinations
- Validate Lower/Upper Bound constraints
- Verify limits trigger BCC rule errors
Expected Results:
- AC1: Curve control limits display with Mix, Target, Sample Role, Lower Bound Ct, Upper Bound Ct
- AC2: Bulk add for multiple mix/target/role combinations supported
- AC3: Lower and Upper Bound must be positive non-zero
- AC4: Upper Bound must be > Lower Bound
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-026: Curve control limits rule integration and audit
Verifies: REQ-KITCFG-014 (AC5-6: Rule Integration and Audit)
Method: TM-API
Priority: High
Preconditions:
- Curve control limits configured for Mix A/Target X/CC: Lower=20, Upper=30
Test Data:
- Runfile with curve control CT values: 15, 25, 35
Steps:
- Import runfile with curve control CT below lower bound (15)
- Verify BCC rule triggers out-of-range error
- Import runfile with curve control CT within range (25)
- Verify no BCC error
- Verify audit trail entries for bound changes
Expected Results:
- AC5: Configured limits used in BCC rule to trigger out-of-range errors
- AC6: Audit trail logs separate entries for lower and upper bound changes
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-2570
TC-KITCFG-027: Known quantities management
Verifies: REQ-KITCFG-015 (AC1-3)
Method: TM-API
Priority: Medium
Preconditions:
- Control roles configured
Test Data:
| Role | Mix | Target | Known Quantity | Valid |
|---|---|---|---|---|
| Std1 | Mix A | Target X | 100 | Yes |
| Std2 | Mix A | Target X | -5 | No |
| Std3 | Mix A | Target X | 0 | No |
| Std4 | Mix A | Target X | ABC | No |
Steps:
- View known quantities display
- Add valid positive numeric value
- Attempt invalid values (negative, zero, alphabetic, special chars, whitespace, empty)
Expected Results:
- AC1: Known quantities display with Role, Mix, Target, Known Quantity
- AC2: Known Quantity validated as positive numeric
- AC3: Negative, zero, alphabetic, special characters, whitespace, empty values rejected
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1207
TC-KITCFG-028: Reporting cut-offs management
Verifies: REQ-KITCFG-016 (AC1-5)
Method: TM-API
Priority: Medium
Preconditions:
- Mixes with targets configured
- Specimen types defined
Test Data:
- Reporting cut-off for Mix A, Target X, Specimen "Plasma", Group 1, Upper Bound 1000
Steps:
- View reporting cut-offs display
- Configure Groups 1-9 for RQUANT
- Configure Group 1 for RQUAL/RQUANTASQUAL
- Attempt duplicate mix/target/specimen/group combination
- Verify audit trail
Expected Results:
- AC1: Reporting cut-offs display with Mix, Targets, Specimen Types, Group, Group Description, Upper Bound
- AC2: Groups 1-9 supported for RQUANT, Group 1 for RQUAL/RQUANTASQUAL
- AC3: Duplicate prevention for same mix/target/specimen/group combination
- AC4: Configured cut-offs used in reporting rule evaluation
- AC5: Changes logged to audit trail
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-2277, BT-4282, BT-4290
TC-KITCFG-029: Test codes management
Verifies: REQ-KITCFG-017 (AC1-4)
Method: TM-API
Priority: Medium
Preconditions:
- Mixes configured
- Specimen types exist
Test Data:
- Test Code: "HCV-001", Mix: Mix A, Specimen Type: "Serum"
Steps:
- View test code mappings
- Add new test code
- Attempt duplicate test code
- Select existing or enter new specimen type
Expected Results:
- AC1: Test code mappings display with Test Code, Mix, Specimen Type
- AC2: New test codes with unique values can be added
- AC3: Duplicate test codes prevented
- AC4: Existing specimen types selectable or new ones can be entered
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-030: QIR quantification settings management
Verifies: REQ-KITCFG-018 (AC1-4)
Method: TM-API
Priority: Medium
Preconditions:
- Targets configured
Test Data:
- QIR settings for Target X: Slope=-3.2, Intercept=38.5
Steps:
- View QIR settings display
- Configure Slope and Intercept together
- Attempt Slope only (expect error)
- Test import validation
- Move targets between QIR setting rows
Expected Results:
- AC1: QIR settings display with Targets, Slope, Intercept, MinSlope, MaxSlope, MinEfficiency, MaxEfficiency, MinR2, MinControls
- AC2: Both Slope and Intercept required together or both empty
- AC3: Import validates Slope/Intercept as non-nullable decimals
- AC4: Targets can be moved between QIR setting rows
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1207
TC-KITCFG-031: Delta CT configuration management
Verifies: REQ-KITCFG-019 (AC1-7)
Method: TM-API
Priority: Medium
Preconditions:
- Targets configured
Test Data:
- Target pair: "Target A vs Target B", Delta CT Value: 5
Steps:
- View Delta CT configurations
- Add target pair with positive non-zero value
- Attempt duplicate target pair
- Import with non-existent target name
- Verify BAD_CT_DELTA error triggered
Expected Results:
- AC1: Delta CT configurations display with target pair format and value
- AC2: Target pairs with positive non-zero Delta CT values can be added
- AC3: Duplicate target pair configurations prevented
- AC4: Configured values trigger BAD_CT_DELTA errors in Delta CT rule
- AC5: Import/export supported
- AC6: Non-existent target name rows ignored on import
- AC7: Empty Delta CT or Target rows ignored on import
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1208
TC-KITCFG-032: Calibration analysis run selection
Verifies: REQ-KITCFG-020 (AC1-3)
Method: TM-HYB
Priority: High
Preconditions:
- Multiple runs with varied mix/target data
- User with Manager role
Test Data:
- Mix A with Target X
- Runs 1-5 containing Mix A/Target X observations
Steps:
- Navigate to calibration page
- Select mix and target for calibration
- Select runs to include
- Execute calibration analysis via API
- Verify observation parameters stored
Expected Results:
- AC1: Mix and target selection supported for calibration
- AC2: Run selection for calibration analysis supported
- AC3: Analysis data sent to PCR API and observation parameters stored
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-2696
TC-KITCFG-033: Calibration analysis progress and concurrency
Verifies: REQ-KITCFG-020 (AC4-6)
Method: TM-HYB
Priority: Medium
Preconditions:
- Calibration analysis in progress
Steps:
- Start calibration analysis
- Verify progress display
- Cancel analysis mid-process
- Start concurrent calibration for different target
- Test machine classification option
Expected Results:
- AC4: Progress displayed during analysis with cancel option
- AC5: Concurrent calibration for different targets supported
- AC6: Machine classification option available instead of manual
Automation Status: Manual (complex state)
Jira: BT-2696
TC-KITCFG-034: Calibration boundary management
Verifies: REQ-KITCFG-021 (AC1-7)
Method: TM-UI
Priority: High
Preconditions:
- Calibration analysis completed
Steps:
- View calibration scatter graph
- Configure X/Y axes
- Adjust boundary lines
- Verify three classification regions
- Test boundary position constraints
- Save boundary settings
- Verify audit trail
Expected Results:
- AC1: Calibration results displayed as scatter graph with configurable X/Y axes
- AC2: Two adjustable boundary lines displayed dividing plot into three regions
- AC3: Curves near boundary positions previewed during drag
- AC4: Lower boundary cannot be positioned right of upper boundary
- AC5: Boundary settings saved for routine analysis
- AC6: Calibrations can be saved with user-provided names/tags
- AC7: Boundary setting changes logged to audit trail
Automation Status: Planned
Jira: Pending
TC-KITCFG-035: Calibration version management
Verifies: REQ-KITCFG-022 (AC1-6)
Method: TM-HYB
Priority: Medium
Preconditions:
- Multiple calibrations saved for same mix/target
Steps:
- Save calibration with descriptive name
- View scatter graph for saved calibration
- Select calibration for routine analysis
- Compare two calibrations side by side
- View calibration status
- Exclude wells and re-run
Expected Results:
- AC1: Multiple calibrations can be saved with descriptive names
- AC2: Scatter graphs viewable for any saved calibration
- AC3: Calibration selection for routine analysis supported
- AC4: Two calibrations can be compared side by side
- AC5: Calibration status displayed (in progress, completed, cancelled, error)
- AC6: Specific wells can be excluded with re-run option
Automation Status: Planned
Jira: Pending
TC-KITCFG-036: Calibration display in run reports
Verifies: REQ-KITCFG-023 (AC1-3)
Method: TM-UI
Priority: Low
Preconditions:
- Calibration saved with tag
- Run with observations for calibrated mix/target
Steps:
- Navigate to run report
- View calibration scatter widget
- Select calibration by tag name
- Rollover observation points
Expected Results:
- AC1: Calibration observations displayed in background with current run in foreground
- AC2: Calibration selectable by saved tag name
- AC3: Rollover indicates whether point is from calibration or current run
Automation Status: Planned
Jira: Pending
TC-KITCFG-037: Rule mapping configuration
Verifies: REQ-KITCFG-024 (AC1-4)
Method: TM-API
Priority: High
Preconditions:
- Mixes with targets configured
- Analysis rules available
Test Data:
- Rule: "IC_FAIL"
- Mappings: Role=PC, Mix=Mix A, Target=All non-IC
Steps:
- View rule mappings display
- Configure multi-select for role, mix, target, specimen type
- Verify "All" and "All non-IC" options for target
- Verify passive targets excluded from selection
Expected Results:
- AC1: Rule mappings display with Run order, Rule, Type, Role, Mix, Target, Specimen type
- AC2: Multi-select supported for role, mix, target, specimen type assignments
- AC3: "All" and "All non-IC" options available for target selection
- AC4: Passive (reference) targets excluded from target selection
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1874
TC-KITCFG-038: Rule mapping visibility
Verifies: REQ-KITCFG-024 (AC5)
Method: TM-UI
Priority: Medium
Preconditions:
- Rules with varied assignment states
Steps:
- View rules with "hide unused rules" disabled
- Enable "hide unused rules"
- Verify unassigned rules hidden
Expected Results:
- AC5: Unused rules (rules with no assignments) can be hidden
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
Jira: BT-1874
TC-KITCFG-039: Rule settings management
Verifies: REQ-KITCFG-025 (AC1-4)
Method: TM-API
Priority: High
Preconditions:
- Rules configured with mappings
Steps:
- Configure "Is Allow Error Wells" setting
- Change rule precedence order
- Verify auto-reorder of affected rules
- Verify immediate application for subsequent executions
Expected Results:
- AC1: "Is Allow Error Wells" configurable to control rule execution against error wells
- AC2: Rule precedence order changeable within type categories
- AC3: Affected rules automatically reordered when precedence changes
- AC4: Precedence changes apply immediately for subsequent executions
Automation Status: Manual (XLSX verification — kit config CRUD via import/export)
TC-KITCFG-040: Prepend cycles management
Verifies: REQ-KITCFG-026 (AC1-4)
Method: TM-API
Priority: Low
Preconditions:
- Targets configured
Test Data:
| Target | Prepend Cycles | Valid |
|---|---|---|
| Target X | 5 | Yes |
| Target Y | -1 | No |
| Target Z | 2.5 | No |
| Target W | ABC | No |
Steps:
- View prepend cycles display
- Edit prepend cycles inline
- Test validation for non-negative integer
Expected Results:
- AC1: Prepend cycles count displayed for each target
- AC2: Inline editing of prepend cycles supported
- AC3: Prepend cycles validated as non-negative integer
- AC4: Non-integer and non-numeric values rejected
Automation Status: Planned
Jira: Pending
TC-KITCFG-041: Multi-site configuration support
Verifies: REQ-KITCFG-027 (AC1-4)
Method: TM-API
Priority: High
Preconditions:
- Multi-site client configured
- Super Admin user available
Test Data:
- Site A with Mix configuration A
- Site B with Mix configuration B
Steps:
- Login as Super Admin
- Select site for configuration
- Verify all Kit Configuration screens apply to selected site
- Verify non-Super Admin cannot see site selection
- Process run and verify correct site configuration applied
Expected Results:
- AC1: Super Admin users can select site for configuration
- AC2: All Kit Configuration screens apply to site-specific configuration
- AC3: Site selection hidden from non-Super Admin users
- AC4: Respective site configuration used when processing runs
Automation Status: Planned
Jira: Pending
TC-KITCFG-042: Help item tags management
Verifies: REQ-KITCFG-028 (AC1-4)
Method: TM-API
Priority: Low
Preconditions:
- Help items configured with and without tags
Test Data:
- Help item with tags: "PCR", "Analysis", "Troubleshooting"
- Help item without tags
Steps:
- View help items table with Tags column
- Verify comma-separated tag display
- Verify "No tags available" message for items without tags
- Import/export tags via kit configuration
Expected Results:
- AC1: Tags column displayed in help items table
- AC2: Tags displayed as comma-separated list
- AC3: "No tags available for this help item" displayed when no tags assigned
- AC4: Import/export of tags via kit configuration supported
Automation Status: Planned
Jira: Pending
TC-KITCFG-043: Dye configuration display
Verifies: REQ-KITCFG-029 (AC1: Display)
Method: TM-API
Priority: Low
Preconditions:
- User logged in with Manager or Super Admin role
- Dyes configured in the system
Test Data:
| Dye Name | Quencher | Colour |
|---|---|---|
| FAM | BHQ-1 | Green |
| VIC | BHQ-1 | Yellow |
| ROX | None | Red |
Steps:
- Retrieve dye configurations via API
- Verify all properties returned for each dye
Expected Results:
- AC1: All configured dyes displayed with columns: Dye Name, Quencher, Colour
Automation Status: Planned
Jira: Pending
TC-KITCFG-044: Dye configuration import validation
Verifies: REQ-KITCFG-029 (AC2-6: Import)
Method: TM-API
Priority: Medium
Preconditions:
- User logged in with Manager or Super Admin role
- Valid import file prepared
Test Data:
| DYE NAME | QUENCHER | COLOUR | Expected Result |
|---|---|---|---|
| FAM | BHQ-1 | Green | Imported |
| VIC | Yellow | Imported (QUENCHER optional) | |
| ROX | BHQ-2 | Imported (COLOUR optional) | |
| BHQ-1 | Blue | Ignored (DYE NAME required) |
Steps:
- Prepare import file with valid and invalid dye configurations
- Execute import via API
- Verify import results per row
- Verify validation error messages for rejected rows
Expected Results:
- AC2: Import supported via Excel
- AC3: Import columns processed: DYE NAME, QUENCHER, COLOUR
- AC4: DYE NAME validated as required string
- AC5: QUENCHER validated as optional string
- AC6: Invalid DYE NAME (empty) row rejected with status "Ignored"
Automation Status: Planned
Jira: Pending
TC-KITCFG-045: Dye configuration export
Verifies: REQ-KITCFG-029 (AC7: Export)
Method: TM-API
Priority: Low
Preconditions:
- Dyes configured in the system
Steps:
- Export dye configurations via API
- Verify exported file contains all dyes
- Verify exported columns match specification
Expected Results:
- AC7: All configured dyes exported with columns: DYE NAME, QUENCHER, COLOUR
Automation Status: Planned
Jira: Pending
TC-KITCFG-046: Westgard event codes display and export
Verifies: REQ-KITCFG-030 (AC1, AC6: Display and Export)
Method: TM-API
Priority: Low
Preconditions:
- User logged in with Manager or Super Admin role
- Westgard event codes configured in the system
Test Data:
| CODE | MESSAGE |
|---|---|
| 1-2S | One observation outside 2 SD |
| 1-3S | One observation outside 3 SD |
| 2-2S | Two consecutive observations outside 2 SD |
Steps:
- Retrieve Westgard event codes via API
- Verify all properties returned for each event code
- Export Westgard event codes via API
- Verify exported columns match specification
Expected Results:
- AC1: All configured Westgard event codes displayed with columns: CODE, MESSAGE
- AC6: All configured Westgard event codes exported with columns: CODE, MESSAGE
Automation Status: Planned
Jira: Pending
TC-KITCFG-047: Westgard event codes import validation
Verifies: REQ-KITCFG-030 (AC2-5: Import)
Method: TM-API
Priority: Medium
Preconditions:
- User logged in with Manager or Super Admin role
- Valid import file prepared
Test Data:
| CODE | MESSAGE | Expected Result |
|---|---|---|
| 1-2S | One observation outside 2 SD | Imported |
| 1-3S | One observation outside 3 SD | Imported |
| Missing code | Ignored (CODE required) | |
| 4-1S | Ignored (MESSAGE required) | |
| 1-2S | Duplicate code | Ignored (CODE must be unique) |
Steps:
- Prepare import file with valid and invalid Westgard event codes
- Execute import via API
- Verify import results per row
- Verify validation error messages for rejected rows
- Verify CODE uniqueness validation
Expected Results:
- AC2: Import supported via Excel
- AC3: Import columns processed: CODE, MESSAGE
- AC4: CODE validated as required unique string
- AC5: MESSAGE validated as required string
- AC5: Invalid CODE or MESSAGE row rejected with status "Ignored"
Automation Status: Planned
Jira: Pending
TC-KITCFG-048: Specimen types display
Verifies: REQ-KITCFG-031 (AC1-2: Display)
Method: TM-API
Priority: Low
Preconditions:
- User logged in with Manager or Super Admin role
- Specimen types configured in the system
Test Data:
- Specimen types: "Nasopharyngeal Swab", "Plasma", "Serum", "Whole Blood"
Steps:
- Retrieve specimen types via API
- Verify all specimen types returned
- Verify alphabetical sort order
Expected Results:
- AC1: All configured specimen types displayed in list view
- AC2: Specimen types sorted alphabetically by name
Automation Status: Planned
Jira: Pending
TC-KITCFG-049: Specimen types management and import validation
Verifies: REQ-KITCFG-031 (AC3-6: Management and Import)
Method: TM-API
Priority: Medium
Preconditions:
- User logged in with Manager or Super Admin role
- Valid import file prepared
Test Data:
| SPECIMEN NAME | Expected Result |
|---|---|
| Saliva | Imported |
| Urine | Imported |
| Ignored (SPECIMEN NAME required) | |
| Saliva | Ignored (duplicate - case-insensitive) |
| saliva | Ignored (duplicate - case-insensitive) |
Steps:
- Add new specimen type via API
- Attempt to add duplicate specimen type (same case)
- Attempt to add duplicate specimen type (different case)
- Prepare import file with valid and invalid specimen names
- Execute import via API
- Verify import results per row
- Verify uniqueness constraint (case-insensitive)
Expected Results:
- AC3: New specimen types with unique names can be added
- AC4: Duplicate specimen type names prevented (case-insensitive)
- AC5: Import supported via Excel with column: SPECIMEN NAME
- AC6: SPECIMEN NAME validated as required unique string
- AC6: Rows with empty or duplicate SPECIMEN NAME rejected with status "Ignored"
Automation Status: Planned
Jira: Pending
TC-KITCFG-050: Specimen types export
Verifies: REQ-KITCFG-031 (AC7: Export)
Method: TM-API
Priority: Low
Preconditions:
- Specimen types configured in the system
Steps:
- Export specimen types via API
- Verify exported file contains all specimen types
- Verify exported column matches specification
Expected Results:
- AC7: All configured specimen types exported with column: SPECIMEN NAME
Automation Status: Planned
Jira: Pending
TC-KITCFG-051: Mix and target column import validation (Phase B2)
Verifies: REQ-KITCFG-001 (Target/Mix property column ACs from CONFIG_COVERAGE_FIXES.md Phase B2)
Method: TM-API
Priority: High
Preconditions:
- Mix "TestMix" exists with targets
- Mix "QuantMix" configured for quantitative mode
Test Data:
| Column | Scenario | Value | Expected |
|---|---|---|---|
| QUANTITATIVE | Valid true | true | Imported |
| QUANTITATIVE | Valid false | false | Imported |
| QUANTITATIVE | Invalid | ABC | Ignored - "Invalid quantification" |
| QUANTITATIVE | Inconsistent | true/false in same mix | Ignored - "Multiple quantification settings" |
| DISABLED | Valid | true | Mix disabled |
| TARGET ORDER | All filled | 1,2,3 | Imported |
| TARGET ORDER | Partial | 1,(empty),3 | Ignored - "Must fill all orders or not fill at all" |
| TARGET ORDER | Non-numeric | ABC | Ignored - "Order must be numeric" |
| CALIBRATION FILE PATH | Valid S3 | s3://bucket/file.json | Imported, timestamp set |
| CHECK CLS DISCREPANCY | Valid | true/false | Imported |
| EXPECTED THRESHOLD | Passive valid | 500 | Imported |
| EXPECTED THRESHOLD | Passive >1000 | 1500 | Ignored - threshold error |
| EXPECTED THRESHOLD | Non-passive valid | 50000000 | Imported |
| EXPECTED THRESHOLD | Non-passive >100M | 150000000 | Ignored - threshold error |
| EXPORT NAME | Valid | AltName | Imported |
| PREFERRED RESULT PROVIDER | MACHINE | MACHINE | Imported |
| PREFERRED RESULT PROVIDER | DXAI | DXAI | Imported |
| PREFERRED RESULT PROVIDER | Invalid | OTHER | Ignored - invalid provider |
| CT DISCREPANCY DELTA | Valid | 5.0 | Imported |
| MAXIMUM FLUORESCENCE | Valid | 1234567890.1234567890 | Imported |
| ENABLED | false | false | Target disabled |
Steps:
- Prepare XLSX with column test scenarios
- Import via API
- Verify imported values in database
- Verify error messages in status report
Expected Results:
- QUANTITATIVE: Boolean validation, consistency within mix enforced
- DISABLED: Boolean validation, defaults to false
- TARGET ORDER: Integer, all-or-nothing per mix
- CALIBRATION FILE PATH: Optional string, sets timestamp
- CHECK CLS DISCREPANCY: Boolean, defaults to true
- EXPECTED THRESHOLD: Range varies by passive status (<=1000 vs <=100000000)
- EXPORT NAME: Optional string
- PREFERRED RESULT PROVIDER: Required, "MACHINE" or "DXAI" only
- CT DISCREPANCY DELTA: Optional float
- MAXIMUM FLUORESCENCE: Optional decimal (32,10)
- ENABLED: Boolean, defaults to true
Automation Status: Planned
Jira: Pending
TC-KITCFG-052: Combined outcomes column import validation (Phase B1)
Verifies: REQ-KITCFG-011 (Mix Result Level and Target Result Level column ACs from CONFIG_COVERAGE_FIXES.md Phase B1)
Method: TM-API
Priority: High
Preconditions:
- Mixes with targets configured
- Error codes and LIMS statuses exist
- Specimens configured when use_sample_type enabled
Test Data (Mix Result Level):
| Column | Scenario | Value | Expected |
|---|---|---|---|
| ALLOW OTHER RUNS TO BE USED | Valid true | true | Imported |
| ALLOW OTHER RUNS TO BE USED | With discrepancy | true (with CLS discrepancy) | Ignored - "'Use other runs' not allowed..." |
| ALLOW OTHER RUNS TO BE USED | Invalid | ABC | Ignored - "Invalid 'other runs to be used' value" |
| IS REPEAT | Valid | true | Imported |
| IS REPEAT | Invalid | ABC | Ignored - "Invalid is repeat" |
| MIXES MISSING | Valid | true | Imported |
| MIX LEVEL OUTCOME TYPE | Error | Error | Imported |
| MIX LEVEL OUTCOME TYPE | Lims | Lims | Imported |
| MIX LEVEL OUTCOME TYPE | Without code | Error (no code) | Ignored - "without selecting outcome type" |
| MIX MISSING | Valid | true | Imported |
| MIX MISSING | Inconsistent | Varies across rows | Ignored - "mix_missing values must be consistent" |
| USE_LATEST_UPLOADED_WELL | Valid | true | Imported |
| REQUIRED HISTORY OUTCOMES | Valid with repeat | ERR001,LIMS001 (IS REPEAT=true) | Imported |
| REQUIRED HISTORY OUTCOMES | Without repeat | ERR001 (IS REPEAT=false) | Ignored - "Previous well outcomes are not allowed" |
Test Data (Target Result Level):
| Column | Scenario | Value | Expected |
|---|---|---|---|
| RESULT | Pos | Pos | Imported |
| RESULT | Neg | Neg | Imported |
| RESULT | Any | Any | Imported |
| RESULT | Classification | Classification / Discrepancy | Imported |
| RESULT | Invalid | Unknown | Ignored - "Result not found" |
| MIN CT | Valid | 15 | Imported |
| MIN CT | Non-integer | 15.5 | Ignored - "CT value is not integer" |
| MIN CT | Out of range | 0 or 100 | Ignored - "CT is not in valid range" |
| MAX CT | Less than MIN | MIN=20, MAX=10 | Ignored - "Max CT is not greater than to min CT" |
| MIN QUANTITY | Valid | 0.0001 | Imported |
| MIN QUANTITY | Out of range | 0 or 10^25 | Ignored - "Quantity is not in valid range" |
| MAX QUANTITY | Less than MIN | MIN=1000, MAX=100 | Ignored - "Max quantity is not greater than to min quantity" |
| SPECIMEN | Valid (enabled) | Plasma | Imported |
| SPECIMEN | Invalid (enabled) | NonExistent | Ignored - "Invalid specimen name" |
| SPECIMEN | Filled (disabled) | Plasma | Ignored - "Specimen is filled when 'use sample type' config is disabled" |
Steps:
- Prepare XLSX with mix result level column test scenarios
- Prepare XLSX with target result level column test scenarios
- Import via API
- Verify validation and error messages
Expected Results:
- Mix result columns validated per documented error messages
- Target result columns validated per documented error messages
- Cross-field validations enforced (CT range, quantity range, specimen + config)
Automation Status: Planned
Jira: Pending
TC-KITCFG-053: Error resolutions column import validation (Phase B3)
Verifies: REQ-KITCFG-006 (RESOLUTION NUMBER, DROPDOWN CODE/MESSAGE, OTHER WELLS AFFECTED BY RESOLUTION, LIMS MESSAGE ACs from CONFIG_COVERAGE_FIXES.md Phase B3)
Method: TM-API
Priority: High
Preconditions:
- Resolution message numbers 1, 2, 3 configured
- LIMS statuses "DETECTED", "NOT_DETECTED" exist
Test Data:
| RESOLUTION NUMBER | DROPDOWN CODE | DROPDOWN MESSAGE | OTHER WELLS AFFECTED | LIMS MESSAGE | Expected |
|---|---|---|---|---|---|
| 1 | OPT1 | Option 1 | DETECTED | Custom Msg | Imported |
| 2 | (empty) | (empty) | ALL WELLS | (empty) | Imported |
| (empty) | OPT2 | Option 2 | DETECTED | (empty) | Ignored - "Resolution number is not filled" |
| 99 | OPT3 | Option 3 | DETECTED | (empty) | Ignored - "No matching resolution message" |
| 3 | (empty) | (empty) | ALL WELLS,DETECTED | (empty) | Ignored - "Can't have other lims along with all wells" |
Steps:
- Import error resolutions with test data
- Verify RESOLUTION NUMBER references existing resolution message
- Verify DROPDOWN CODE/MESSAGE pairing
- Verify OTHER WELLS AFFECTED BY RESOLUTION validation
- Verify LIMS MESSAGE is optional string
Expected Results:
- RESOLUTION NUMBER: Required integer, must match existing resolution message number
- DROPDOWN CODE/MESSAGE: Paired (both or neither)
- OTHER WELLS AFFECTED BY RESOLUTION: Comma-separated LIMS codes or "ALL WELLS" (not both)
- LIMS MESSAGE: Optional string
Automation Status: Planned
Jira: Pending
TC-KITCFG-054: Error codes DEFAULT LIMS EXPORT validation (Phase B4)
Verifies: REQ-KITCFG-005 (DEFAULT LIMS EXPORT column AC from CONFIG_COVERAGE_FIXES.md Phase B4)
Method: TM-API
Priority: High
Preconditions:
- LIMS status codes "DETECTED", "NOT_DETECTED" configured
- Super Administrator role
Test Data:
| ERROR CODE | ERROR TYPE | DEFAULT LIMS EXPORT | Expected |
|---|---|---|---|
| ERR001 | Standard Error | DETECTED | Imported |
| ERR002 | Standard Error | (empty) | Imported (no default) |
| ERR003 | Standard Error | NONEXISTENT | Ignored - "Default Lims Status does not match..." |
Steps:
- Import error codes with DEFAULT LIMS EXPORT values
- Verify validation against existing LIMS status codes
- Test fallback behavior: well with error code ERR001, no direct LIMS status
- Verify LIMS export uses "DETECTED" as fallback
Expected Results:
- DEFAULT LIMS EXPORT: Optional string, must match existing LIMS status code
- Invalid value: Rejected with "Default Lims Status does not match..."
- Fallback behavior: Error code's DEFAULT LIMS EXPORT used when well has no direct LIMS status
Automation Status: Planned
Jira: Pending
TC-KITCFG-055: Westgard limits DYE and RANGE START DATE validation (Phase C7)
Verifies: REQ-KITCFG-012 (DYE, RANGE START DATE column ACs from CONFIG_COVERAGE_FIXES.md Phase C7)
Method: TM-API
Priority: Medium
Preconditions:
- Mix "Mix1" with targets and dyes configured
- Control label mappings exist
Test Data:
| MIX | TARGET | DYE | RANGE START DATE | Expected |
|---|---|---|---|---|
| Mix1 | TargetA | FAM | 2026-01-15 | Imported |
| Mix1 | Global | (empty) | 2026-01-15 | Imported (DYE not required for Global) |
| Mix1 | TargetA | INVALID_DYE | 2026-01-15 | Ignored - invalid DYE |
| Mix1 | TargetA | FAM | (empty) | Ignored - date required |
| Mix1 | TargetA | FAM | invalid | Ignored - "Invalid date format..." |
| Mix1 | TargetA | FAM | 44925 | Imported (Excel serial number) |
Steps:
- Import Westgard settings with DYE and RANGE START DATE test data
- Verify DYE validation (optional for Global, required otherwise)
- Verify RANGE START DATE validation (required, accepts string or Excel serial)
- Verify timezone conversion to UTC
Expected Results:
- DYE: Optional when TARGET is "Global", required otherwise
- RANGE START DATE: Required date, accepts string format or Excel serial number
- Invalid DYE: Row rejected with appropriate error
- Invalid date: Row rejected with "Invalid date format..."
Automation Status: Planned
Jira: Pending
TC-KITCFG-056: Cross contamination limits I/O validation (Phase D1)
Verifies: REQ-KITCFG-013 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D1)
Method: TM-API
Priority: Medium
Preconditions:
- Mixes with targets and dyes configured
Test Data:
| MIX | TARGET | DYE | QUANT OR CT | POTENTIAL CONTAMINATED | POTENTIAL CONTAMINATING | Expected |
|---|---|---|---|---|---|---|
| Mix1 | TargetA | FAM | Ct | 30 | 25 | Imported (Ct mode: >= comparison) |
| Mix1 | Global | (empty) | Ct | 35 | 30 | Imported (Global applies to all) |
| Mix1 | TargetB | VIC | Quant | 100 | 1000 | Imported (Quant mode: < comparison) |
| Mix1 | TargetA | FAM | Invalid | 30 | 25 | Ignored - "Invalid option" |
| Mix1 | TargetC | INVALID | Ct | 30 | 25 | Ignored - "No any matching target..." |
| Mix1 | TargetA | FAM | Ct | (empty) | 25 | Ignored - "Contamination Value is not present" |
Steps:
- Import cross contamination limits with various scenarios
- Verify MIX, TARGET, DYE, QUANT OR CT validation
- Verify contamination value validation per mode (Ct vs Quant)
- Export and verify all columns included
Expected Results:
- MIX: Required string matching existing mix
- TARGET: "Global" or specific target (with MIX+DYE)
- DYE: Required when TARGET is not "Global"
- QUANT OR CT: Required, "Quant" or "Ct"
- Contamination values: Required numeric, comparison direction varies by mode
Automation Status: Planned
Jira: Pending
TC-KITCFG-057: Curve control limits I/O validation (Phase D2)
Verifies: REQ-KITCFG-014 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D2)
Method: TM-API
Priority: Medium
Preconditions:
- Mixes with targets configured
- Control label mappings with role aliases exist
Test Data:
| MIX | TARGET | SAMPLE ROLE | LOWER BOUND CT | UPPER BOUND CT | Expected |
|---|---|---|---|---|---|
| Mix1 | TargetA | CC | 20 | 30 | Imported |
| Global | (ignored) | CC | 18 | 32 | Imported (applies to all targets) |
| Mix1 | TargetB | CC | 25 | 35 | Imported (removes Global for this role) |
| Mix1 | TargetA | INVALID_ROLE | 20 | 30 | Ignored - role not found |
| Mix1 | TargetA | CC | (empty) | 30 | Ignored - missing required field |
Steps:
- Import curve control limits with test scenarios
- Verify MIX validation ("Global" special case)
- Verify SAMPLE ROLE validation against control label role aliases
- Verify mutual exclusivity: Global removes mix-specific, specific removes Global
- Export and verify DYE column is included (read-only)
Expected Results:
- MIX: Required, "Global" or specific mix name
- TARGET: Required when MIX is specific
- SAMPLE ROLE: Required, must match control label role alias
- Global/specific mutual exclusivity enforced
- Export includes DYE column (derived, read-only)
Automation Status: Planned
Jira: Pending
TC-KITCFG-058: Delta CT I/O validation (Phase D3)
Verifies: REQ-KITCFG-019 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D3)
Method: TM-API
Priority: Medium
Preconditions:
- Mixes "Mix1", "Mix2" with targets configured
Test Data:
| FIRST MIX | FIRST TARGET | SECOND MIX | SECOND TARGET | DELTA CT | Expected |
|---|---|---|---|---|---|
| Mix1 | TargetA | Mix1 | TargetB | 5 | Imported |
| Mix1 | TargetA | Mix2 | TargetC | 3 | Imported |
| Mix1 | TargetA | Mix1 | TargetA | 5 | Ignored (same target) |
| INVALID | TargetA | Mix1 | TargetB | 5 | Ignored - mix not found |
| Mix1 | TargetA | Mix1 | TargetB | -5 | Ignored - must be positive |
| Mix1 | TargetA | Mix1 | TargetB | 0 | Ignored - must be > 0 |
Steps:
- Import Delta CT configurations with test scenarios
- Verify all four mix/target columns validated
- Verify DELTA CT must be positive integer
- Verify cannot pair target with itself
- Export and verify all columns included
Expected Results:
- FIRST MIX, SECOND MIX: Required, must match existing mix
- FIRST TARGET, SECOND TARGET: Required, must exist in respective mix
- DELTA CT: Required positive integer (> 0)
- Cannot pair target with itself
Automation Status: Planned
Jira: Pending
TC-KITCFG-059: Known quantities I/O validation (Phase D6)
Verifies: REQ-KITCFG-015 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D6)
Method: TM-API
Priority: Medium
Preconditions:
- Roles, mixes, and targets configured
Test Data:
| ROLE | MIX | TARGET | QUANTITY | Expected |
|---|---|---|---|---|
| Std1 | Mix1 | TargetA | 1000 | Imported |
| Std2 | Mix1 | TargetA | 0.001 | Imported |
| (empty) | Mix1 | TargetA | 1000 | Ignored - role required |
| Std1 | INVALID | TargetA | 1000 | Ignored - mix not found |
| Std1 | Mix1 | TargetA | -100 | Ignored - must be positive |
| Std1 | Mix1 | TargetA | 0 | Ignored - must be > 0 |
Steps:
- Import known quantities with test scenarios
- Verify ROLE, MIX, TARGET validation
- Verify QUANTITY must be positive numeric
- Export and verify all columns included
Expected Results:
- ROLE: Required, must match existing role
- MIX: Required, must match existing mix
- TARGET: Required, must exist in specified mix
- QUANTITY: Required positive numeric (> 0)
Automation Status: Planned
Jira: Pending
TC-KITCFG-060: Test codes I/O validation (Phase D8)
Verifies: REQ-KITCFG-017 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D8)
Method: TM-API
Priority: Medium
Preconditions:
- Mixes and specimen types configured
Test Data:
| TEST CODE | MIX | SPECIMEN TYPE | Expected |
|---|---|---|---|
| HCV-001 | Mix1 | Serum | Imported |
| HCV-002 | Mix1 | serum | Imported (case-insensitive) |
| (empty) | Mix1 | Serum | Ignored - test code required |
| HCV-003 | INVALID | Serum | Ignored - mix not found |
| HCV-004 | Mix1 | INVALID | Ignored - specimen not found |
Steps:
- Import test codes with test scenarios
- Verify TEST CODE required and non-empty
- Verify MIX must match existing mix
- Verify SPECIMEN TYPE case-insensitive matching
- Export and verify all columns included
Expected Results:
- TEST CODE: Required non-empty string
- MIX: Required, must match existing mix
- SPECIMEN TYPE: Required, case-insensitive match against existing specimens
Automation Status: Planned
Jira: Pending
TC-KITCFG-061: Extraction instruments I/O validation (Phase D4)
Verifies: REQ-KITCFG-003 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D4)
Method: TM-API
Priority: Medium
Preconditions:
- Client config "Use Extraction Instruments" enabled
Test Data:
| Extraction Model | Extraction Instrument | Expected |
|---|---|---|
| Model A | Instrument 1 | Imported |
| Model A | Instrument 2 | Imported |
| (empty) | Instrument 3 | Ignored - "Extraction model: ignored" |
| Model B | (empty) | Ignored - "Extraction instrument: ignored" |
Steps:
- Enable "Use Extraction Instruments" config
- Import extraction instruments with test scenarios
- Verify model and instrument validation
- Disable config and verify all imports rejected
Expected Results:
- Extraction Model: Required string
- Extraction Instrument: Required string
- Config disabled: All rows rejected with "USE EXTRACTION INSTRUMENT DISABLED - ignored"
Automation Status: Planned
Jira: Pending
TC-KITCFG-062: Thermocycler plate size and I/O validation (Phase C4/D9)
Verifies: REQ-KITCFG-004 (Plate size and Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase C4/D9)
Method: TM-API
Priority: Medium
Preconditions:
- User with Manager role
Test Data:
| Thermocycler Model | Thermocycler Instrument | Plate Size (in file) | Expected Plate Size |
|---|---|---|---|
| ABI 7500 | TC-001 | (any) | 96 (system default) |
| ABI 7500 | TC-002 | 384 | 96 (ignored, uses default) |
| (empty) | TC-003 | 96 | Ignored - "Thermocycler model: ignored" |
| Roche LC480 | (empty) | 96 | Ignored - "Thermocycler: ignored" |
Steps:
- Import thermocyclers with various scenarios
- Verify Plate Size is NOT read from spreadsheet
- Verify all imported instruments have Plate Size = 96
- Export and verify Plate Size column is included
- Verify Plate Size displayed in Runs list view
Expected Results:
- Thermocycler Model: Required string
- Thermocycler Instrument: Required string
- Plate Size: Always defaults to 96 on import (spreadsheet value ignored)
- Export includes Plate Size column
Automation Status: Planned
Jira: Pending
TC-KITCFG-063: Tags I/O validation (Phase D7)
Verifies: REQ-KITCFG-008 (Import/Export column ACs from CONFIG_COVERAGE_FIXES.md Phase D7)
Method: TM-API
Priority: Low
Preconditions:
- User with Manager role
Test Data:
| NAME | ARCHIVE | Expected |
|---|---|---|
| Production | false | Imported |
| QC Failed | true | Imported |
| (empty) | false | Ignored - "Name is empty" |
| VeryLongTagNameThatExceedsFourtyCharacterLimit | false | Ignored - "Name must contains between 1 and 40 characters" |
| Archive | false | Ignored (reserved) |
| TestTag | invalid | Ignored - "archived does not have supported value" |
Steps:
- Import tags with various scenarios
- Verify NAME validation (1-40 chars, not "Archive")
- Verify ARCHIVE boolean validation
- Export and verify all columns included
Expected Results:
- NAME: Required string, 1-40 characters, cannot be "Archive"
- ARCHIVE: Optional boolean (true/false, yes/no, 1/0, on/off)
Automation Status: Planned
Jira: Pending
TC-KITCFG-064: Control labels export columns and roles import (Phase C2/C3)
Verifies: REQ-KITCFG-007 (Export columns and Roles import ACs from CONFIG_COVERAGE_FIXES.md Phase C2/C3)
Method: TM-API
Priority: Medium
Preconditions:
- Roles and control label mappings configured
Test Data (Roles Import):
| ROLE NAME | ROLE TYPE | HAS EXTRACTION | Expected |
|---|---|---|---|
| POS_CTRL | PC | true | Imported |
| NEG_CTRL | NC | false | Imported |
| SAMPLE | Sample | true | Imported |
| (empty) | PC | false | Ignored |
| CTRL | InvalidType | false | Ignored |
Steps:
- Import Roles with test scenarios
- Verify ROLE NAME, ROLE TYPE, HAS EXTRACTION validation
- Export Control Labels
- Verify ROLE TYPE and IS EXTRACTED columns are included (derived from Role)
Expected Results:
- ROLE NAME: Required string
- ROLE TYPE: Required, must be PC/NC/Sample/Ignore/Quantification/Quantification & PC/Crossover
- HAS EXTRACTION: Optional boolean
- Control Labels Export: Includes ROLE TYPE and IS EXTRACTED (read-only, derived)
Automation Status: Planned
Jira: Pending
TC-KITCFG-065: Rules and rules mapping I/O validation (Phase C5/C6)
Verifies: REQ-KITCFG-024 (Rules and Rules Mapping column ACs from CONFIG_COVERAGE_FIXES.md Phase C5/C6)
Method: TM-API
Priority: Medium
Preconditions:
- Rules configured with programmatic names
- Mixes with targets and dyes configured
Test Data (Rules):
| PROGRAMMATIC RULE NAME | RULE DESCRIPTION | Expected |
|---|---|---|
| IC_FAIL_RULE | IC failure detection | Imported |
| (empty) | Missing name | Ignored |
| NEW_RULE | (empty) | Ignored - description required |
Test Data (Rules Mapping):
| RULE ID | MIX | TARGET | DYE | Expected |
|---|---|---|---|---|
| IC_FAIL_RULE | Mix1 | global | (n/a) | Imported |
| IC_FAIL_RULE | Mix1 | TargetA | FAM | Imported |
| (empty) | Mix1 | TargetA | FAM | Ignored - "Rule id is not filled" |
| NONEXISTENT | Mix1 | TargetA | FAM | Ignored - "No matching rule" |
| IC_FAIL_RULE | Mix1 | TargetA | (empty) | Ignored - "Invalid mix and dye combination" |
Steps:
- Import Rules with test scenarios
- Verify PROGRAMMATIC RULE NAME as unique identifier
- Import Rules Mapping with test scenarios
- Verify RULE ID matches existing rule's programmatic_rule_name
- Verify DYE required when TARGET is not "global"
Expected Results:
- Rules: PROGRAMMATIC RULE NAME required, unique per site
- Rules: RULE DESCRIPTION required
- Rules Mapping: RULE ID required, must match existing rule
- Rules Mapping: DYE required when TARGET is not "global"
Automation Status: Planned
Jira: Pending
TC-KITCFG-066: LIMS export RESULT column validation (Phase F4)
Verifies: REQ-KITCFG-009 (RESULT column ACs from CONFIG_COVERAGE_FIXES.md Phase F4)
Method: TM-API
Priority: Medium
Preconditions:
- LIMS export codes configured
Test Data:
| CODE | MESSAGE | TYPE | RESULT | Expected |
|---|---|---|---|---|
| LIMS001 | Detected | Exclude | DETECTED | Imported |
| LIMS002 | Not Detected | Warning | NOT_DETECTED | Imported |
| LIMS003 | Inconclusive | Information | (empty) | Imported (null result) |
| LIMS004 | Invalid Result | Warning | INVALID | Ignored - invalid RESULT |
Steps:
- Import LIMS export configuration with RESULT column
- Verify RESULT validation (DETECTED, NOT_DETECTED, or null)
- Export and verify RESULT column included
Expected Results:
- RESULT: Optional, must be "DETECTED" or "NOT_DETECTED" when provided
- Invalid RESULT: Row rejected with "Lims status: ignored"
Automation Status: Planned
Jira: Pending
Browser Test Cases
Browser-level test cases verify Kit Configuration UI interactions using Behat/Mink with headless Chrome (TM-UI). These supplement the API-level test cases above with end-to-end browser validation of page rendering, navigation, RBAC enforcement, and import/export workflows.
Feature files: tests/exports/browser/kit-config.feature, tests/exports/browser/kit-config-import.feature
TC-KITCFG-B001: Page loads with correct title
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as SUPER_ADMIN, navigate to /kit-configurations, verify page title "Kit Configuration" renders.
Automation Status: Automated
TC-KITCFG-B003: Table column headers visible on page load
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Navigate to Kit Configuration page, verify column headers (Mix, Target, URL, Prepend Cycles, Delete) are displayed.
Automation Status: Automated
TC-KITCFG-B004: Navigate to Kit Configuration via sidebar
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as SUPER_ADMIN, click the kit_configuration sidebar item, verify Kit Configuration page loads.
Automation Status: Automated
TC-KITCFG-B005: Upload button is present on page
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Navigate to Kit Configuration page, verify "Upload Configuration Sheet" button is present.
Automation Status: Automated
TC-KITCFG-B006: Reset button is present on page
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Navigate to Kit Configuration page, verify "Reset Configuration Data" button is present.
Automation Status: Automated
TC-KITCFG-B008: Uploaded config populates mixes table
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, navigate to Kit Configuration page, verify at least one mix row appears in the table.
Automation Status: Automated
TC-KITCFG-B009: Uploaded config shows mix names in table
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, navigate to Kit Configuration page, verify mix name elements are displayed.
Automation Status: Automated
TC-KITCFG-B010: Uploaded config displays target names under mixes
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, navigate to Kit Configuration page, verify target names and "Date of Calibration URL Changed" column render under mixes.
Automation Status: Automated
TC-KITCFG-B011: Config table shows Save buttons for URL and Prepend Cycles
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, navigate to Kit Configuration page, verify Save buttons appear in target rows.
Automation Status: Automated
TC-KITCFG-B012: No records message disappears after config upload
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, navigate to Kit Configuration page, verify empty-state "No records" element is not present.
Automation Status: Automated
TC-KITCFG-B013: Config table displays URL input fields for targets
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, navigate to Kit Configuration page, verify URL text inputs with placeholder "Enter url" are displayed.
Automation Status: Automated
TC-KITCFG-B014: JUNIOR cannot access Kit Configuration — redirected
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as JUNIOR role, navigate to /kit-configurations, verify redirect to Run Files page.
Automation Status: Automated
TC-KITCFG-B015: MANAGER cannot access Kit Configuration — redirected
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as MANAGER role, navigate to /kit-configurations, verify redirect to Run Files page.
Automation Status: Automated
TC-KITCFG-B016: SENIOR cannot access Kit Configuration — redirected
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as SENIOR role, navigate to /kit-configurations, verify redirect to Run Files page.
Automation Status: Automated
TC-KITCFG-B017: Kit Configuration sidebar item not visible for MANAGER
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as MANAGER role, verify kit_configuration sidebar menu item is not rendered.
Automation Status: Automated
TC-KITCFG-B022: Empty configuration shows no records message
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Reset configuration data, reload Kit Configuration page, verify "No records available." message is displayed.
Automation Status: Automated
TC-KITCFG-B025: CLIENT_ADMIN cannot access Kit Configuration — redirected
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Log in as CLIENT_ADMIN role, navigate to /kit-configurations, verify Kit Configuration page title is not present.
Automation Status: Automated
TC-KITCFG-B026: Hidden file input exists for config upload
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Navigate to Kit Configuration page, verify a file input element (input[type='file']) is present in the DOM.
Automation Status: Automated
TC-KITCFG-B027: Config upload via browser populates the mixes table
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Reset config, upload config file via browser import dialog, verify "submitted" notification, reload page and verify table rows appear.
Automation Status: Automated
TC-KITCFG-B030: Reset clears configuration data when no runs exist
Verifies: REQ-KITCFG-001
Method: TM-UI
Steps: Load config via API, click "Reset Configuration Data" button, verify "reset" notification, reload and verify "No records available." message.
Automation Status: Automated
TC-KITCFG-B031: Export button opens sheet selection modal
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Load config via API, click Export button, verify modal opens with "Select options to export" and sheet options (Mix and Targets, Control Labels, Rules, Error Codes).
Automation Status: Automated
TC-KITCFG-B032: Export modal has all sheet checkboxes
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Open export modal, verify all sheet checkboxes are listed (Thermocycler Models, Curve Control Limits, Westgard Settings, Cross Contamination Limits, Reportings, Error Resolution, Test Codes, Combined Outcomes).
Automation Status: Automated
TC-KITCFG-B033: Export modal has Cancel and Export buttons
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Open export modal, verify Cancel and Export action buttons are present.
Automation Status: Automated
TC-KITCFG-B034: Export modal Cancel button closes the modal
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Open export modal, click Cancel, verify modal backdrop is removed.
Automation Status: Automated
TC-KITCFG-B035: Reset and re-import restores config data
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Load config, verify table rows, reset config, verify empty state, re-upload via browser import, verify table rows restored.
Automation Status: Automated
TC-KITCFG-B037: Export modal includes additional sheet options
Verifies: REQ-KITCFG-002
Method: TM-UI
Steps: Open export modal, verify additional sheet options (QIR-Quantification Setting, Lims Export, Client Configuration, Help Items, Features, Alerts, Known Quantities, Delta CT Combinations, Tags).
Automation Status: Automated
Gap Analysis
No gaps identified. All 233 acceptance criteria have test coverage.
Coverage by AC Type
| AC Category | Count | Covered | Notes |
|---|---|---|---|
| Display/Rendering | 35 | 35 | Verified via TM-API (data) + TM-UI (display) |
| CRUD Operations | 48 | 48 | Verified via TM-API |
| Validation Logic | 78 | 78 | Verified via TM-API with boundary tests (expanded for Phases B-D column ACs) |
| Import/Export | 54 | 54 | Verified via TM-API (expanded for Phases B-D column ACs) |
| Audit Trail | 8 | 8 | Verified via TM-API |
| Integration (Rules/Analysis) | 12 | 12 | Verified via TM-API with rule execution |
| UI Interaction | 10 | 10 | Verified via TM-UI (+ 26 browser TCs for page rendering, RBAC, import/export) |
Traceability to Existing Tests
| Test Case | Jira Tests | Automation |
|---|---|---|
| TC-KITCFG-001, TC-KITCFG-002 | BT-1927, BT-1929, BT-1931, BT-1932 | Selenium, PHPUnit |
| TC-KITCFG-003, TC-KITCFG-004 | BT-1935, BT-1139, BT-5227, BT-5308 | PHPUnit, Behat |
| TC-KITCFG-005, TC-KITCFG-006 | BT-1934 | PHPUnit |
| TC-KITCFG-007, TC-KITCFG-008 | Pending | Planned |
| TC-KITCFG-009, TC-KITCFG-010 | BT-1896, BT-3835 | PHPUnit |
| TC-KITCFG-011, TC-KITCFG-012 | BT-2212, BT-2221, BT-3862, BT-4686, BT-5270 | PHPUnit |
| TC-KITCFG-013, TC-KITCFG-014 | BT-1915, BT-3913 | PHPUnit |
| TC-KITCFG-015 | Pending | Planned |
| TC-KITCFG-016 | BT-2092, BT-4042 | PHPUnit |
| TC-KITCFG-017 | — | Behat Browser (3 scenarios in kit-config.feature) |
| TC-KITCFG-018, TC-KITCFG-019, TC-KITCFG-020 | BT-405, BT-4644, BT-3656, BT-4340, BT-3885, BT-2635, BT-5230 | Selenium, PHPUnit |
| TC-KITCFG-021, TC-KITCFG-022 | BT-2371, BT-2721 | PHPUnit |
| TC-KITCFG-023, TC-KITCFG-024 | BT-1964, BT-1533 | PHPUnit |
| TC-KITCFG-025, TC-KITCFG-026 | BT-1997, BT-2119, BT-2570 | PHPUnit |
| TC-KITCFG-027 | BT-1207 | PHPUnit |
| TC-KITCFG-028 | BT-2277, BT-4282, BT-4290 | PHPUnit |
| TC-KITCFG-029 | BT-2130, BT-2252 | PHPUnit |
| TC-KITCFG-030 | BT-1207 | PHPUnit |
| TC-KITCFG-031 | BT-1208 | PHPUnit |
| TC-KITCFG-032, TC-KITCFG-033 | BT-2696 | Behat, Manual |
| TC-KITCFG-034, TC-KITCFG-035, TC-KITCFG-036 | Pending | Planned |
| TC-KITCFG-037, TC-KITCFG-038 | BT-1874 | PHPUnit, Selenium |
| TC-KITCFG-039 | BT-3559, BT-4054 | PHPUnit |
| TC-KITCFG-040, TC-KITCFG-041, TC-KITCFG-042 | Pending | Planned |
| TC-KITCFG-043, TC-KITCFG-044, TC-KITCFG-045 | Pending | Planned |
| TC-KITCFG-046, TC-KITCFG-047 | Pending | Planned |
| TC-KITCFG-048, TC-KITCFG-049, TC-KITCFG-050 | Pending | Planned |
| TC-KITCFG-051 through TC-KITCFG-066 | Pending | Planned (Phases B-D column ACs) |
| TC-KITCFG-B001, B003, B004, B005, B006, B008, B009, B010, B011, B012, B013, B014, B015, B016, B017, B022, B025, B030 | — | Behat Browser (kit-config.feature) |
| TC-KITCFG-B026, B027, B031, B032, B033, B034, B035, B037 | — | Behat Browser (kit-config-import.feature) |
Notes
- KITCFG is a configuration-heavy domain with 31 requirements and 233 acceptance criteria
- Most requirements are testable via TM-API due to deterministic validation and CRUD operations
- Calibration features (REQ-KITCFG-020 through REQ-KITCFG-023) require TM-HYB/TM-UI due to visual graph interaction
- Multi-site configuration (REQ-KITCFG-027) requires Super Admin role for testing
- Several requirements (007, 008, 015, 021-023, 026-031) have pending Jira test coverage
- REQ-KITCFG-029, 030, 031 added per CONFIG_COVERAGE_FIXES.md Phase A for previously undocumented config sheets