A Karma plugin that provides an adapter for the QUnit testing framework, enabling seamless integration between Karma test runner and QUnit test suites.
92
Pending
Does it follow best practices?
Impact
92%
0.97xAverage score across 10 eval scenarios
Pending
The risk profile of this skill
You are building a test result processor that filters and sanitizes test results from a QUnit test runner before sending them to a reporting system. Your processor needs to handle various edge cases that can occur in real-world testing environments.
Implement a JavaScript module that exports a processTestResults function with the following behavior:
The function should accept an array of test result objects and return a filtered/processed array. Each test result object has this structure:
{
name: string, // Test name
module: string, // Test module/suite name
passed: boolean, // Whether test passed
failed: boolean, // Whether test failed
total: number, // Total assertions
runtime: number // Execution time in ms
}Filter Global Failures: Remove any test results where the test name is exactly "global failure". These are framework artifacts that should not be reported.
Handle Missing Properties: Some test results may come from older testing framework versions and might be missing the runtime property. When runtime is missing or undefined, set it to 0.
Validate Test Objects: If a test result object is missing required properties (name, passed, or failed), skip it entirely (don't include it in the output).
Normalize Module Names: If the module property is missing, null, or undefined, set it to an empty string "".
Return a new array containing only the valid, processed test results.
Provides the QUnit testing framework adapter for Karma test runner.
Input:
[
{ name: "test 1", module: "Suite A", passed: true, failed: false, total: 3, runtime: 45 },
{ name: "global failure", module: "Suite A", passed: false, failed: true, total: 1, runtime: 0 },
{ name: "test 2", module: "Suite B", passed: true, failed: false, total: 2, runtime: 30 }
]Expected Output:
[
{ name: "test 1", module: "Suite A", passed: true, failed: false, total: 3, runtime: 45 },
{ name: "test 2", module: "Suite B", passed: true, failed: false, total: 2, runtime: 30 }
]Input:
[
{ name: "old test", module: "Legacy", passed: true, failed: false, total: 1 },
{ name: "new test", module: "Modern", passed: true, failed: false, total: 2, runtime: 100 }
]Expected Output:
[
{ name: "old test", module: "Legacy", passed: true, failed: false, total: 1, runtime: 0 },
{ name: "new test", module: "Modern", passed: true, failed: false, total: 2, runtime: 100 }
]Input:
[
{ name: "valid test", passed: true, failed: false, total: 1, runtime: 20 },
{ module: "Suite A", passed: true, failed: false, total: 1 },
{ name: "another valid", module: "Suite B", passed: false, failed: true, total: 2, runtime: 15 }
]Expected Output:
[
{ name: "valid test", module: "", passed: true, failed: false, total: 1, runtime: 20 },
{ name: "another valid", module: "Suite B", passed: false, failed: true, total: 2, runtime: 15 }
]Input:
[
{ name: "test without module", passed: true, failed: false, total: 1, runtime: 10 },
{ name: "test with null module", module: null, passed: true, failed: false, total: 1, runtime: 15 }
]Expected Output:
[
{ name: "test without module", module: "", passed: true, failed: false, total: 1, runtime: 10 },
{ name: "test with null module", module: "", passed: true, failed: false, total: 1, runtime: 15 }
]processTestResults.jsprocessTestResults.test.jsprocessTestResults function as the default exportdocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10