Testing Documentation

Audience: engineers, QA, and CI/release owners working on Stella Ops. Purpose: the entry point for how to test the Stella Ops platform — local validation before you commit, the manifest-driven test framework, CI/CD lanes, and specialized testing disciplines.

Stella Ops is a self-hosted DevOps vulnerability scanner and release control plane. Its testing strategy is manifest-driven: a versioned manifest (not filename globs) is the source of truth for which suites run, where, and when. Start with the Test Suite Overview for the high-level map, then use the index below.


Quick Start

Before Committing

# Quick smoke test (~2 min)
./devops/scripts/validate-before-commit.sh quick

# Full PR validation (~15 min)
./devops/scripts/validate-before-commit.sh

# Windows
.\devops\scripts\validate-before-commit.ps1

See PRE_COMMIT_CHECKLIST.md for the validation checklist.


Documentation Index

Local Testing

DocumentDescription
LOCAL_CI_GUIDE.mdComplete guide to local CI testing
PRE_COMMIT_CHECKLIST.mdQuick checklist for pre-commit validation

Testing Strategy

DocumentDescription
TESTING_MASTER_PLAN.mdOverall testing strategy and goals
testing-strategy-models.mdTesting strategy models and approaches
TEST_COVERAGE_MATRIX.mdCoverage matrix by module and category
TEST_PROJECT_CI_INVENTORY.mdCurrent test-project inventory, E2E scenario appendix, CI mapping, and consolidation findings
TEST_SUITE_CONSOLIDATION_DEEP_DIVE.mdConsolidation-grade suite layer, fixture, CI state, trait, and skip inventory
TEST_FRAMEWORK_CONSOLIDATION_PLAN.mdManifest-driven consolidation plan for tooling, project/fixture structure, traits, and CI triggers
TEST_MANIFEST.mdImplemented manifest contract, validator, planner commands, and CI placement
TEST_MANIFEST.ymlMachine-readable suite and fixture registry consumed by the validator, planner, and runner
TEST_CI_EVIDENCE_DASHBOARD.mdCI execution evidence standard, dashboard matrix contract, and Gitea run history collection
TEST_TRAIT_TAXONOMY.mdCanonical Category taxonomy, migration triage, and skip-audit rules
TEST_PROJECT_AND_FIXTURE_STRUCTURE.mdEnforceable test project placement, fixture placement, and focused fixture manifests
TEST_CI_ROUTING.mdManifest-backed PR, main, nightly, weekly, manual, and CI-gap routing contract
testkit-usage-guide.mdGuide to using the StellaOps TestKit

CI/CD Integration

DocumentDescription
ci-quality-gates.mdQuality gates for CI/CD pipelines
ci-lane-filters.mdTest lane filter configuration
ci-lane-integration.mdCI lane integration guide

Specialized Testing

DocumentDescription
determinism-gates.mdDeterminism verification gates
determinism-verification.mdDeterminism testing guide
security-testing-guide.mdSecurity testing practices
mutation-testing-guide.mdMutation testing guide
mutation-testing-baselines.mdMutation testing baselines
e2e-reproducibility.mdEnd-to-end reproducibility testing
competitor-parity-testing.mdCompetitive parity testing

Component-Specific

DocumentDescription
webservice-test-discipline.mdWeb service testing discipline
webservice-test-rollout-plan.mdWeb service test rollout plan
connector-fixture-discipline.mdConnector fixture testing
schema-validation.mdSchema validation testing

Sprint Planning

DocumentDescription
SPRINT_DEPENDENCY_GRAPH.mdSprint dependency visualization
SPRINT_EXECUTION_PLAYBOOK.mdSprint execution guide
testing-quality-guardrails-implementation.mdQuality guardrails implementation

Test Categories

CategoryDescriptionWhen Run
UnitComponent isolation testsAlways
ArchitectureDependency and layering rulesPR-gating
ContractAPI compatibility validationPR-gating
IntegrationDatabase and service testsPR-gating
SecuritySecurity assertion testsPR-gating
GoldenCorpus-based regression testsPR-gating
PerformanceLatency and throughput testsExtended
BenchmarkBenchmarkDotNet runsExtended
DeterminismReproducibility testsExtended
AirGapOffline operation testsExtended
ChaosResilience testsExtended

Quick Commands

# Local CI runner
./devops/scripts/local-ci.sh smoke        # Quick validation
./devops/scripts/local-ci.sh pr           # PR-gating suite
./devops/scripts/local-ci.sh module       # Module tests
./devops/scripts/local-ci.sh full         # All tests

# Pre-commit validation
./devops/scripts/validate-before-commit.sh        # PR-gating
./devops/scripts/validate-before-commit.sh quick  # Smoke only
./devops/scripts/validate-before-commit.sh full   # Everything

# Web/Angular tests
./devops/scripts/local-ci.sh module --module Web  # Web module tests
./devops/scripts/local-ci.sh pr --category Web    # Web as part of PR

# Manifest-backed test selection
python .gitea/scripts/test/validate-test-manifest.py --out TestResults/test-manifest-validation/summary.json
python .gitea/scripts/test/validate-test-traits.py --out TestResults/test-trait-validation/summary.json
python .gitea/scripts/test/validate-fixture-manifests.py --out TestResults/test-fixture-manifests/summary.json
python .gitea/scripts/test/validate-ci-routing.py --out TestResults/test-ci-routing/summary.json
python .gitea/scripts/test/plan-test-run.py --changed-file src/Scanner/StellaOps.Scanner.WebService/Program.cs --out-dir TestResults/test-plan-scanner
python .gitea/scripts/test/run-test-plan.py --plan TestResults/test-plan-scanner/test-plan.json --out-dir TestResults/test-run-scanner --dry-run
python .gitea/scripts/test/plan-test-run.py --select-all --runtime-cost small --mode nightly --out-dir TestResults/test-plan-nightly-small
python .gitea/scripts/test/summarize-test-readiness.py --summary TestResults/test-run-scanner/test-run-summary.json --out-dir TestResults/test-readiness-scanner --require-executed --report-only

# Service management
docker compose -f devops/compose/docker-compose.ci.yaml up -d
docker compose -f devops/compose/docker-compose.ci.yaml down

Web/Angular Testing

The Angular frontend (src/Web/StellaOps.Web) has its own test suite. Run these from the project directory:

cd src/Web/StellaOps.Web

# Install dependencies
npm ci

# Unit tests (Karma/Jasmine)
npm run test:ci

# E2E tests (Playwright)
npx playwright install --with-deps chromium
npm run test:e2e

# Accessibility tests (Axe)
npm run test:a11y

# Production build
npm run build -- --configuration production

# Storybook build
npm run storybook:build
Test TypeFrameworkCommandDuration
UnitKarma/Jasminenpm run test:ci~3 min
E2EPlaywrightnpm run test:e2e~5 min
A11yAxe-corenpm run test:a11y~2 min
BuildAngular CLInpm run build~2 min