docs
evals
scenario-1
scenario-10
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
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 export