mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-02 17:08:32 +00:00
Enhance error handling for script execution by introducing isScriptError flag in test results (#7029)
* 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
This commit is contained in:
@@ -255,18 +255,12 @@ const runSingleRequest = async function (
|
||||
|
||||
preRequestTestResults = result?.results || [];
|
||||
} catch (error) {
|
||||
// Pre-request errors are treated as request errors (we return early with status: 'error'), not as failures. Unlike post-response and test script errors, we do not add a synthetic fail and continue.
|
||||
console.error('Pre-request script execution error:', error);
|
||||
console.log(chalk.red(stripExtension(relativeItemPathname)) + chalk.dim(` (${error.message})`));
|
||||
|
||||
// Extract partial results from the error (tests that passed before the error)
|
||||
const partialResults = error?.partialResults?.results || [];
|
||||
preRequestTestResults = [
|
||||
...partialResults,
|
||||
{
|
||||
status: 'fail',
|
||||
description: 'Pre-Request Script Error',
|
||||
error: error.message || 'An error occurred while executing the pre-request script.'
|
||||
}
|
||||
];
|
||||
preRequestTestResults = error?.partialResults?.results || [];
|
||||
|
||||
// Preserve nextRequestName if it was set before the error
|
||||
if (error?.partialResults?.nextRequestName !== undefined) {
|
||||
@@ -279,6 +273,35 @@ const runSingleRequest = async function (
|
||||
}
|
||||
|
||||
logResults(preRequestTestResults, 'Pre-Request Tests');
|
||||
|
||||
// Pre-request script error: execution didn't complete (request never sent). Return early so we don't run the HTTP request, post-response script, assertions, or tests.
|
||||
return {
|
||||
test: {
|
||||
filename: relativeItemPathname
|
||||
},
|
||||
request: {
|
||||
method: request.method,
|
||||
url: request.url,
|
||||
headers: request.headers,
|
||||
data: request.data
|
||||
},
|
||||
response: {
|
||||
status: 'error',
|
||||
statusText: null,
|
||||
headers: null,
|
||||
data: null,
|
||||
url: null,
|
||||
responseTime: 0
|
||||
},
|
||||
error: error?.message || 'An error occurred while executing the pre-request script.',
|
||||
status: 'error',
|
||||
assertionResults: [],
|
||||
testResults: [],
|
||||
preRequestTestResults,
|
||||
postResponseTestResults: [],
|
||||
nextRequestName: nextRequestName,
|
||||
shouldStopRunnerExecution
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -764,7 +787,8 @@ const runSingleRequest = async function (
|
||||
{
|
||||
status: 'fail',
|
||||
description: 'Post-Response Script Error',
|
||||
error: error.message || 'An error occurred while executing the post-response script.'
|
||||
error: error.message || 'An error occurred while executing the post-response script.',
|
||||
isScriptError: true
|
||||
}
|
||||
];
|
||||
|
||||
@@ -833,7 +857,8 @@ const runSingleRequest = async function (
|
||||
{
|
||||
status: 'fail',
|
||||
description: 'Test Script Error',
|
||||
error: error.message || 'An error occurred while executing the test script.'
|
||||
error: error.message || 'An error occurred while executing the test script.',
|
||||
isScriptError: true
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user