diff --git a/scripts/test-suite.ps1 b/scripts/test-suite.ps1 index 9c50b8a..b15f612 100644 --- a/scripts/test-suite.ps1 +++ b/scripts/test-suite.ps1 @@ -234,7 +234,16 @@ if (-not $SkipE2E) { } if (-not $ready) { throw "E2E server did not become healthy on :18989" } $fleetSecret = "" - for ($j = 0; $j -lt 15; $j++) { + $basic = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${E2EUser}:${E2EPass}")) + $cfgHeaders = @{ Authorization = "Basic $basic"; "X-AetherForge-Client" = "dashboard" } + for ($j = 0; $j -lt 30; $j++) { + try { + $cfg = Invoke-RestMethod "http://127.0.0.1:18989/api/v1/config" -Headers $cfgHeaders -TimeoutSec 3 + if ($cfg.server -and $cfg.server.fleet_secret) { + $fleetSecret = [string]$cfg.server.fleet_secret + break + } + } catch {} $cfgPath = Join-Path $DataDir "config.json" if (Test-Path $cfgPath) { $cfgRaw = Get-Content $cfgPath -Raw @@ -245,7 +254,9 @@ if (-not $SkipE2E) { } Start-Sleep -Seconds 1 } - if (-not $fleetSecret) { throw "E2E server config.json missing server.fleet_secret" } + if (-not $fleetSecret) { throw "E2E server missing server.fleet_secret (config API + config.json)" } + Remove-Item Env:AETHERFORGE_FLEET_SECRET -ErrorAction SilentlyContinue + Remove-Item Env:AETHERFORGE_URL -ErrorAction SilentlyContinue Push-Location (Join-Path $Root "server\web") $env:AETHERFORGE_URL = "http://127.0.0.1:18989" $env:AETHERFORGE_FLEET_SECRET = $fleetSecret diff --git a/server/web/e2e/fixtures.ts b/server/web/e2e/fixtures.ts index acde002..9dd6c18 100644 --- a/server/web/e2e/fixtures.ts +++ b/server/web/e2e/fixtures.ts @@ -20,8 +20,10 @@ export function e2eAuthHeaders(): Record { * Prefer AETHERFORGE_FLEET_SECRET (test-suite.ps1 seeds from data/config.json). */ export async function fetchFleetSecret(request: APIRequestContext): Promise { - const fromEnv = process.env.AETHERFORGE_FLEET_SECRET?.trim(); - if (fromEnv) return fromEnv; + if (process.env.AETHERFORGE_E2E !== '1') { + const fromEnv = process.env.AETHERFORGE_FLEET_SECRET?.trim(); + if (fromEnv) return fromEnv; + } const res = await request.get('/api/v1/config', { headers: e2eAuthHeaders(), diff --git a/tests/README.md b/tests/README.md index 3c19a2b..a10ef2f 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,6 +1,6 @@ # AetherForge Test Suite -**Current Vitest:** 734 tests in 87 files (`cd server/web && npm run test -- --run`). Full suite: `test.bat` → `scripts/test-suite.ps1`. +**Current Vitest:** 740 tests in 87 files (`cd server/web && npm run test -- --run`). Full suite: `test.bat` → `scripts/test-suite.ps1`. One command runs everything: