diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 5d2e00230..0a5fee775 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -401,6 +401,10 @@ const registerNetworkIpc = (mainWindow) => { collectionUid }); } + + if (result?.error) { + mainWindow.webContents.send('main:display-error', result.error); + } } // run post-response script diff --git a/packages/bruno-js/src/runtime/vars-runtime.js b/packages/bruno-js/src/runtime/vars-runtime.js index 0185ebddc..770822213 100644 --- a/packages/bruno-js/src/runtime/vars-runtime.js +++ b/packages/bruno-js/src/runtime/vars-runtime.js @@ -56,14 +56,27 @@ class VarsRuntime { ...bruContext }; + const errors = new Map(); _.each(enabledVars, (v) => { - const value = evaluateJsExpression(v.value, context); - bru.setVar(v.name, value); + try { + const value = evaluateJsExpression(v.value, context); + bru.setVar(v.name, value); + } catch (error) { + errors.set(v.name, error); + } }); + let error = null; + if (errors.size > 0) { + // Format all errors as a single string to be displayed in a toast + const errorMessage = [...errors.entries()].map(([name, err]) => `${name}: ${err.message ?? err}`).join('\n'); + error = `${errors.size} error${errors.size === 1 ? '' : 's'} in post response variables: \n${errorMessage}`; + } + return { envVariables, - collectionVariables + collectionVariables, + error }; } }