Close DV-01–04,07,09,13,14: unify operator-deck UX in server/web.

Standardize neon cyan on #00e8f5, wire SacredPageHeader across Builds/Path Tracer/LOTL, dedupe Pages.css, align Path Tracer chrome, drop dead wealth-deck CSS, add prefers-color-scheme shell + HelpTip, sidebar version from package.json build inject, and Vitest CSS regression guards.
This commit is contained in:
AetherForge
2026-06-07 06:33:51 -07:00
parent 85d55df37c
commit 74c006a04b
35 changed files with 1144 additions and 36 deletions

View File

@@ -124,6 +124,7 @@ func TestContainerLauncherStartWithFakeRuntime(t *testing.T) {
"AETHERFORGE_MINER_EXECUTION": ExecutionInProcess,
"AETHERFORGE_FLEET_SECRET": "fleet-secret",
"MINER_LOG_FILE": "/tmp/miner.log",
"MINER_STATS_FILE": ContainerStatsPath,
}
for k, want := range wantEnv {
if got := env[k]; got != want {
@@ -292,6 +293,106 @@ func TestContainerLauncherStopInvokesRm(t *testing.T) {
}
}
func TestDefaultWorkerImageAndBuildHint(t *testing.T) {
if DefaultWorkerImage() != "aetherforge/agent-worker:latest" {
t.Fatalf("DefaultWorkerImage()=%q", DefaultWorkerImage())
}
if WorkerImageBuildHint == "" || !strings.Contains(WorkerImageBuildHint, "Dockerfile.agent") {
t.Fatalf("WorkerImageBuildHint=%q", WorkerImageBuildHint)
}
}
func TestParseContainerStatsJSON(t *testing.T) {
if got := ParseContainerStatsJSON([]byte(`{"hashrate_hps":1234.5}`)); got != 1234.5 {
t.Fatalf("got %v", got)
}
if ParseContainerStatsJSON([]byte(`invalid`)) != 0 {
t.Fatal("invalid json should return 0")
}
if ParseContainerStatsJSON([]byte(`{"hashrate_hps":-1}`)) != 0 {
t.Fatal("negative hashrate should return 0")
}
}
func TestContainerLauncherProbeHashrate(t *testing.T) {
SetContainerExecCommand(func(name string, args ...string) *exec.Cmd {
if len(args) >= 4 && args[0] == "exec" && args[2] == "cat" {
if runtime.GOOS == "windows" {
return exec.Command("powershell", "-NoProfile", "-Command", `Write-Output '{"hashrate_hps":987.6}'`)
}
return exec.Command("sh", "-c", "printf '%s' '{\"hashrate_hps\":987.6}'")
}
if len(args) > 0 && args[0] == "rm" {
return quickExitTestCmd()
}
return longRunningTestCmd()
})
defer SetContainerExecCommand(nil)
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{BuildID: "probe-test"}}
rt := ContainerRuntimeInfo{Available: true, CLI: "docker"}
launcher, err := NewContainerLauncher(cfg, rt)
if err != nil {
t.Fatal(err)
}
if err := launcher.Start(); err != nil {
t.Fatal(err)
}
defer launcher.Stop()
if got := launcher.ProbeHashrate(); got != 987.6 {
t.Fatalf("ProbeHashrate()=%v want 987.6", got)
}
}
func TestContainerLauncherDefaultImageWithoutEnvOverride(t *testing.T) {
t.Setenv("AETHERFORGE_MINER_IMAGE", "")
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{BuildID: "default-img"}}
rt := ContainerRuntimeInfo{Available: true, CLI: "docker"}
launcher, err := NewContainerLauncher(cfg, rt)
if err != nil {
t.Fatal(err)
}
if launcher.Image() != DefaultWorkerImage() {
t.Fatalf("Image()=%q want %q", launcher.Image(), DefaultWorkerImage())
}
}
func TestContainerLauncherStatsFileEnv(t *testing.T) {
var gotArgs []string
SetContainerExecCommand(func(name string, args ...string) *exec.Cmd {
if len(args) > 0 && args[0] == "rm" {
return quickExitTestCmd()
}
gotArgs = append([]string(nil), args...)
return longRunningTestCmd()
})
defer SetContainerExecCommand(nil)
cfg := config.RuntimeConfig{
BuiltinConfig: config.BuiltinConfig{
BuildID: "stats-env",
Wallet: "XMR:wallet",
PoolHost: "pool.example.com",
PoolPort: 3333,
},
}
rt := ContainerRuntimeInfo{Available: true, CLI: "docker"}
launcher, err := NewContainerLauncher(cfg, rt)
if err != nil {
t.Fatal(err)
}
if err := launcher.Start(); err != nil {
t.Fatal(err)
}
defer launcher.Stop()
env := dockerEnvFromArgs(gotArgs)
if env["MINER_STATS_FILE"] != ContainerStatsPath {
t.Fatalf("MINER_STATS_FILE=%q want %q", env["MINER_STATS_FILE"], ContainerStatsPath)
}
}
func TestContainerLauncherGPUFlags(t *testing.T) {
var gotArgs []string
SetContainerExecCommand(func(name string, args ...string) *exec.Cmd {