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 Results Purpose: Parse Catch2 test results from XML reports and/or console logs
Shared Reference: See llt-common/SKILL.md for response format, data structures, validation rules, and logging instructions.
Parses test results from LowLevelTests (LLT) execution output in multiple formats:
| Parameter | Required | Description |
|---|---|---|
xml | At least one of xml/console | Path to Catch2 XML report file |
console | At least one of xml/console | Path to Catch2 console log file |
Returns standard LLT JSON envelope (see llt-common/SKILL.md). The data field contains:
{
"statistics": {
"total_tests": 42,
"passed": 40,
"failed": 2,
"skipped": 0,
"pass_rate": 95.24,
"total_duration": 0.123456
},
"test_results": [
{
"test_name": "LruCache: Basic operations",
"status": "passed",
"duration": 0.002
},
{
"test_name": "LruCache: Eviction policy",
"status": "failed",
"duration": 0.005,
"failure_details": {
"assertion_type": "REQUIRE",
"expression": "cache.size() == 2",
"message": "cache.size() == 3",
"file": "/path/to/LruCacheTest.cpp",
"line": 42
}
}
],
"sources": {
"xml": "test_results.xml",
"console": null
}
}
The parser auto-detects the XML format from the root element tag:
<testsuites>)<testsuites>
<testsuite>
<testcase name="..." time="...">
<failure message="..." type="...">failure text</failure>
</testcase>
</testsuite>
</testsuites>
<testcase> elements inside <testsuite> elements.name attribute for test name, time attribute for duration (float seconds).<failure> element exists: status is "failed".
assertion_type from failure's type attribute.message from failure's message attribute.file:line patterns and REQUIRE(expression) / CHECK(expression) patterns.<skipped> element exists: status is "skipped"."passed".<Catch2TestRun>)<Catch2TestRun>
<TestCase name="..." filename="..." line="...">
<Expression success="false" type="REQUIRE" filename="..." line="...">
<Original>expression text</Original>
<Expanded>expanded text</Expanded>
</Expression>
<OverallResult success="true|false" skips="0"/>
</TestCase>
</Catch2TestRun>
<TestCase> elements.<OverallResult> for success/skip status.<Expression success="false"> elements and extract:
type attribute for assertion typefilename and line attributes for location<Original> child text for expression<Expanded> child text for expansion message<FatalErrorCondition> (crashes).durationInSeconds attributes from <Expression> elements.<Catch> or <Group>)<Catch>
<Group>
<TestCase name="...">
<Expression success="false" type="REQUIRE" filename="..." line="...">
<Original>expression</Original>
<Expanded>expansion</Expanded>
</Expression>
<OverallResult durationInSeconds="0.001"/>
</TestCase>
</Group>
</Catch>
<TestCase> elements.<OverallResult durationInSeconds="...">.<Expression success="false">.Console parsing is best-effort and extracts less metadata than XML:
Parse failed test cases from the console output:
-{10,}) indicating test case boundaries.file:line: FAILED: REQUIRE( expression )with expansion: (indented lines).Parse summary from end of output:
All tests passed (N assertions in M test cases)test cases: X | Y passed | Z failedConsole parsing limitations:
Test #1, Test #2, etc.)From the final merged results list:
total_tests: count of all resultspassed: count where status == "passed"failed: count where status == "failed"skipped: count where status == "skipped"pass_rate: (passed / total_tests) * 100, rounded to 2 decimal placestotal_duration: sum of all duration values, rounded to 6 decimal places| Error Code | Condition |
|---|---|
MISSING_INPUT | Neither --xml nor --console provided |
FILE_NOT_FOUND | Input file does not exist |
XML_PARSE_ERROR | XML file is malformed or unsupported format |
CONSOLE_PARSE_ERROR | Console log parsing failed |