Skip to main content
Version: Next

STD: Site Management (SITE)

Version: v1.0.0 Status: Draft SRS Source: docusaurus/docs/srs/site.md Domain: SITE


Overview

This document specifies tests for the Site Management domain, which covers creating, configuring, and managing organizational sites with automatic cloud storage provisioning.

Domain Characteristics:

  • Primary function: Site lifecycle management (create, configure, edit)
  • Secondary function: S3 storage provisioning and folder structure management
  • Configuration dependency: Multi-site mode, S3 structure preservation settings

Test Method Rationale: Per Test Plan section 3.3, Configuration domains use TM-API as primary method with TM-UI secondary. SITE combines configuration with storage provisioning, so TM-HYB is used where storage verification requires backend checks while user actions flow through UI.

Test Case Convention: Steps describe logical actions, not UI mechanics. Use "Create site with name X" or "Modify S3 folder name to Y", not "Click the Add Site button" or "Enter text in the folder name field". This ensures test intent survives UI redesigns.


Coverage Summary

REQ IDTitleACsTestsAC CoverageMethodGaps
REQ-SITE-001Provision Storage on Site Creation6TC-SITE-001, TC-SITE-002, TC-SITE-020, TC-SITE-021, TC-SITE-022, TC-SITE-0236/6 (100%)TM-HYB, TM-UINone
REQ-SITE-002Configure S3 Structure Preservation5TC-SITE-003, TC-SITE-004, TC-SITE-024, TC-SITE-0255/5 (100%)TM-HYB, TM-UINone
REQ-SITE-003Specify Custom S3 Folder Name5TC-SITE-005, TC-SITE-006, TC-SITE-0265/5 (100%)TM-HYB, TM-UINone
REQ-SITE-004Modify Custom S3 Folder Name4TC-SITE-0074/4 (100%)TM-HYBNone
REQ-SITE-005Enforce Multi-site Mode Restrictions8TC-SITE-008, TC-SITE-009, TC-SITE-027, TC-SITE-0288/8 (100%)TM-UINone
NFR-SITE-001Storage Operation Reliability3TC-SITE-0103/3 (100%)TM-APINone

Totals: 6 REQs, 31 ACs, 19 Test Cases, 100% Coverage


Test Cases

TC-SITE-001: Storage folder creation on site creation

Verifies: REQ-SITE-001 (AC1, AC2, AC3)

Method: TM-HYB (UI for site creation, API for storage verification)

Priority: High

Preconditions:

  • User logged in with Admin role or higher
  • Storage system accessible

Test Data:

  • Site name: "test_site"
  • Expected storage path: storage/app/test_site/LIMS_Reports

Steps:

  1. Create new site with name "test_site"
  2. Verify site creation completes successfully
  3. Verify storage folder exists via backend/API check

Expected Results:

  • AC1: LIMS_Reports folder created at configured storage path
  • AC2: Folder creation completes as part of site creation process
  • AC3: Folder created at path storage/app/test_site/LIMS_Reports

Automation Status: Automated (Browser — UI verification; storage path verification beyond browser scope)

Jira: BT-3999


TC-SITE-002: Site creation access control and error handling

Verifies: REQ-SITE-001 (AC4, Error Handling)

Method: TM-HYB (API for role verification, UI for error display)

Priority: High

Preconditions:

  • Multiple user accounts with different roles available

Test Data:

  • Users: Super Admin, Admin, Senior User, Junior User

Steps:

  1. Attempt site creation as Junior User
  2. Verify creation is denied
  3. Attempt site creation as Senior User
  4. Verify creation is denied
  5. Attempt site creation as Admin
  6. Verify creation succeeds
  7. Configure storage to be inaccessible (if testable)
  8. Attempt site creation
  9. Verify error displayed

Expected Results:

  • AC4: Site creation restricted to Admin role or higher
  • Error: Storage path inaccessible displays storage access error
  • Error: Existing folder used without error

Automation Status: Automated (Browser — role-based access control verification)

Jira: BT-3999


TC-SITE-003: S3 structure preservation toggle access and folder structure

Verifies: REQ-SITE-002 (AC1, AC2, AC3, AC4)

Method: TM-HYB (UI for toggle, API for folder verification)

Priority: High

Preconditions:

  • User logged in as Super Admin
  • Multi-site mode enabled
  • Environment name: "test_env"

