Testing
Choose the smallest Argus test tier that proves a change, including PostgreSQL, live FxEmbed, Agent Skill, installer, VPS, and web documentation checks.
Run the smallest tier that exercises the changed boundary, then run the root quality gates before proposing a release. Tests use Vitest unless a workflow or shell smoke is named below.
Tier 1: ordinary workspace tests
pnpm test
pnpm typecheck
pnpm lintThis covers package, CLI, runtime, release, and web tests. PostgreSQL repository tests are skipped unless one of these conditions is true:
TEST_DATABASE_URLpoints to an available PostgreSQL database (CI providespostgresql://postgres:postgres@localhost:5432/postgres);- otherwise,
ARGUS_POSTGRES_TEST=1orCI=trueenables the same Docker-backed Testcontainers PostgreSQL fixture, which requires Docker.
The repository CI workflow supplies TEST_DATABASE_URL, so it uses the
workflow PostgreSQL service rather than the fallback fixture.
Use a disposable database only. Never commit credentialed, shared, production, or otherwise non-disposable connection strings. The workflow's isolated disposable PostgreSQL service URL is the intentional exception.
Tier 2: web content and routes
pnpm --filter @argus/web generate
pnpm vitest run apps/web/test/content.test.ts apps/web/test/routes.test.ts apps/web/test/distribution.test.ts
pnpm --filter @argus/web build
pnpm --filter @argus/web check:linksGeneration refreshes Fumadocs' derived source before route assertions. The web
workflow also runs Lighthouse CI and rejects tracked .env, state.json,
secrets.env, and argus.yaml files.
Tier 3: controlled live integrations
The ordinary release tests validate the private FxEmbed image definition and Compose topology. The signed release workflow then builds the image for AMD64 and ARM64 from the same pinned worker bundle used by the Cloudflare artifact.
The Cloudflare FxEmbed live smoke is deliberately disabled by default. Run it only against a dedicated Cloudflare test account, with all four variables supplied outside the repository:
ARGUS_FXEMBED_LIVE=1 \
ARGUS_FXEMBED_LIVE_DEDICATED_ACCOUNT=1 \
ARGUS_FXEMBED_LIVE_ACCOUNT_ID=... \
ARGUS_FXEMBED_LIVE_API_TOKEN=... \
pnpm vitest run packages/deployment/test/fxembed.live.test.tsIt deploys and reconciles a real worker, so never point it at a shared or production account.
Tier 4: skill and release checks
pnpm tsx scripts/skills/validate.ts skills/argus-setup
pnpm tsx scripts/skills/smoke-scenarios.ts --client=fakeCodex and Claude smoke adapters are opt-in: each requires its CLI plus
ARGUS_SKILL_SMOKE_TEST_CREDENTIALS=enabled and explicit disposable test
credentials. The release workflow additionally runs lint, typecheck, tests,
and the build before it signs and publishes release assets.
Tier 5: clean-host smoke tests
The Installer smoke workflow runs automatically after a signed release and
uses isolated Ubuntu/Debian hosts on both AMD64 and ARM64 paths. The VPS
smoke workflow is manually dispatched with an immutable release_tag; its
script requires ARGUS_VPS_E2E=1, ARGUS_INSTALLER_URL,
ARGUS_MANIFEST_URL, ARGUS_MANIFEST_ASSET_URL, and
ARGUS_EXPECTED_VERSION. It also accepts a controlled HTTPS URL and CI-only
GitHub access variables when needed to resolve release assets.
These tests create and remove disposable hosts and instance data. Run them only through their workflows or an intentionally isolated fixture environment.
Development
Bootstrap the pinned Node.js and pnpm toolchain, run Argus locally, and keep configuration and secrets out of commits.
Releases
Publish an immutable signed Argus release, verify it on clean hosts, promote the stable manifest, and deploy the public site through its Git-connected Vercel project.