diff --git a/packages/bruno-app/src/components/ResponsePane/ResponseSave/index.js b/packages/bruno-app/src/components/ResponsePane/ResponseSave/index.js index 7c183b0a6..dae5bad4d 100644 --- a/packages/bruno-app/src/components/ResponsePane/ResponseSave/index.js +++ b/packages/bruno-app/src/components/ResponsePane/ResponseSave/index.js @@ -11,7 +11,7 @@ const ResponseSave = ({ item }) => { const saveResponseToFile = () => { return new Promise((resolve, reject) => { ipcRenderer - .invoke('renderer:save-response-to-file', response, item.requestSent.url) + .invoke('renderer:save-response-to-file', response, item?.requestSent?.url) .then(resolve) .catch((err) => { toast.error(get(err, 'error.message') || 'Something went wrong!'); diff --git a/packages/bruno-app/src/components/ResponsePane/Timeline/index.js b/packages/bruno-app/src/components/ResponsePane/Timeline/index.js index 925b4b77b..9aafb41bb 100644 --- a/packages/bruno-app/src/components/ResponsePane/Timeline/index.js +++ b/packages/bruno-app/src/components/ResponsePane/Timeline/index.js @@ -43,7 +43,7 @@ const Timeline = ({ request, response }) => {
-          {'<'} {response.status} {response.statusText}
+          {'<'} {response.status} - {response.statusText}
         
{responseHeaders.map((h) => { diff --git a/packages/bruno-app/src/components/RunnerResults/index.jsx b/packages/bruno-app/src/components/RunnerResults/index.jsx index f411404a4..4299ef545 100644 --- a/packages/bruno-app/src/components/RunnerResults/index.jsx +++ b/packages/bruno-app/src/components/RunnerResults/index.jsx @@ -59,7 +59,7 @@ export default function RunnerResults({ collection }) { pathname: info.pathname, relativePath: getRelativePath(collection.pathname, info.pathname) }; - if (newItem.status !== 'error' && newItem.status !== 'skipped') { + if (newItem.status !== 'error' && newItem.status !== 'skipped' && newItem.status !== 'terminated') { if (newItem.testResults) { const failed = newItem.testResults.filter((result) => result.status === 'fail'); newItem.testStatus = failed.length ? 'fail' : 'pass'; @@ -142,6 +142,8 @@ export default function RunnerResults({ collection }) { ); } + console.log("results", items); + return (
@@ -163,29 +165,35 @@ export default function RunnerResults({ collection }) {
Total Requests: {items.length}, Passed: {passedRequests.length}, Failed: {failedRequests.length}
+ {runnerInfo?.statusText ? +
+ {runnerInfo?.statusText} +
+ : null} {items.map((item) => { return (
- {item.status !== 'error' && item.testStatus === 'pass' && item.status !== 'skipped' ? ( + {item.status !== 'error' && item.testStatus === 'pass' && item.status !== 'skipped' && item.status !== 'terminated' ? ( ) : ( )} {item.relativePath} - {item.status !== 'error' && item.status !== 'skipped' && item.status !== 'completed' ? ( + {item.status !== 'error' && item.status !== 'skipped' && item.status !== 'terminated' && item.status !== 'completed' ? ( ) : item.responseReceived?.status ? ( setSelectedItem(item)}> - ({item.responseReceived?.status} - {item.responseReceived?.statusText}) + {item.responseReceived?.status} + -  + {item.responseReceived?.statusText} ) : ( setSelectedItem(item)}> diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js b/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js index dc0dd50f6..10f552ec5 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js @@ -1675,6 +1675,9 @@ export const collectionsSlice = createSlice({ if (type === 'testrun-ended') { const info = collection.runnerResult.info; info.status = 'ended'; + if (action.payload.statusText) { + info.statusText = action.payload.statusText; + } } if (type === 'request-queued') { @@ -1713,7 +1716,7 @@ export const collectionsSlice = createSlice({ item.status = 'error'; } - if (type === 'request-skipped') { + if (type === 'runner-request-skipped') { const item = collection.runnerResult.items.findLast((i) => i.uid === request.uid); item.status = 'skipped'; item.responseReceived = action.payload.responseReceived; diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index f3bf6b583..7d35e461f 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -933,6 +933,7 @@ const registerNetworkIpc = (mainWindow) => { const scriptingConfig = get(brunoConfig, 'scripts', {}); scriptingConfig.runtime = getJsSandboxRuntime(collection); const collectionRoot = get(collection, 'root', {}); + let stopRunnerExecution = false; const abortController = new AbortController(); saveCancelToken(cancelTokenUid, abortController); @@ -979,6 +980,8 @@ const registerNetworkIpc = (mainWindow) => { throw error; } + stopRunnerExecution = false; + const item = folderRequests[currentRequestIndex]; let nextRequestName; const itemUid = item.uid; @@ -1020,28 +1023,12 @@ const registerNetworkIpc = (mainWindow) => { } if (preRequestScriptResult?.stopExecution) { - deleteCancelToken(cancelTokenUid); - mainWindow.webContents.send('main:run-folder-event', { - type: 'response-received', - error: 'Request has been stopped from pre-request script', - responseReceived: { - status: 'terminated', - statusText: 'Request execution stopped!', - data: null - }, - ...eventData - }); - mainWindow.webContents.send('main:run-folder-event', { - type: 'testrun-ended', - collectionUid, - folderUid - }); - break; + stopRunnerExecution = true; } if (preRequestScriptResult?.skipRequest) { mainWindow.webContents.send('main:run-folder-event', { - type: 'request-skipped', + type: 'runner-request-skipped', error: 'Request has been skipped from pre-request script', responseReceived: { status: 'skipped', @@ -1173,38 +1160,21 @@ const registerNetworkIpc = (mainWindow) => { } if (postRequestScriptResult?.stopExecution) { - deleteCancelToken(cancelTokenUid); - mainWindow.webContents.send('main:run-folder-event', { - type: 'response-received', - error: 'Request has been stopped from post-response script', - responseReceived: { - status: 'terminated', - statusText: 'Request execution stopped!', - data: null - }, - ...eventData - }); - mainWindow.webContents.send('main:run-folder-event', { - type: 'testrun-ended', - collectionUid, - folderUid - }); - break; + stopRunnerExecution = true; } if (postRequestScriptResult?.skipRequest) { - mainWindow.webContents.send('main:run-folder-event', { - type: 'request-skipped', - error: 'Request has been skipped from post-response script', - responseReceived: { - status: 'skipped', - statusText: 'request skipped via post-response script', - data: null - }, - ...eventData - }); - currentRequestIndex++; - continue; + // mainWindow.webContents.send('main:run-folder-event', { + // type: 'runner-request-skipped', + // error: 'Request has been skipped from post-response script', + // responseReceived: { + // status: 'skipped', + // statusText: 'request skipped via post-response script' + // }, + // ...eventData + // }); + // currentRequestIndex++; + // continue; } // run assertions @@ -1271,6 +1241,18 @@ const registerNetworkIpc = (mainWindow) => { ...eventData }); } + + if (stopRunnerExecution) { + deleteCancelToken(cancelTokenUid); + mainWindow.webContents.send('main:run-folder-event', { + type: 'testrun-ended', + collectionUid, + folderUid, + statusText: 'collection run was terminated!' + }); + break; + } + if (nextRequestName !== undefined) { nJumps++; if (nJumps > 10000) {