Test Data:

  • First site name: "first_site"

Steps:

  1. Navigate to Sites page as Super Admin
  2. Verify S3 structure preservation toggle is visible
  3. Enable preservation toggle
  4. Create or verify first site
  5. Verify storage folders exist at root level
  6. Disable preservation toggle
  7. Trigger file operation (import/export)
  8. Verify new files created at site-specific path

Expected Results:

  • AC1: Toggle for S3 structure preservation visible on Sites page
  • AC2: Toggle restricted to Super Admin users
  • AC3: When enabled, first site uses root-level folders (<env>/LIMS_Export, <env>/Runs)
  • AC4: When disabled, first site uses site-specific folders (<env>/<site_name>/LIMS_Export, <env>/<site_name>/Runs)

Automation Status: Automated (Browser)

Jira: BT-4735


TC-SITE-004: S3 structure migration behavior

Verifies: REQ-SITE-002 (AC5, AC6)

Method: TM-HYB (UI for toggle, API for file verification)

Priority: Medium

Preconditions:

  • First site "Azkaban" exists
  • Preservation toggle currently enabled
  • Files exist at root-level storage

Test Data:

  • Existing file: "existing_export.csv" at root level
  • New import file: "sample.sds"

Steps:

  1. Verify existing files at root-level folders
  2. Disable S3 structure preservation toggle
  3. Import sample.sds
  4. Export run
  5. Verify file locations

Expected Results:

  • AC5: Existing files remain at original root-level location (not migrated)
  • AC6: New files created at site-specific folder structure

Automation Status: Automated (Browser)

Jira: BT-4735


TC-SITE-005: Custom S3 folder name at site creation - default behavior

Verifies: REQ-SITE-003 (AC1, AC2, AC3)

Method: TM-HYB (UI for site creation, API for storage verification)

Priority: High

Preconditions:

  • User logged in as Admin or higher
  • LIMS export location set to cloud
  • Multi-site mode enabled
  • S3 structure preservation disabled (for non-first sites)

Test Data:

  • Site name: "Azkaban"
  • Import file: "sample.sds"

Steps:

  1. Create new site with name "Azkaban"
  2. Leave Custom S3 Folder Name field blank
  3. Import sample.sds
  4. Export run
  5. Verify storage folder path

Expected Results:

  • AC1: Custom folder name field available during site creation
  • AC2: When blank, system uses site name as folder name
  • Folders created at Amazon S3/Buckets/<env>/Azkaban/LIMS_Export

Automation Status: Automated (Browser)

Jira: BT-4735


TC-SITE-006: Custom S3 folder name at site creation - custom value

Verifies: REQ-SITE-003 (AC3, AC4, AC5)

Method: TM-HYB (UI for site creation, API for storage verification)

Priority: High

Preconditions:

  • Same as TC-SITE-005

Test Data:

  • Site name: "Azkaban"
  • Custom folder name: "cell_one"
  • Import file: "sample.sds"

Steps:

  1. Create new site with name "Azkaban"
  2. Set Custom S3 Folder Name to "cell_one"
  3. Import sample.sds
  4. Export run
  5. Verify storage folder paths

Expected Results:

  • AC3: Custom folder name used instead of site name
  • AC4: LIMS export storage at Amazon S3/Buckets/<env>/cell_one/LIMS_Export
  • AC5: Completed files storage at Amazon S3/Buckets/<env>/cell_one/Runs/Completed_files

Automation Status: Automated (Browser)

Jira: BT-4735


TC-SITE-007: Modify custom S3 folder name for existing site

Verifies: REQ-SITE-004 (AC1, AC2, AC3, AC4)

Method: TM-HYB (UI for edit, API for storage verification)

Priority: High

Preconditions:

  • Site "Azkaban" exists with custom folder name "cell_one"
  • Files have been imported/exported to cell_one folder
  • LIMS export location set to cloud

Test Data:

  • Original folder: "cell_one"
  • New folder: "nurburgring"
  • Import files for before/after operations

Steps:

  1. Edit site "Azkaban"
  2. Change custom S3 folder name from "cell_one" to "nurburgring"
  3. Save changes
  4. Import new file
  5. Export new run
  6. Verify both folder paths

