Skip to main content
Version: 3.0.0

STD: Kit Configuration (KITCFG)

Version: v1.0.0 Status: Draft SRS Source: docusaurus/docs/srs/kitcfg.md Domain: 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 IDTitleACsTestsAC CoverageMethodGaps
REQ-KITCFG-001Manage Mix and Target Configuration24TC-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-B03024/24 (100%)TM-API, TM-UINone
REQ-KITCFG-002Import and Export Mix Configuration9TC-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-B0379/9 (100%)TM-API, TM-UINone
REQ-KITCFG-003Manage Extraction Instruments11TC-KITCFG-007, TC-KITCFG-04711/11 (100%)TM-APINone
REQ-KITCFG-004Manage Thermocycler Instruments10TC-KITCFG-008, TC-KITCFG-04810/10 (100%)TM-APINone
REQ-KITCFG-005Manage Error Codes9TC-KITCFG-009, TC-KITCFG-010, TC-KITCFG-0499/9 (100%)TM-APINone
REQ-KITCFG-006Manage Error Resolutions15TC-KITCFG-011, TC-KITCFG-012, TC-KITCFG-05015/15 (100%)TM-APINone
REQ-KITCFG-007Manage Control Labels13TC-KITCFG-013, TC-KITCFG-014, TC-KITCFG-05113/13 (100%)TM-APINone
REQ-KITCFG-008Manage Run Tags10TC-KITCFG-015, TC-KITCFG-05210/10 (100%)TM-APINone
REQ-KITCFG-009Manage LIMS Export Mappings10TC-KITCFG-016, TC-KITCFG-05310/10 (100%)TM-APINone
REQ-KITCFG-010Provide Unified Assay Configuration Interface5TC-KITCFG-0175/5 (100%)TM-UINone
REQ-KITCFG-011Manage Combined Outcome Rules22TC-KITCFG-018, TC-KITCFG-019, TC-KITCFG-020, TC-KITCFG-05422/22 (100%)TM-API, TM-UINone
REQ-KITCFG-012Manage Westgard Settings11TC-KITCFG-021, TC-KITCFG-022, TC-KITCFG-05511/11 (100%)TM-APINone
REQ-KITCFG-013Manage Cross Contamination Limits13TC-KITCFG-023, TC-KITCFG-02413/13 (100%)TM-APINone
REQ-KITCFG-014Manage Curve Control Limits11TC-KITCFG-025, TC-KITCFG-02611/11 (100%)TM-APINone
REQ-KITCFG-015Manage Known Quantities7TC-KITCFG-0277/7 (100%)TM-APINone
REQ-KITCFG-016Manage Reporting Cut-offs5TC-KITCFG-0285/5 (100%)TM-APINone
REQ-KITCFG-017Manage Test Codes8TC-KITCFG-0298/8 (100%)TM-APINone
REQ-KITCFG-018Manage QIR Quantification Settings4TC-KITCFG-0304/4 (100%)TM-APINone
REQ-KITCFG-019Manage Delta CT Configurations12TC-KITCFG-03112/12 (100%)TM-APINone
REQ-KITCFG-020Perform Assay Calibration Analysis6TC-KITCFG-032, TC-KITCFG-0336/6 (100%)TM-HYBNone
REQ-KITCFG-021Manage Calibration Boundaries7TC-KITCFG-0347/7 (100%)TM-UINone
REQ-KITCFG-022Manage Calibration Versions6TC-KITCFG-0356/6 (100%)TM-HYBNone
REQ-KITCFG-023Display Calibration in Run Reports3TC-KITCFG-0363/3 (100%)TM-UINone
REQ-KITCFG-024Manage Rule Mappings5TC-KITCFG-037, TC-KITCFG-0385/5 (100%)TM-APINone
REQ-KITCFG-025Manage Rule Settings4TC-KITCFG-0394/4 (100%)TM-APINone
REQ-KITCFG-026Manage Prepend Cycles4TC-KITCFG-0404/4 (100%)TM-APINone
REQ-KITCFG-027Support Multi-Site Configuration4TC-KITCFG-0414/4 (100%)TM-APINone
REQ-KITCFG-028Manage Help Item Tags4TC-KITCFG-0424/4 (100%)TM-APINone
REQ-KITCFG-029Manage Dye Configuration7TC-KITCFG-043, TC-KITCFG-044, TC-KITCFG-0457/7 (100%)TM-APINone
REQ-KITCFG-030Manage Westgard Event Codes6TC-KITCFG-046, TC-KITCFG-0476/6 (100%)TM-APINone
REQ-KITCFG-031Manage Specimen Types7TC-KITCFG-048, TC-KITCFG-049, TC-KITCFG-0507/7 (100%)TM-APINone

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:

  1. Navigate to Kit Configuration Mixes and Targets page
  2. Observe table display and sort order
  3. 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)

