ue-automation-and-testing

Write and run automated tests for Unreal Engine projects across all test layers.

55|5|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-automation-and-testing-kevinpbuckley
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ue-automation-and-testing
Source: https://github.com/kevinpbuckley/unreal-engine-skills/tree/main/skills/core/ue-automation-and-testing
Command: npx skills add https://github.com/kevinpbuckley/unreal-engine-skills --skill ue-automation-and-testing-kevinpbuckley

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Unreal Engine has a layered test ecosystem (simple/complex automation tests, BDD specs, functional tests, low-level Catch2 tests, Gauntlet), and choosing the wrong layer or misusing flags, assertions, or latent commands leads to flaky, invisible, or crashing tests. This Skill provides the correct macros, APIs, flag combinations, and CI invocation patterns for UE 5.8. ## Core Features & Use Cases - Test layer selection and authoring: Guidance and code patterns for IMPLEMENT_SIMPLE_AUTOMATION_TEST, IMPLEMENT_COMPLEX_AUTOMATION_TEST, DEFINE_SPEC/BEGIN_DEFINE_SPEC BDD specs, AFunctionalTest in-level tests, and Catch2-based low-level tests. - Assertion and flag reference: Full FAutomationTestBase assertion API (TestTrue, TestEqual, TestNotNull, AddError) and EAutomationTestFlags context/filter/priority tables. - CI and headless execution: Command-line recipes for UnrealEditor-Cmd with -ExecCmds, report export, test groups, and resume, plus Gauntlet overview for device-scale testing. - Use Case: You need regression coverage for a damage calculation system. Use this Skill to write a simple automation test with the correct context and filter flags, then run it headless in CI with JSON report export. ## Quick Start Write a simple automation test for my ComputeDamage function and show me the command line to run it headless in CI.

Frequently Asked Questions about ue-automation-and-testing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a unit test in Unreal Engine C++?

Use IMPLEMENT_SIMPLE_AUTOMATION_TEST with a dotted path name and EAutomationTestFlags combining one context flag and one filter flag. Implement RunTest using FAutomationTestBase assertions like TestTrue and TestEqual, and place the file in your module's Private/Tests directory.

How do I run Unreal automation tests from the command line?

Run UnrealEditor-Cmd.exe with -ExecCmds="Automation RunTest <dotted.prefix>;Quit" plus -unattended, -nopause, and -nullrhi for headless CI. Add -ReportExportPath to write JSON and HTML results, and check the exit code for pass/fail.

What is the difference between automation tests, specs, and low-level tests in Unreal?

Simple and complex automation tests run in the editor or commandlet for unit and content tests. Specs (DEFINE_SPEC) provide BDD-style Describe/It structure with latent async support. Low-level tests use Catch2 in a thin standalone executable for pure logic with no UObject or world dependency.

Why does my Unreal automation test not appear in the test browser?

The test is missing either a context flag or a filter flag in EAutomationTestFlags. Every test must OR together at least one context (EditorContext, ClientContext, etc.) and one filter (SmokeFilter, EngineFilter, ProductFilter, etc.) to be discovered.

How do I test async or multi-frame logic in Unreal automation tests?

In specs, use LatentIt or LatentBeforeEach with an FDoneDelegate that you execute when the async work completes. In simple automation tests, queue work with ADD_LATENT_AUTOMATION_COMMAND, whose Update method returns false until the operation finishes.

When should I use AFunctionalTest instead of a simple automation test?

Use AFunctionalTest when the test needs a running world, actors, physics, or AI, such as gameplay integration scenarios. It runs as an actor placed in a dedicated test map, requires calling FinishTest, and uses its own AssertTrue/AssertIsValid assertion family.