Expected Results:

  • AC1: Edit capability available for custom folder name
  • AC2: New storage directories created at nurburgring path
  • AC3: Existing directories remain unchanged at cell_one path
  • AC4: New imports/exports use nurburgring folder; existing files remain at cell_one

Automation Status: Automated (Browser)

Jira: BT-4735


TC-SITE-008: Multi-site mode disabled - feature restrictions

Verifies: REQ-SITE-005 (AC1, AC2, AC3, AC4, AC8)

Method: TM-UI

Priority: High

Preconditions:

  • Two sites exist (Lab 1, Lab 2)
  • User logged in as Super Admin

Steps:

  1. Disable Use Multiple Sites setting
  2. Navigate to Sites page
  3. Verify control states
  4. Attempt site creation
  5. Attempt site editing
  6. Attempt toggling site enabled status
  7. Attempt modifying S3 structure preservation
  8. Re-enable Use Multiple Sites
  9. Verify controls restored

Expected Results:

  • AC1: Site creation prevented when multi-site disabled
  • AC2: Site editing prevented when multi-site disabled
  • AC3: Site enabled toggle prevented when multi-site disabled
  • AC4: S3 structure preservation modification prevented when multi-site disabled
  • AC8: Re-enabling multi-site restores all site management features

Automation Status: Automated (Browser)

Jira: BT-4773


TC-SITE-009: Multi-site mode disabled - default folder structure

Verifies: REQ-SITE-005 (AC5, AC6, AC7)

Method: TM-HYB (UI for settings, API for storage verification)

Priority: High

Preconditions:

  • Site "Azkaban" exists with custom folder name
  • LIMS export location set to cloud
  • S3 structure preservation is disabled

Test Data:

  • Import file: "sample.sds"

Steps:

  1. Disable Use Multiple Sites
  2. Import file
  3. Export run
  4. Verify storage paths

Expected Results:

  • AC5: System uses default root-level folder structure
  • AC6: Custom S3 folder name settings ignored
  • AC7: Files created at Amazon S3/Buckets/<env>/LIMS_Export and Amazon S3/Buckets/<env>/Runs/Completed_files

Automation Status: Automated (Browser)

Jira: BT-4735


TC-SITE-010: Storage operation reliability

Verifies: NFR-SITE-001 (AC1, AC2, AC3)

Method: TM-API

Priority: Medium

Preconditions:

  • Test environment with controllable storage behavior

Test Data:

  • Multiple concurrent site creation requests
  • Site with existing data

Steps:

  1. Initiate site creation
  2. Simulate storage failure mid-operation
  3. Verify no partial folder state
  4. Submit multiple concurrent site creation requests
  5. Verify all complete successfully without conflicts
  6. Modify folder settings for site with existing data
  7. Verify existing data unchanged

Expected Results:

  • AC1: Folder creation is atomic (complete or fail, no partial state)
  • AC2: Concurrent folder operations handled safely
  • AC3: Existing data not modified when folder settings change

Automation Status: Manual (requires infrastructure manipulation)

Jira: [Pending]

Deviation: TM-MAN used for AC1 and AC2 due to requirement for infrastructure-level test setup. Remediation: Consider integration test with mock storage for atomicity verification.


TC-SITE-020: Sites page loads with title and site table

Verifies: REQ-SITE-001

Method: TM-UI

Priority: Medium

Preconditions:

  • User logged in as Super Admin

Steps:

  1. Navigate to /sites
  2. Verify page title element and site table are rendered
  3. Verify at least one site row is present

Expected Results:

  • Sites page renders with screen title "Sites"
  • Flex table header is displayed
  • At least one site row is visible

Automation Status: Automated (Browser)


TC-SITE-021: Sites table displays expected column headers for Super Admin

Verifies: REQ-SITE-001

Method: TM-UI

Priority: Medium

Preconditions:

  • User logged in as Super Admin

Steps:

  1. Navigate to /sites
  2. Verify table header columns

Expected Results:

  • Table displays "Name" column
  • Table displays "Custom S3 Folder Name" column
  • Table displays "Edit" column
  • Table displays "Enabled" column

Automation Status: Automated (Browser)


TC-SITE-022: Default site present after fresh seed

Verifies: REQ-SITE-001

Method: TM-UI

Priority: Medium

Preconditions:

  • User logged in as Super Admin
  • Database freshly seeded

Steps:

  1. Navigate to /sites
  2. Verify at least one default site row exists