Jira: BT-1927, BT-1929


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:

  1. Retrieve mix configuration via API
  2. Modify mix-level properties (name, IC designation, passive target, extraction instrument, discrepancy check, result provider, enabled status)
  3. Save changes via API
  4. 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)

Jira: BT-1931, BT-1932


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:

FieldValid ValueInvalid Value
Min Fluorescence1234567890123456.123456789012345612345678901234567 (17 int digits)
Expected Threshold999.1234567890123451000.1 (4 int digits)
Max Fluorescence>= Min Fluorescence< Min Fluorescence
CT Inhibition Delta3 (positive integer)0, -1, 1.5

Steps:

  1. Modify target-level properties via API
  2. Test IC and passive target mutual exclusion
  3. Test field validations with boundary values
  4. 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)

Jira: BT-1935, BT-1139


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:

  1. Import runfile with unrecognized target/dye combination
  2. Verify unknown mix auto-creation
  3. Test validation error scenarios
  4. 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)

Jira: BT-5227, BT-5308


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:

MixTargetDyeICPassiveExtraction InstrumentCT Inhibition DeltaTarget Display Order
Mix ATarget AFAMNNExtractor132
Mix ATarget BVICYNExtractor151
Mix ATarget CROXNYExtractor1-3

Steps:

  1. Prepare import file with mix configurations
  2. Execute import via API
  3. Verify imported data
  4. 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:

  1. Export configuration via API
  2. Verify exported file contents
  3. 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:

  1. Create extraction model via API
  2. Add instruments to model
  3. Attempt to delete instrument
  4. Export/import configuration
  5. 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:

  1. Verify default "Unknown" model/instrument exists
  2. Create thermocycler model via API
  3. Add instruments to model
  4. Attempt to delete instrument
  5. 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:

  1. Retrieve error codes via API
  2. Verify all properties returned
  3. Add new error code
  4. 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)

Jira: BT-1896, BT-3835


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:

  1. Mark error code as ignored
  2. Verify deletion not allowed
  3. Check runfile reports exclude ignored codes
  4. 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:

  1. View resolutions grouped by error message
  2. Add resolution with all configuration options
  3. Specify affected wells by LIMS status, error code, or "All Wells"
  4. 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)

Jira: BT-2212, BT-2221


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:

  1. Enable/disable resolution
  2. Delete resolution
  3. Export resolutions with affected well type
  4. 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:

  1. View control label mappings
  2. Add mapping with wildcard pattern
  3. Configure backup mixes
  4. 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)

Jira: BT-1915, BT-3913


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:

  1. Configure role aliasing
  2. Configure IC delta check exclusion
  3. 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:

  1. Verify archive mode toggle behavior
  2. Attempt to edit/delete "Archived" tag
  3. Add tag with duplicate name
  4. Add tag exceeding 40 characters
  5. 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:

  1. View LIMS mappings with all properties
  2. Add LIMS code with dynamic term
  3. Edit message and type
  4. 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)

Jira: BT-2092, BT-4042


TC-KITCFG-017: Unified assay configuration interface

Verifies: REQ-KITCFG-010 (AC1-5)

Method: TM-UI

Priority: Medium

