From test-engineering
Discover LowLevelTest targets in Unreal Engine projects. Parses BuildGraph XML and filesystem to enumerate test targets with metadata.
npx claudepluginhub issacchaos/local-marketplace --plugin test-engineeringThis skill uses the workspace's default tool permissions.
**Version**: 1.0.0
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Version: 1.0.0 Category: LowLevelTests Discovery Purpose: Discover all LLT targets using a BuildGraph-first strategy, supplemented by filesystem globbing
Shared Reference: See llt-common/SKILL.md for response format, data structures, validation rules, and logging instructions.
Discovers all LowLevelTest (LLT) targets in Unreal Engine projects using a BuildGraph-first strategy. Parses BuildGraph XML files to extract explicit test targets, then supplements with filesystem globbing to discover implicit test modules. For each target, extracts TEST_CASE names, tags, line numbers, and #include directives.
| Parameter | Required | Description |
|---|---|---|
project_root | Yes | Path to UE project root directory |
test_type | No | all (default), explicit, or implicit |
platform | No | Filter by platform (e.g., Win64, PS5, Linux) |
Supported platforms: Win64, Mac, Linux, PS5, PS4, XboxOne, Switch, Android, IOS
Returns standard LLT JSON envelope (see llt-common/SKILL.md). The data field contains:
{
"test_targets": [
{
"name": "OnlineServicesMcpTests",
"type": "explicit",
"platforms": ["Win64", "PS5"],
"binary_path": "FortniteGame/Binaries/Win64/OnlineServicesMcpTests.exe",
"buildgraph_registered": true
}
],
"test_files": {
"CoreTests": [
{
"file_path": "Engine/Source/Runtime/Core/Tests/Containers/LruCacheTest.cpp",
"module_name": "Core",
"test_count": 5,
"test_cases": [
{
"name": "LRU cache basic operations",
"tags": ["Core", "Containers"],
"line_number": 42,
"sections": ["Insert", "Lookup", "Eviction"],
"includes": ["Containers/LruCache.h"]
}
]
}
]
},
"statistics": {
"total_targets": 207,
"explicit_targets": 12,
"implicit_targets": 195,
"total_test_files": 330,
"total_test_cases": 3421
},
"elapsed_seconds": 1.87
}
Parse BuildGraph XML files to extract registered test targets:
Locate BuildGraph XML files:
Engine/Build/LowLevelTests.xmlFortniteGame/Build/LowLevelTests.xmlParse XML using standard XML parsing (e.g., xml.etree.ElementTree):
{).Extract test names from <Option Name="TestNames"> elements:
DefaultValue attribute.TestNames option found, fall back to extracting from <Agent> node Name attributes (take first word of agent name).Extract metadata from <Agent> and <Property> nodes:
<Agent>, look for <Property Name="TestName">, <Property Name="Platform">, <Property Name="Platforms">, and <Property Name="BinaryPath"> child elements.test_name -> {platforms: set, binary_paths: set}.Agent Type attribute for platform info.Build TestTarget objects:
type: "explicit" with buildgraph_registered: true.Win64 platform if no platform metadata found.Deduplicate when parsing multiple XML files (keep first occurrence).
Search for test files not registered in BuildGraph:
Glob for test files using these patterns:
Engine/Source/Runtime/*/Tests/**/*.cppEngine/Source/Developer/*/Tests/**/*.cppFortniteGame/Plugins/*/Tests/**/*.cppFortniteGame/Plugins/*/*/Tests/**/*.cppFortniteGame/Source/*/Tests/**/*.cppGroup by module: Extract the module name from the path (the directory immediately before Tests/).
Create TestTarget for each module:
{ModuleName}Testsimplicit["Win64"] (default; actual support requires .Build.cs parsing)buildgraph_registered: falseplatform parameter is specified.For each implicit target, parse the C++ test files to extract metadata:
Extract #include directives using regex #include\s+[<"]([^>"]+)[>"]:
TestHarness.h, OnlineCatchHelper.h, catch.hpp, and anything starting with catch2/ or Catch2/.Extract TEST_CASE declarations using regex:
TEST_CASE\s*\(\s*"([^"]+)"\s*(?:,\s*"([^"]*)")?\s*\) with MULTILINE | DOTALL flagsParse tags from the tags string:
[tag1][tag2]\[([^\]]+)\]Calculate line numbers: Count newlines before each match position, add 1.
Extract SECTION blocks within each test case body:
SECTION\s*\(\s*"([^"]+)"\s*\)TEST_CASE match to the start of the next TEST_CASE or end of file.| Error | Behavior |
|---|---|
| Invalid project root | Returns INVALID_PATH error |
| BuildGraph XML not found | Warning; falls back to filesystem-only discovery |
| Test file parse failure | Warning; skips file, continues discovery |
.Target.cs/.Build.cs parsing.Build.cs parsing{ModuleName}Tests