This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
EveElectron/scripts/capture-conformance.ps1

50 lines
2.1 KiB
PowerShell

param(
[string] $EveRoot = "E:\Projects\Eve",
[string] $ElectronPath = "E:\Projects\Aetheria\Aetheria.Rts.Web\node_modules\electron\dist\electron.exe",
[string] $OutputRoot = "artifacts\capture"
)
$ErrorActionPreference = "Stop"
$repoRoot = Split-Path -Parent $PSScriptRoot
$output = if ([IO.Path]::IsPathRooted($OutputRoot)) { $OutputRoot } else { Join-Path $repoRoot $OutputRoot }
$captureApp = Join-Path $repoRoot "capture"
if (-not (Test-Path -LiteralPath $ElectronPath)) { throw "Electron executable not found: $ElectronPath" }
$cases = @(
@{
id = "generic-world"
advertisement = Join-Path $EveRoot "web\fixtures\eve-world-smoke.provider-advertisement.json"
surface = Join-Path $EveRoot "web\fixtures\eve-world-smoke-surface.json"
surfaceId = "eve.world-smoke.surface"
},
@{
id = "aetheria-world"
advertisement = Join-Path $EveRoot "web\fixtures\aetheria.provider-advertisement.json"
surface = Join-Path $EveRoot "web\fixtures\aetheria-world-surface.json"
surfaceId = "aetheria.daemon.game"
}
)
foreach ($case in $cases) {
$caseRoot = Join-Path $output $case.id
New-Item -ItemType Directory -Force -Path $caseRoot | Out-Null
$stdout = Join-Path $caseRoot "capture.stdout.log"
$stderr = Join-Path $caseRoot "capture.stderr.log"
$arguments = @(
$captureApp,
"--advertisement", $case.advertisement,
"--surface", $case.surface,
"--surface-id", $case.surfaceId,
"--output", (Join-Path $caseRoot "window.png"),
"--witness", (Join-Path $caseRoot "runtime-witness.json")
)
$process = Start-Process -FilePath $ElectronPath -ArgumentList $arguments -WorkingDirectory $repoRoot `
-WindowStyle Hidden -RedirectStandardOutput $stdout -RedirectStandardError $stderr -Wait -PassThru
if ($process.ExitCode -ne 0) {
$diagnosticText = Get-Content -LiteralPath $stderr -Raw -ErrorAction SilentlyContinue
$diagnostic = if ($diagnosticText) { $diagnosticText.Trim() } else { "See runtime-witness.json.trace.log" }
throw "EveElectron capture failed for $($case.id) with exit code $($process.ExitCode): $diagnostic"
}
}
Write-Host "EveElectron captures: $output"