Preconditions:

  • Multiple configuration types populated

Steps:

  1. Navigate to unified assay configuration screen
  2. Verify widget consolidation
  3. Test mix/target filtering
  4. Test filter state preservation across widgets
  5. Test global settings and override behavior
  6. 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:

  1. View combined outcomes hierarchical table
  2. Configure target result conditions (Positive, Negative, Any with CT/Quantity ranges)
  3. Configure outcome properties (LIMS status, errors, IC failed, priority, name, code)
  4. 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)

Jira: BT-405, BT-4644


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:

  1. Configure role scope (PC, NC, Quantification, Sample)
  2. Attempt multi-mix for non-Sample role (expect failure)
  3. Configure multi-mix with cross-run matching
  4. 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)

Jira: BT-3656, BT-4340


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:

ScenarioInputExpected
Duplicate outcomeSame target/outcome combinationValidation error
Invalid Quantity-1Validation error
Valid Quantity0.0000000001 to 9999999999999999999999.9999999999Accepted
CT with QuantityBoth configuredValidation error

Steps:

  1. Attempt duplicate combined outcome (expect failure)
  2. Test Quantity range validation
  3. Test CT range validation against CT Reporting range
  4. Attempt CT and Quantity conditions simultaneously
  5. Import/export combined outcomes
  6. 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:

  1. View Westgard settings with all properties
  2. Verify role selector shows only valid control label mappings
  3. Create new Westgard range
  4. Edit Mean/SD for range without control data
  5. 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)

Jira: BT-2371, BT-2721


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:

  1. Change Mean/SD that affects a failure
  2. Trigger re-analysis
  3. Verify failure reset
  4. Export settings by role name
  5. 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:

  1. View cross contamination limits
  2. Add limits for multiple mix/target combinations
  3. Enforce Potential Contaminated > Potential Contaminating
  4. 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)

Jira: BT-1964, BT-1533


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:

ModeValid ValueInvalid Value
CT25 (non-decimal, >= 1)24.5, 0, -1
Quant0.0000000001 (decimal, >= min)0, negative

Steps:

  1. Test CT mode validation (non-decimal, min 1)
  2. Test Quant mode validation (decimal, min 0.0000000001)
  3. Verify configured limits used in ADJ rule evaluation
  4. 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:

  1. View curve control limits
  2. Add limits for multiple mix/target/role combinations
  3. Validate Lower/Upper Bound constraints
  4. 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)

Jira: BT-1997, BT-2119


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:

  1. Import runfile with curve control CT below lower bound (15)
  2. Verify BCC rule triggers out-of-range error
  3. Import runfile with curve control CT within range (25)
  4. Verify no BCC error
  5. 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:

RoleMixTargetKnown QuantityValid
Std1Mix ATarget X100Yes
Std2Mix ATarget X-5No
Std3Mix ATarget X0No
Std4Mix ATarget XABCNo

Steps:

  1. View known quantities display
  2. Add valid positive numeric value
  3. 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:

  1. View reporting cut-offs display
  2. Configure Groups 1-9 for RQUANT
  3. Configure Group 1 for RQUAL/RQUANTASQUAL
  4. Attempt duplicate mix/target/specimen/group combination
  5. 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:

  1. View test code mappings
  2. Add new test code
  3. Attempt duplicate test code
  4. 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)

Jira: BT-2130, BT-2252


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:

  1. View QIR settings display
  2. Configure Slope and Intercept together
  3. Attempt Slope only (expect error)
  4. Test import validation
  5. 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:

  1. View Delta CT configurations
  2. Add target pair with positive non-zero value
  3. Attempt duplicate target pair
  4. Import with non-existent target name
  5. 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:

  1. Navigate to calibration page
  2. Select mix and target for calibration
  3. Select runs to include
  4. Execute calibration analysis via API
  5. 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:

  1. Start calibration analysis
  2. Verify progress display
  3. Cancel analysis mid-process
  4. Start concurrent calibration for different target
  5. 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:

  1. View calibration scatter graph
  2. Configure X/Y axes
  3. Adjust boundary lines
  4. Verify three classification regions
  5. Test boundary position constraints
  6. Save boundary settings
  7. 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:

  1. Save calibration with descriptive name
  2. View scatter graph for saved calibration
  3. Select calibration for routine analysis
  4. Compare two calibrations side by side
  5. View calibration status
  6. 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:

  1. Navigate to run report
  2. View calibration scatter widget
  3. Select calibration by tag name
  4. 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:

  1. View rule mappings display
  2. Configure multi-select for role, mix, target, specimen type
  3. Verify "All" and "All non-IC" options for target
  4. 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:

  1. View rules with "hide unused rules" disabled
  2. Enable "hide unused rules"
  3. 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:

  1. Configure "Is Allow Error Wells" setting
  2. Change rule precedence order
  3. Verify auto-reorder of affected rules
  4. 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)

Jira: BT-3559, BT-4054


TC-KITCFG-040: Prepend cycles management

Verifies: REQ-KITCFG-026 (AC1-4)

Method: TM-API

Priority: Low

Preconditions:

  • Targets configured

Test Data:

TargetPrepend CyclesValid
Target X5Yes
Target Y-1No
Target Z2.5No
Target WABCNo

Steps:

  1. View prepend cycles display
  2. Edit prepend cycles inline
  3. 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:

  1. Login as Super Admin
  2. Select site for configuration
  3. Verify all Kit Configuration screens apply to selected site
  4. Verify non-Super Admin cannot see site selection
  5. 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:

  1. View help items table with Tags column
  2. Verify comma-separated tag display
  3. Verify "No tags available" message for items without tags
  4. 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 NameQuencherColour
FAMBHQ-1Green
VICBHQ-1Yellow
ROXNoneRed

Steps:

  1. Retrieve dye configurations via API
  2. 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 NAMEQUENCHERCOLOURExpected Result
FAMBHQ-1GreenImported
VICYellowImported (QUENCHER optional)
ROXBHQ-2Imported (COLOUR optional)
BHQ-1BlueIgnored (DYE NAME required)

Steps:

  1. Prepare import file with valid and invalid dye configurations
  2. Execute import via API
  3. Verify import results per row
  4. 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:

  1. Export dye configurations via API
  2. Verify exported file contains all dyes
  3. 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:

CODEMESSAGE
1-2SOne observation outside 2 SD
1-3SOne observation outside 3 SD
2-2STwo consecutive observations outside 2 SD

Steps:

  1. Retrieve Westgard event codes via API
  2. Verify all properties returned for each event code
  3. Export Westgard event codes via API
  4. 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:

CODEMESSAGEExpected Result
1-2SOne observation outside 2 SDImported
1-3SOne observation outside 3 SDImported
Missing codeIgnored (CODE required)
4-1SIgnored (MESSAGE required)
1-2SDuplicate codeIgnored (CODE must be unique)

Steps:

  1. Prepare import file with valid and invalid Westgard event codes
  2. Execute import via API
  3. Verify import results per row
  4. Verify validation error messages for rejected rows
  5. 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:

  1. Retrieve specimen types via API
  2. Verify all specimen types returned
  3. 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 NAMEExpected Result
SalivaImported
UrineImported
Ignored (SPECIMEN NAME required)
SalivaIgnored (duplicate - case-insensitive)
salivaIgnored (duplicate - case-insensitive)

Steps:

  1. Add new specimen type via API
  2. Attempt to add duplicate specimen type (same case)
  3. Attempt to add duplicate specimen type (different case)
  4. Prepare import file with valid and invalid specimen names
  5. Execute import via API
  6. Verify import results per row
  7. 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:

  1. Export specimen types via API
  2. Verify exported file contains all specimen types
  3. 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:

