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 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.
| Document | Description |
|---|
| TESTING_MASTER_PLAN.md | Overall testing strategy and goals |
| testing-strategy-models.md | Testing strategy models and approaches |
| TEST_COVERAGE_MATRIX.md | Coverage matrix by module and category |
| TEST_PROJECT_CI_INVENTORY.md | Current test-project inventory, E2E scenario appendix, CI mapping, and consolidation findings |
| TEST_SUITE_CONSOLIDATION_DEEP_DIVE.md | Consolidation-grade suite layer, fixture, CI state, trait, and skip inventory |
| TEST_FRAMEWORK_CONSOLIDATION_PLAN.md | Manifest-driven consolidation plan for tooling, project/fixture structure, traits, and CI triggers |
| TEST_MANIFEST.md | Implemented manifest contract, validator, planner commands, and CI placement |
| TEST_MANIFEST.yml | Machine-readable suite and fixture registry consumed by the validator, planner, and runner |
| TEST_CI_EVIDENCE_DASHBOARD.md | CI execution evidence standard, dashboard matrix contract, and Gitea run history collection |
| TEST_TRAIT_TAXONOMY.md | Canonical Category taxonomy, migration triage, and skip-audit rules |
| TEST_PROJECT_AND_FIXTURE_STRUCTURE.md | Enforceable test project placement, fixture placement, and focused fixture manifests |
| TEST_CI_ROUTING.md | Manifest-backed PR, main, nightly, weekly, manual, and CI-gap routing contract |
| testkit-usage-guide.md | Guide to using the StellaOps TestKit |
| Category | Description | When Run |
|---|
| Unit | Component isolation tests | Always |
| Architecture | Dependency and layering rules | PR-gating |
| Contract | API compatibility validation | PR-gating |
| Integration | Database and service tests | PR-gating |
| Security | Security assertion tests | PR-gating |
| Golden | Corpus-based regression tests | PR-gating |
| Performance | Latency and throughput tests | Extended |
| Benchmark | BenchmarkDotNet runs | Extended |
| Determinism | Reproducibility tests | Extended |
| AirGap | Offline operation tests | Extended |
| Chaos | Resilience tests | Extended |
# 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
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 Type | Framework | Command | Duration |
|---|
| Unit | Karma/Jasmine | npm run test:ci | ~3 min |
| E2E | Playwright | npm run test:e2e | ~5 min |
| A11y | Axe-core | npm run test:a11y | ~2 min |
| Build | Angular CLI | npm run build | ~2 min |