Files
serverAppConfigs/serverAppConfigs-docs/Architecture/Testing Policy.md
T
Frank 93d1181fee docs: OKF v0.1 compliance pass + fact-check + 3 research briefs
- Migrate all 127 non-reserved docs to OKF v0.1 frontmatter (type/description/tags/timestamp); fix 13 YAML issues, 2 duplicate-FM blocks, strip reserved-page FM
- Restructure log.md to OKF (## YYYY-MM-DD, newest-first)
- Fact-check against scripts/AGENTS.md ground truth: fix 6 false 'Active' banners on retired runbooks, 96->114 GiB GTT, deployment.md vs deploy-plan.py/deploy-remote.sh, Deployment Flow frank-medium=Quadlet, Calibre 9.9.0->9.15.0 + CVE-2025-7404 conflation, Copyparty v1.20.24, RomM 5.3.0 breaking change
- Move *arr docs to new FrankBook-Pro/ section (git mv, link-safe)
- Write active runbook bodies from ground truth (frank-large, frank-small)
- Add 3 research briefs + HTML report: Local TTS and Voice Cloning, AI Job Search and Resume Tools, Most Popular Self-Hosted AI Apps (Jun-Sep 2026)
- Add upstream-version rows to ComfyUI/OpenWebUI/Hermes app docs
- All 336 tests pass; 136 pages, 0 unresolved wikilinks
2026-09-22 02:09:41 -07:00

2.5 KiB

type, description, tags, timestamp
type description tags timestamp
reference This repository tests its configuration at defined seams.
architecture
testing
2026-09-01

Testing Policy

This repository tests its configuration at defined seams. The tests run with bats; run them with ./tests/run.sh before every push.

Seams Under Test

Seam File What it asserts
Compose validity tests/compose_validity.bats YAML parses, services have images, no named volumes
Env consistency tests/env_consistency.bats every ${VAR} is defined in .env.example; no real secrets; the live gitea password never appears
Caddyfile validity tests/caddyfile.bats per-host Caddyfile, .local convention, balanced braces, basic auth present
Docs completeness tests/docs_completeness.bats every compose service has a docs page; index links every page
Script syntax tests/scripts_syntax.bats bash -n clean, executable bits, shellcheck when available
Deployment flow tests/deployment_flow.bats, tests/deployment_scoping.bats scoped dispatcher exists, targets are known, service plans isolate inference, Caddy ownership is guarded, and SSH reachability is checked (skips offline)
Quadlet units tests/*quadlet*.bats every unit is boot-persistent, self-healing, repo-provenanced, secret-free
E2E (browser) tests/e2e/ + tests/e2e_scaffold.bats Playwright drives the live guard chain; the bats seam asserts structure and credential hygiene. See E2E Suite

Focused pre-commit testing

For normal commits, use the focused wrapper:

./scripts/test-changed.sh

It reads staged paths with git diff --cached and runs only the mapped Bats files. The tracked .githooks/pre-commit hook invokes this wrapper. Enable the repository hook path once per checkout:

git config core.hooksPath .githooks

Use --list to inspect the selection without running tests, or --paths FILE ... to preview a mapping. Shared test infrastructure and unmapped paths fail closed rather than silently skipping coverage. Run the full suite with ./tests/run.sh when changing shared test helpers, the test runner, or when focused coverage is not sufficient.

Red-Green

Tests are written first. A failing test means the seam is not satisfied; the config change that makes it pass is the only acceptable fix. No --no-verify, no deleting tests without approval.

See Also