ColumnScenarioValueExpected
QUANTITATIVEValid truetrueImported
QUANTITATIVEValid falsefalseImported
QUANTITATIVEInvalidABCIgnored - "Invalid quantification"
QUANTITATIVEInconsistenttrue/false in same mixIgnored - "Multiple quantification settings"
DISABLEDValidtrueMix disabled
TARGET ORDERAll filled1,2,3Imported
TARGET ORDERPartial1,(empty),3Ignored - "Must fill all orders or not fill at all"
TARGET ORDERNon-numericABCIgnored - "Order must be numeric"
CALIBRATION FILE PATHValid S3s3://bucket/file.jsonImported, timestamp set
CHECK CLS DISCREPANCYValidtrue/falseImported
EXPECTED THRESHOLDPassive valid500Imported
EXPECTED THRESHOLDPassive >10001500Ignored - threshold error
EXPECTED THRESHOLDNon-passive valid50000000Imported
EXPECTED THRESHOLDNon-passive >100M150000000Ignored - threshold error
EXPORT NAMEValidAltNameImported
PREFERRED RESULT PROVIDERMACHINEMACHINEImported
PREFERRED RESULT PROVIDERDXAIDXAIImported
PREFERRED RESULT PROVIDERInvalidOTHERIgnored - invalid provider
CT DISCREPANCY DELTAValid5.0Imported
MAXIMUM FLUORESCENCEValid1234567890.1234567890Imported
ENABLEDfalsefalseTarget disabled

Steps:

  1. Prepare XLSX with column test scenarios
  2. Import via API
  3. Verify imported values in database
  4. 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):

ColumnScenarioValueExpected
ALLOW OTHER RUNS TO BE USEDValid truetrueImported
ALLOW OTHER RUNS TO BE USEDWith discrepancytrue (with CLS discrepancy)Ignored - "'Use other runs' not allowed..."
ALLOW OTHER RUNS TO BE USEDInvalidABCIgnored - "Invalid 'other runs to be used' value"
IS REPEATValidtrueImported
IS REPEATInvalidABCIgnored - "Invalid is repeat"
MIXES MISSINGValidtrueImported
MIX LEVEL OUTCOME TYPEErrorErrorImported
MIX LEVEL OUTCOME TYPELimsLimsImported
MIX LEVEL OUTCOME TYPEWithout codeError (no code)Ignored - "without selecting outcome type"
MIX MISSINGValidtrueImported
MIX MISSINGInconsistentVaries across rowsIgnored - "mix_missing values must be consistent"
USE_LATEST_UPLOADED_WELLValidtrueImported
REQUIRED HISTORY OUTCOMESValid with repeatERR001,LIMS001 (IS REPEAT=true)Imported
REQUIRED HISTORY OUTCOMESWithout repeatERR001 (IS REPEAT=false)Ignored - "Previous well outcomes are not allowed"

Test Data (Target Result Level):

ColumnScenarioValueExpected
RESULTPosPosImported
RESULTNegNegImported
RESULTAnyAnyImported
RESULTClassificationClassification / DiscrepancyImported
RESULTInvalidUnknownIgnored - "Result not found"
MIN CTValid15Imported
MIN CTNon-integer15.5Ignored - "CT value is not integer"
MIN CTOut of range0 or 100Ignored - "CT is not in valid range"
MAX CTLess than MINMIN=20, MAX=10Ignored - "Max CT is not greater than to min CT"
MIN QUANTITYValid0.0001Imported
MIN QUANTITYOut of range0 or 10^25Ignored - "Quantity is not in valid range"
MAX QUANTITYLess than MINMIN=1000, MAX=100Ignored - "Max quantity is not greater than to min quantity"
SPECIMENValid (enabled)PlasmaImported
SPECIMENInvalid (enabled)NonExistentIgnored - "Invalid specimen name"
SPECIMENFilled (disabled)PlasmaIgnored - "Specimen is filled when 'use sample type' config is disabled"

Steps:

  1. Prepare XLSX with mix result level column test scenarios
  2. Prepare XLSX with target result level column test scenarios
  3. Import via API
  4. 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 NUMBERDROPDOWN CODEDROPDOWN MESSAGEOTHER WELLS AFFECTEDLIMS MESSAGEExpected