Expected Results:

  • At least one site row is present after database seeding

Automation Status: Automated (Browser)


TC-SITE-023: Sidebar navigation to Sites page

Verifies: REQ-SITE-001

Method: TM-UI

Priority: Medium

Preconditions:

  • User logged in as Super Admin

Steps:

  1. Navigate to home page
  2. Click the "sites" sidebar item
  3. Verify Sites page loads with table

Expected Results:

  • Sidebar contains a "sites" navigation item
  • Clicking sidebar item loads the Sites page
  • Sites page displays table header and site data

Automation Status: Automated (Browser)


TC-SITE-024: Create site via UI when multisite is enabled

Verifies: REQ-SITE-002

Method: TM-UI

Priority: High

Preconditions:

  • User logged in as Super Admin
  • Multi-site mode enabled

Steps:

  1. Create a site named "Test Lab Alpha" via the UI
  2. Verify site appears in the sites table

Expected Results:

  • Site creation succeeds when multisite feature is enabled
  • Newly created site "Test Lab Alpha" is visible in the table

Automation Status: Automated (Browser)


TC-SITE-025: Create button disabled when multisite feature is off

Verifies: REQ-SITE-002

Method: TM-UI

Priority: High

Preconditions:

  • User logged in as Super Admin
  • Multi-site feature (use_multiple_sites) disabled

Steps:

  1. Navigate to /sites
  2. Verify create button is present but disabled

Expected Results:

  • Create Site button is rendered in a disabled state
  • Site creation is not possible when multisite is off

Automation Status: Automated (Browser)


TC-SITE-026: Multisite feature toggle visible to Super Admin

Verifies: REQ-SITE-003

Method: TM-UI

Priority: Medium

Preconditions:

  • User logged in as Super Admin

Steps:

  1. Navigate to /sites
  2. Verify "Use Multiple Sites" toggle is visible

Expected Results:

  • "Use Multiple Sites" toggle is displayed on the Sites page for Super Admin

Automation Status: Automated (Browser)


TC-SITE-027: MANAGER can access Sites page but cannot see Edit column

Verifies: REQ-SITE-005

Method: TM-UI

Priority: High

Preconditions:

  • User with MANAGER role exists

Steps:

  1. Log in as MANAGER user
  2. Navigate to /sites
  3. Verify page loads with site table
  4. Verify Edit column is not visible

Expected Results:

  • MANAGER role can access the Sites page
  • Site rows are displayed
  • Edit column is hidden (fewer columns than Super Admin view)

Automation Status: Automated (Browser)


TC-SITE-028: JUNIOR role is redirected away from Sites page

Verifies: REQ-SITE-005

Method: TM-UI

Priority: High

Preconditions:

  • User with JUNIOR role exists

Steps:

  1. Log in as JUNIOR user
  2. Attempt to navigate to /sites
  3. Verify user is redirected away

Expected Results:

  • JUNIOR role does not have access to the Sites page
  • User is redirected to a different page (no "Sites" screen title displayed)

Automation Status: Automated (Browser)


Gap Analysis

No gaps identified. All 31 acceptance criteria have test coverage.

Coverage by AC Type

AC CategoryCountCoveredNotes
Storage/Folder Operations1212Verified via TM-HYB (API storage checks)
Access Control44Verified via TM-HYB (role-based tests)
Configuration Toggle66Verified via TM-UI and TM-HYB
Feature Restrictions66Verified via TM-UI
Non-Functional33Verified via TM-API/TM-MAN

Traceability to Existing Tests

Test CaseJira TestAutomation
TC-SITE-001, TC-SITE-002BT-3999Behat
TC-SITE-003, TC-SITE-004, TC-SITE-005, TC-SITE-006, TC-SITE-007, TC-SITE-009BT-4735Behat
TC-SITE-008BT-4773Selenium
TC-SITE-010PendingManual
TC-SITE-020 through TC-SITE-028Behat (Browser)

Notes

  • SITE domain combines configuration (S3 settings) with backend operations (storage provisioning)
  • Multi-site mode acts as a feature gate, disabling most SITE functionality when off
  • S3 structure preservation only affects the first site; subsequent sites always use site-specific folders
  • Folder name changes do not migrate existing data; this is by design per OQ-01 resolution
  • NFR-SITE-001 tests may require mock storage or infrastructure-level test setup