diff --git a/packages/bruno-cli/src/runner/run-single-request.js b/packages/bruno-cli/src/runner/run-single-request.js index 8cd54206e..a7a0c3ca3 100644 --- a/packages/bruno-cli/src/runner/run-single-request.js +++ b/packages/bruno-cli/src/runner/run-single-request.js @@ -520,7 +520,7 @@ const runSingleRequest = async function ( postResponseTestResults = result?.results || []; logResults(postResponseTestResults, 'Post-Response Tests'); } catch (error) { - logResults(error); + console.error('Post-response script execution error:', error); } } @@ -569,7 +569,7 @@ const runSingleRequest = async function ( logResults(testResults, 'Tests'); } catch (error) { - logResults(error); + console.error('Test script execution error:', error); } } diff --git a/packages/bruno-js/src/runtime/script-runtime.js b/packages/bruno-js/src/runtime/script-runtime.js index 3d1b0ec30..a18c94917 100644 --- a/packages/bruno-js/src/runtime/script-runtime.js +++ b/packages/bruno-js/src/runtime/script-runtime.js @@ -260,65 +260,69 @@ class ScriptRuntime { context.bru.runRequest = runRequestByItemPathname; } - let scriptError = null; + if (this.runtime === 'quickjs') { + await executeQuickJsVmAsync({ + script: script, + context: context, + collectionPath + }); - try { - if (this.runtime === 'quickjs') { - await executeQuickJsVmAsync({ - script: script, - context: context, - collectionPath - }); - } else { - // default runtime is vm2 - const vm = new NodeVM({ - sandbox: context, - require: { - context: 'sandbox', - builtin: [ "*" ], - external: true, - root: [collectionPath, ...additionalContextRootsAbsolute], - mock: { - // node libs - path, - stream, - util, - url, - http, - https, - punycode, - zlib, - // 3rd party libs - ajv, - 'ajv-formats': addFormats, - atob, - btoa, - lodash, - moment, - uuid, - nanoid, - axios, - 'node-fetch': fetch, - 'crypto-js': CryptoJS, - 'xml2js': xml2js, - cheerio, - tv4, - ...whitelistedModules, - fs: allowScriptFilesystemAccess ? fs : undefined, - 'node-vault': NodeVault - } - } - }); - - const asyncVM = vm.run(`module.exports = async () => { ${script} }`, path.join(collectionPath, 'vm.js')); - await asyncVM(); - } - } catch (error) { - scriptError = error; - console.error('Post-response script execution error:', error); + return { + response, + envVariables: cleanJson(envVariables), + runtimeVariables: cleanJson(runtimeVariables), + globalEnvironmentVariables: cleanJson(globalEnvironmentVariables), + results: cleanJson(__brunoTestResults.getResults()), + nextRequestName: bru.nextRequest, + skipRequest: bru.skipRequest, + stopExecution: bru.stopExecution + }; } - const result = { + // default runtime is vm2 + const vm = new NodeVM({ + sandbox: context, + require: { + context: 'sandbox', + builtin: [ "*" ], + external: true, + root: [collectionPath, ...additionalContextRootsAbsolute], + mock: { + // node libs + path, + stream, + util, + url, + http, + https, + punycode, + zlib, + // 3rd party libs + ajv, + 'ajv-formats': addFormats, + atob, + btoa, + lodash, + moment, + uuid, + nanoid, + axios, + 'node-fetch': fetch, + 'crypto-js': CryptoJS, + 'xml2js': xml2js, + cheerio, + tv4, + ...whitelistedModules, + fs: allowScriptFilesystemAccess ? fs : undefined, + 'node-vault': NodeVault + } + } + }); + + const asyncVM = vm.run(`module.exports = async () => { ${script} }`, path.join(collectionPath, 'vm.js')); + await asyncVM(); + + return { response, envVariables: cleanJson(envVariables), runtimeVariables: cleanJson(runtimeVariables), @@ -328,13 +332,6 @@ class ScriptRuntime { skipRequest: bru.skipRequest, stopExecution: bru.stopExecution }; - - if (scriptError) { - scriptError.partialResults = result; - throw scriptError; - } - - return result; } } diff --git a/packages/bruno-js/src/runtime/test-runtime.js b/packages/bruno-js/src/runtime/test-runtime.js index 163ca9aad..2088a5cb7 100644 --- a/packages/bruno-js/src/runtime/test-runtime.js +++ b/packages/bruno-js/src/runtime/test-runtime.js @@ -177,7 +177,6 @@ class TestRuntime { } } catch (error) { scriptError = error; - console.error('Test script execution error:', error); } const result = {