1OPT1Option 1DETECTEDCustom MsgImported
2(empty)(empty)ALL WELLS(empty)Imported
(empty)OPT2Option 2DETECTED(empty)Ignored - "Resolution number is not filled"
99OPT3Option 3DETECTED(empty)Ignored - "No matching resolution message"
3(empty)(empty)ALL WELLS,DETECTED(empty)Ignored - "Can't have other lims along with all wells"

Steps:

  1. Import error resolutions with test data
  2. Verify RESOLUTION NUMBER references existing resolution message
  3. Verify DROPDOWN CODE/MESSAGE pairing
  4. Verify OTHER WELLS AFFECTED BY RESOLUTION validation
  5. 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 CODEERROR TYPEDEFAULT LIMS EXPORTExpected
ERR001Standard ErrorDETECTEDImported
ERR002Standard Error(empty)Imported (no default)
ERR003Standard ErrorNONEXISTENTIgnored - "Default Lims Status does not match..."

Steps:

  1. Import error codes with DEFAULT LIMS EXPORT values
  2. Verify validation against existing LIMS status codes
  3. Test fallback behavior: well with error code ERR001, no direct LIMS status
  4. 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:

MIXTARGETDYERANGE START DATEExpected
Mix1TargetAFAM2026-01-15Imported
Mix1Global(empty)2026-01-15Imported (DYE not required for Global)
Mix1TargetAINVALID_DYE2026-01-15Ignored - invalid DYE
Mix1TargetAFAM(empty)Ignored - date required
Mix1TargetAFAMinvalidIgnored - "Invalid date format..."
Mix1TargetAFAM44925Imported (Excel serial number)

Steps:

  1. Import Westgard settings with DYE and RANGE START DATE test data
  2. Verify DYE validation (optional for Global, required otherwise)
  3. Verify RANGE START DATE validation (required, accepts string or Excel serial)
  4. 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:

MIXTARGETDYEQUANT OR CTPOTENTIAL CONTAMINATEDPOTENTIAL CONTAMINATINGExpected
Mix1TargetAFAMCt3025Imported (Ct mode: >= comparison)
Mix1Global(empty)Ct3530Imported (Global applies to all)
Mix1TargetBVICQuant1001000Imported (Quant mode: < comparison)
Mix1TargetAFAMInvalid3025Ignored - "Invalid option"
Mix1TargetCINVALIDCt3025Ignored - "No any matching target..."
Mix1TargetAFAMCt(empty)25Ignored - "Contamination Value is not present"

Steps:

  1. Import cross contamination limits with various scenarios
  2. Verify MIX, TARGET, DYE, QUANT OR CT validation
  3. Verify contamination value validation per mode (Ct vs Quant)
  4. 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:

MIXTARGETSAMPLE ROLELOWER BOUND CTUPPER BOUND CTExpected
Mix1TargetACC2030Imported
Global(ignored)CC1832Imported (applies to all targets)
Mix1TargetBCC2535Imported (removes Global for this role)
Mix1TargetAINVALID_ROLE2030Ignored - role not found
Mix1TargetACC(empty)30Ignored - missing required field

Steps:

  1. Import curve control limits with test scenarios
  2. Verify MIX validation ("Global" special case)
  3. Verify SAMPLE ROLE validation against control label role aliases
  4. Verify mutual exclusivity: Global removes mix-specific, specific removes Global
  5. 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 MIXFIRST TARGETSECOND MIXSECOND TARGETDELTA CTExpected
Mix1TargetAMix1TargetB5Imported
Mix1TargetAMix2TargetC3Imported
Mix1TargetAMix1TargetA5Ignored (same target)
INVALIDTargetAMix1TargetB5Ignored - mix not found
Mix1TargetAMix1TargetB-5Ignored - must be positive
Mix1TargetAMix1TargetB0Ignored - must be > 0

Steps:

  1. Import Delta CT configurations with test scenarios
  2. Verify all four mix/target columns validated
  3. Verify DELTA CT must be positive integer
  4. Verify cannot pair target with itself
  5. 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:

