mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-30 08:04:09 +00:00
* fix: Enhance error handling for script execution by introducing isScriptError flag in test results Enhance error reporting in script execution by adding isScriptError flag to error responses fix: Mark pre-request script errors as failures in runner summary
111 lines
3.1 KiB
TypeScript
111 lines
3.1 KiB
TypeScript
import { T_RunnerRequestExecutionResult, T_RunSummary } from './types';
|
|
|
|
// todo: this is generic, not specific to html, can be moved out of the report/html sub-package
|
|
export const getRunnerSummary = (results: T_RunnerRequestExecutionResult[]): T_RunSummary => {
|
|
let totalRequests = 0;
|
|
let passedRequests = 0;
|
|
let failedRequests = 0;
|
|
let errorRequests = 0;
|
|
let skippedRequests = 0;
|
|
let totalAssertions = 0;
|
|
let passedAssertions = 0;
|
|
let failedAssertions = 0;
|
|
let totalTests = 0;
|
|
let passedTests = 0;
|
|
let failedTests = 0;
|
|
let totalPreRequestTests = 0;
|
|
let passedPreRequestTests = 0;
|
|
let failedPreRequestTests = 0;
|
|
let totalPostResponseTests = 0;
|
|
let passedPostResponseTests = 0;
|
|
let failedPostResponseTests = 0;
|
|
|
|
for (const result of results || []) {
|
|
const { status, testResults, assertionResults, preRequestTestResults, postResponseTestResults } = result;
|
|
totalRequests += 1;
|
|
totalTests += Number(testResults?.filter((r) => !r.isScriptError).length) || 0;
|
|
totalAssertions += Number(assertionResults?.length) || 0;
|
|
totalPreRequestTests += Number(preRequestTestResults?.filter((r) => !r.isScriptError).length) || 0;
|
|
totalPostResponseTests += Number(postResponseTestResults?.filter((r) => !r.isScriptError).length) || 0;
|
|
|
|
if (status === 'skipped') {
|
|
skippedRequests += 1;
|
|
continue;
|
|
}
|
|
|
|
let anyFailed = false;
|
|
for (const testResult of testResults || []) {
|
|
if (testResult.isScriptError) {
|
|
anyFailed = true;
|
|
continue;
|
|
}
|
|
if (testResult.status === 'pass') {
|
|
passedTests += 1;
|
|
} else {
|
|
anyFailed = true;
|
|
failedTests += 1;
|
|
}
|
|
}
|
|
for (const assertionResult of assertionResults || []) {
|
|
if (assertionResult.status === 'pass') {
|
|
passedAssertions += 1;
|
|
} else {
|
|
anyFailed = true;
|
|
failedAssertions += 1;
|
|
}
|
|
}
|
|
for (const preRequestTestResult of preRequestTestResults || []) {
|
|
if (preRequestTestResult.isScriptError) {
|
|
anyFailed = true;
|
|
continue;
|
|
}
|
|
if (preRequestTestResult.status === 'pass') {
|
|
passedPreRequestTests += 1;
|
|
} else {
|
|
anyFailed = true;
|
|
failedPreRequestTests += 1;
|
|
}
|
|
}
|
|
for (const postResponseTestResult of postResponseTestResults || []) {
|
|
if (postResponseTestResult.isScriptError) {
|
|
anyFailed = true;
|
|
continue;
|
|
}
|
|
if (postResponseTestResult.status === 'pass') {
|
|
passedPostResponseTests += 1;
|
|
} else {
|
|
anyFailed = true;
|
|
failedPostResponseTests += 1;
|
|
}
|
|
}
|
|
|
|
if (!anyFailed && status !== 'error') {
|
|
passedRequests += 1;
|
|
} else if (anyFailed) {
|
|
failedRequests += 1;
|
|
} else {
|
|
errorRequests += 1;
|
|
}
|
|
}
|
|
|
|
return {
|
|
totalRequests,
|
|
passedRequests,
|
|
failedRequests,
|
|
errorRequests,
|
|
skippedRequests,
|
|
totalAssertions,
|
|
passedAssertions,
|
|
failedAssertions,
|
|
totalTests,
|
|
passedTests,
|
|
failedTests,
|
|
totalPreRequestTests,
|
|
passedPreRequestTests,
|
|
failedPreRequestTests,
|
|
totalPostResponseTests,
|
|
passedPostResponseTests,
|
|
failedPostResponseTests
|
|
};
|
|
};
|