Files
AetherForge/tests/README.md
AetherForge 415b5dc6a3
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Release validation: tests green, USB pack, fleet UX and API hardening.
Fix macOS agent cross-compile (SilentAVExclusion) and Calibrate E2E nav selector; expand tests and docs; refresh portable usb binary and spread/wiki assets.
2026-06-06 16:57:39 -07:00

3.1 KiB
Raw Blame History

AetherForge Test Suite

One command runs everything:

test.bat

Or with PowerShell directly:

.\scripts\test-suite.ps1

Phases

Phase What it runs Location
1 Go server unit + integration tests server/
2 Go agent tests agent/
3 Fusion module unit tests + compile check fusion/
4 Frontend unit tests (Vitest) server/web/
5 Frontend production build server/web/
6 Server binary compile server/
7 Agent binary compile (Windows) agent/bin/install-worker.exe
7b Agent cross-compile (linux/darwin) agent/bin/install-worker-*
8 E2E smoke (Playwright) server/web/e2e/ — starts temp server on :18989

Phases 57 and 7b are skipped with -SkipBuild. Phase 8 is skipped with -SkipE2E.

Run individual suites

cd server && go test ./...
cd agent && go test ./...
cd server\web && npm test
cd server\web && npm run test:e2e

E2E only (server already running)

E2E credentials match server/internal/api/integration_test.go (testuser / testpass). Seed users.json in the server data directory before first start, or the server generates a random admin password instead.

set AETHERFORGE_E2E_USER=testuser
set AETHERFORGE_E2E_PASS=testpass
powershell -NoProfile -Command "[IO.File]::WriteAllText('data\\users.json','{\"testuser\":\"testpass\"}')"
set AETHERFORGE_URL=http://127.0.0.1:8989
cd server\web && npm run test:e2e

test.bat phase 8 seeds users.json automatically in a temp data dir. Override creds with AETHERFORGE_E2E_USER / AETHERFORGE_E2E_PASS (used by Playwright, test-suite.ps1, and scripts/smoke-test.ps1).

Adding tests

  • Go: *_test.go next to the code under test
  • Frontend: src/**/*.test.ts (Vitest)
  • E2E: server/web/e2e/*.spec.ts (Playwright)

Coverage areas: forge/fusion, auth, DB, pool reconnect, API routes, fleet filters, preflight validation, media crypto roundtrip, dashboard login smoke, remote actions UI (offline gating).

e2e/remote-actions.spec.ts mocks the dashboard WebSocket init payload (AgentsPage prefers live WS fleet data over REST). Playwright HTTP page.route alone cannot intercept WebSockets in this toolchain version.

Agent logs (not a missing API)

There is no dedicated REST endpoint to push agent log files. Logs reach the dashboard by design through:

  • get_log command — Fleet Roster → Remote Control → Fetch Log (or GET /api/v1/agents/{id}/log?refresh=1 triggers the command and returns cached tail)
  • upload_log AI tool — when AI autonomy is enabled, the agent reports log content via /api/v1/agent/report after an Ollama tool call

Unit tests cover AgentRemoteActions offline gating in components.test.tsx; Playwright e2e/remote-actions.spec.ts mocks an offline agent and asserts disabled buttons.

Frontend types (types/index.ts)

TypeScript interfaces in server/web/src/types/ are compile-time contracts only — no runtime JSON schema guards. Validation lives in forms, forge preflight, and server-side handlers.