ROLEMIXTARGETQUANTITYExpected
Std1Mix1TargetA1000Imported
Std2Mix1TargetA0.001Imported
(empty)Mix1TargetA1000Ignored - role required
Std1INVALIDTargetA1000Ignored - mix not found
Std1Mix1TargetA-100Ignored - must be positive
Std1Mix1TargetA0Ignored - must be > 0

Steps:

  1. Import known quantities with test scenarios
  2. Verify ROLE, MIX, TARGET validation
  3. Verify QUANTITY must be positive numeric
  4. 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 CODEMIXSPECIMEN TYPEExpected
HCV-001Mix1SerumImported
HCV-002Mix1serumImported (case-insensitive)
(empty)Mix1SerumIgnored - test code required
HCV-003INVALIDSerumIgnored - mix not found
HCV-004Mix1INVALIDIgnored - specimen not found

Steps:

  1. Import test codes with test scenarios
  2. Verify TEST CODE required and non-empty
  3. Verify MIX must match existing mix
  4. Verify SPECIMEN TYPE case-insensitive matching
  5. 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 ModelExtraction InstrumentExpected
Model AInstrument 1Imported
Model AInstrument 2Imported
(empty)Instrument 3Ignored - "Extraction model: ignored"
Model B(empty)Ignored - "Extraction instrument: ignored"

Steps:

  1. Enable "Use Extraction Instruments" config
  2. Import extraction instruments with test scenarios
  3. Verify model and instrument validation
  4. 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 ModelThermocycler InstrumentPlate Size (in file)Expected Plate Size
ABI 7500TC-001(any)96 (system default)
ABI 7500TC-00238496 (ignored, uses default)
(empty)TC-00396Ignored - "Thermocycler model: ignored"
Roche LC480(empty)96Ignored - "Thermocycler: ignored"

Steps:

  1. Import thermocyclers with various scenarios
  2. Verify Plate Size is NOT read from spreadsheet
  3. Verify all imported instruments have Plate Size = 96
  4. Export and verify Plate Size column is included
  5. 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:

NAMEARCHIVEExpected
ProductionfalseImported
QC FailedtrueImported
(empty)falseIgnored - "Name is empty"
VeryLongTagNameThatExceedsFourtyCharacterLimitfalseIgnored - "Name must contains between 1 and 40 characters"
ArchivefalseIgnored (reserved)
TestTaginvalidIgnored - "archived does not have supported value"

Steps:

  1. Import tags with various scenarios
  2. Verify NAME validation (1-40 chars, not "Archive")
  3. Verify ARCHIVE boolean validation
  4. 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 NAMEROLE TYPEHAS EXTRACTIONExpected
POS_CTRLPCtrueImported
NEG_CTRLNCfalseImported
SAMPLESampletrueImported
(empty)PCfalseIgnored
CTRLInvalidTypefalseIgnored

Steps:

  1. Import Roles with test scenarios
  2. Verify ROLE NAME, ROLE TYPE, HAS EXTRACTION validation
  3. Export Control Labels
  4. 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 NAMERULE DESCRIPTIONExpected
IC_FAIL_RULEIC failure detectionImported
(empty)Missing nameIgnored
NEW_RULE(empty)Ignored - description required

Test Data (Rules Mapping):

RULE IDMIXTARGETDYEExpected
IC_FAIL_RULEMix1global(n/a)Imported
IC_FAIL_RULEMix1TargetAFAMImported
(empty)Mix1TargetAFAMIgnored - "Rule id is not filled"
NONEXISTENTMix1TargetAFAMIgnored - "No matching rule"
IC_FAIL_RULEMix1TargetA(empty)Ignored - "Invalid mix and dye combination"

Steps:

  1. Import Rules with test scenarios
  2. Verify PROGRAMMATIC RULE NAME as unique identifier
  3. Import Rules Mapping with test scenarios
  4. Verify RULE ID matches existing rule's programmatic_rule_name
  5. 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:

