| name | ue-unit-test |
| description | Run Sentry unit tests via Unreal automation |
Run Sentry unit tests via Unreal Engine automation framework.
Prerequisite: the project must be built first (a compile-only editor build is sufficient). If unsure whether it's been built, ask the user. If not built, suggest running /ue-build first.
-
Check the UNREAL_ENGINE_ROOT environment variable (use PowerShell .NET method on Windows: [System.Environment]::GetEnvironmentVariable('UNREAL_ENGINE_ROOT')). If unset or the path doesn't exist, ask the user for the engine path.
-
Determine the engine version by reading the EngineAssociation field in sample/SentryPlayground.uproject (e.g., "EngineAssociation": "5.7" - UE5, "EngineAssociation": "4.27" - UE4). Select the headless editor binary based on host OS and engine version:
| Host OS | UE5 binary path | UE4 binary path |
|---|
| Windows | Engine/Binaries/Win64/UnrealEditor-Cmd.exe | Engine/Binaries/Win64/UE4Editor-Cmd.exe |
| macOS | Engine/Binaries/Mac/UnrealEditor-Cmd | Engine/Binaries/Mac/UE4Editor-Cmd |
| Linux | Engine/Binaries/Linux/UnrealEditor-Cmd | Engine/Binaries/Linux/UE4Editor-Cmd |
- Resolve the repo root and run the automation command:
REPO=$(git rev-parse --show-toplevel)
"$UNREAL_ENGINE_ROOT/Engine/Binaries/Win64/UnrealEditor-Cmd.exe" \
"$REPO/sample/SentryPlayground.uproject" \
-ReportExportPath="$REPO/sample/Saved/Automation" \
-ExecCmds="Automation RunTests Sentry;quit" \
-TestExit="Automation Test Queue Empty" \
-Unattended -NoPause -NoSplash -NullRHI
"$UNREAL_ENGINE_ROOT/Engine/Binaries/Mac/UnrealEditor-Cmd" \
"$REPO/sample/SentryPlayground.uproject" \
-ReportExportPath="$REPO/sample/Saved/Automation" \
-ExecCmds="Automation RunTests Sentry;quit" \
-TestExit="Automation Test Queue Empty" \
-Unattended -NoPause -NoSplash -NullRHI
"$UNREAL_ENGINE_ROOT/Engine/Binaries/Linux/UnrealEditor-Cmd" \
"$REPO/sample/SentryPlayground.uproject" \
-ReportExportPath="$REPO/sample/Saved/Automation" \
-ExecCmds="Automation RunTests Sentry;quit" \
-TestExit="Automation Test Queue Empty" \
-Unattended -NoPause -NoSplash -NullRHI
The test run can take longer than the default command timeout — run it in the background and monitor its output, or raise the timeout accordingly.
-
Report the results. The editor's exit code is not a reliable pass/fail signal for automation runs — read the report at sample/Saved/Automation/index.json instead:
- Summarize the number of passed and failed tests (
succeeded / failed counts).
- For each failed test, report its full name and the error messages from its report entries.
If the report is missing or the run crashed, check sample/Saved/Logs/ for the root cause.