CODEMESSAGETYPERESULTExpected
LIMS001DetectedExcludeDETECTEDImported
LIMS002Not DetectedWarningNOT_DETECTEDImported
LIMS003InconclusiveInformation(empty)Imported (null result)
LIMS004Invalid ResultWarningINVALIDIgnored - invalid RESULT

Steps:

  1. Import LIMS export configuration with RESULT column
  2. Verify RESULT validation (DETECTED, NOT_DETECTED, or null)
  3. 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 CategoryCountCoveredNotes
Display/Rendering3535Verified via TM-API (data) + TM-UI (display)
CRUD Operations4848Verified via TM-API
Validation Logic7878Verified via TM-API with boundary tests (expanded for Phases B-D column ACs)
Import/Export5454Verified via TM-API (expanded for Phases B-D column ACs)
Audit Trail88Verified via TM-API
Integration (Rules/Analysis)1212Verified via TM-API with rule execution
UI Interaction1010Verified via TM-UI (+ 26 browser TCs for page rendering, RBAC, import/export)

Traceability to Existing Tests

Test CaseJira TestsAutomation
TC-KITCFG-001, TC-KITCFG-002BT-1927, BT-1929, BT-1931, BT-1932Selenium, PHPUnit
TC-KITCFG-003, TC-KITCFG-004BT-1935, BT-1139, BT-5227, BT-5308PHPUnit, Behat
TC-KITCFG-005, TC-KITCFG-006BT-1934PHPUnit
TC-KITCFG-007, TC-KITCFG-008PendingPlanned
TC-KITCFG-009, TC-KITCFG-010BT-1896, BT-3835PHPUnit
TC-KITCFG-011, TC-KITCFG-012BT-2212, BT-2221, BT-3862, BT-4686, BT-5270PHPUnit
TC-KITCFG-013, TC-KITCFG-014BT-1915, BT-3913PHPUnit
TC-KITCFG-015PendingPlanned
TC-KITCFG-016BT-2092, BT-4042PHPUnit
TC-KITCFG-017Behat Browser (3 scenarios in kit-config.feature)
TC-KITCFG-018, TC-KITCFG-019, TC-KITCFG-020BT-405, BT-4644, BT-3656, BT-4340, BT-3885, BT-2635, BT-5230Selenium, PHPUnit
TC-KITCFG-021, TC-KITCFG-022BT-2371, BT-2721PHPUnit
TC-KITCFG-023, TC-KITCFG-024BT-1964, BT-1533PHPUnit
TC-KITCFG-025, TC-KITCFG-026BT-1997, BT-2119, BT-2570PHPUnit
TC-KITCFG-027BT-1207PHPUnit
TC-KITCFG-028BT-2277, BT-4282, BT-4290PHPUnit
TC-KITCFG-029BT-2130, BT-2252PHPUnit
TC-KITCFG-030BT-1207PHPUnit
TC-KITCFG-031BT-1208PHPUnit
TC-KITCFG-032, TC-KITCFG-033BT-2696Behat, Manual
TC-KITCFG-034, TC-KITCFG-035, TC-KITCFG-036PendingPlanned
TC-KITCFG-037, TC-KITCFG-038BT-1874PHPUnit, Selenium
TC-KITCFG-039BT-3559, BT-4054PHPUnit
TC-KITCFG-040, TC-KITCFG-041, TC-KITCFG-042PendingPlanned
TC-KITCFG-043, TC-KITCFG-044, TC-KITCFG-045PendingPlanned
TC-KITCFG-046, TC-KITCFG-047PendingPlanned
TC-KITCFG-048, TC-KITCFG-049, TC-KITCFG-050PendingPlanned
TC-KITCFG-051 through TC-KITCFG-066PendingPlanned (Phases B-D column ACs)
TC-KITCFG-B001, B003, B004, B005, B006, B008, B009, B010, B011, B012, B013, B014, B015, B016, B017, B022, B025, B030Behat Browser (kit-config.feature)
TC-KITCFG-B026, B027, B031, B032, B033, B034, B035, B037Behat 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