From 5a1b1c77559a44601a632fd11dd9202cc6b5b59b Mon Sep 17 00:00:00 2001 From: therealrinku Date: Thu, 2 May 2024 14:21:16 +0545 Subject: [PATCH 1/3] feat: added runner delay --- .../components/RunnerResults/StyledWrapper.js | 13 +++++++++ .../src/components/RunnerResults/index.jsx | 27 +++++++++++++++---- .../ReduxStore/slices/collections/actions.js | 5 ++-- .../bruno-electron/src/ipc/network/index.js | 14 +++++++++- 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/packages/bruno-app/src/components/RunnerResults/StyledWrapper.js b/packages/bruno-app/src/components/RunnerResults/StyledWrapper.js index 0178b90d78..38dd7511e5 100644 --- a/packages/bruno-app/src/components/RunnerResults/StyledWrapper.js +++ b/packages/bruno-app/src/components/RunnerResults/StyledWrapper.js @@ -1,6 +1,19 @@ import styled from 'styled-components'; const Wrapper = styled.div` + .textbox { + border: 1px solid #ccc; + padding: 0.2rem 0.5rem; + box-shadow: none; + border-radius: 0px; + outline: none; + box-shadow: none; + transition: border-color ease-in-out 0.1s; + border-radius: 3px; + background-color: ${(props) => props.theme.modal.input.bg}; + border: 1px solid ${(props) => props.theme.modal.input.border}; + } + .item-path { .link { color: ${(props) => props.theme.textLink}; diff --git a/packages/bruno-app/src/components/RunnerResults/index.jsx b/packages/bruno-app/src/components/RunnerResults/index.jsx index e415aeb3cf..3190587fb0 100644 --- a/packages/bruno-app/src/components/RunnerResults/index.jsx +++ b/packages/bruno-app/src/components/RunnerResults/index.jsx @@ -23,6 +23,7 @@ const getRelativePath = (fullPath, pathname) => { export default function RunnerResults({ collection }) { const dispatch = useDispatch(); const [selectedItem, setSelectedItem] = useState(null); + const [delay, setDelay] = useState(null); // ref for the runner output body const runnerBodyRef = useRef(); @@ -78,11 +79,11 @@ export default function RunnerResults({ collection }) { .filter(Boolean); const runCollection = () => { - dispatch(runCollectionFolder(collection.uid, null, true)); + dispatch(runCollectionFolder(collection.uid, null, true, Number(delay))); }; const runAgain = () => { - dispatch(runCollectionFolder(collection.uid, runnerInfo.folderUid, runnerInfo.isRecursive)); + dispatch(runCollectionFolder(collection.uid, runnerInfo.folderUid, runnerInfo.isRecursive, Number(delay))); }; const resetRunner = () => { @@ -116,6 +117,20 @@ export default function RunnerResults({ collection }) { You have {totalRequestsInCollection} requests in this collection. +
+ + setDelay(e.target.value)} + /> +
+ @@ -167,11 +182,13 @@ export default function RunnerResults({ collection }) { {item.status !== 'error' && item.status !== 'completed' ? ( - ) : ( + ) : item.responseReceived?.status ? ( setSelectedItem(item)}> - ({get(item.responseReceived, 'status')} - {get(item.responseReceived, 'statusText')}) + ({item.responseReceived?.status} + {item.responseReceived?.statusText}) + ) : ( + (request failed) )} {item.status == 'error' ?
{item.error}
: null} diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js index 526b43a1ea..fcd1094414 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js @@ -246,7 +246,7 @@ export const cancelRunnerExecution = (cancelTokenUid) => (dispatch) => { cancelNetworkRequest(cancelTokenUid).catch((err) => console.log(err)); }; -export const runCollectionFolder = (collectionUid, folderUid, recursive) => (dispatch, getState) => { +export const runCollectionFolder = (collectionUid, folderUid, recursive, delay) => (dispatch, getState) => { const state = getState(); const collection = findCollectionByUid(state.collections.collections, collectionUid); @@ -277,7 +277,8 @@ export const runCollectionFolder = (collectionUid, folderUid, recursive) => (dis collectionCopy, environment, collectionCopy.collectionVariables, - recursive + recursive, + delay ) .then(resolve) .catch((err) => { diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 73d8a59232..1997173117 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -805,7 +805,7 @@ const registerNetworkIpc = (mainWindow) => { ipcMain.handle( 'renderer:run-collection-folder', - async (event, folder, collection, environment, collectionVariables, recursive) => { + async (event, folder, collection, environment, collectionVariables, recursive, delay) => { const collectionUid = collection.uid; const collectionPath = collection.pathname; const folderUid = folder ? folder.uid : null; @@ -925,6 +925,18 @@ const registerNetworkIpc = (mainWindow) => { timeStart = Date.now(); let response, responseTime; try { + if (delay && !Number.isNaN(delay)) { + const delayPromise = new Promise((resolve) => setTimeout(resolve, delay)); + + const cancellationPromise = new Promise((_, reject) => { + abortController.signal.addEventListener('abort', () => { + reject(new Error('Cancelled')); + }); + }); + + await Promise.race([delayPromise, cancellationPromise]); + } + /** @type {import('axios').AxiosResponse} */ response = await axiosInstance(request); timeEnd = Date.now(); From 08ece3c95454391f861d7c13e22fb1e00044ae01 Mon Sep 17 00:00:00 2001 From: therealrinku Date: Thu, 2 May 2024 14:25:12 +0545 Subject: [PATCH 2/3] fix: check if delay is greater than 0 --- packages/bruno-electron/src/ipc/network/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 1997173117..d94cb73fe7 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -925,7 +925,7 @@ const registerNetworkIpc = (mainWindow) => { timeStart = Date.now(); let response, responseTime; try { - if (delay && !Number.isNaN(delay)) { + if (delay && !Number.isNaN(delay) && delay > 0) { const delayPromise = new Promise((resolve) => setTimeout(resolve, delay)); const cancellationPromise = new Promise((_, reject) => { From 8e27aa033b305e7c48712a53f13d6ad71293e114 Mon Sep 17 00:00:00 2001 From: therealrinku Date: Sat, 25 May 2024 12:20:20 +0545 Subject: [PATCH 3/3] fix: input type number and added missing onclick --- packages/bruno-app/src/components/RunnerResults/index.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/bruno-app/src/components/RunnerResults/index.jsx b/packages/bruno-app/src/components/RunnerResults/index.jsx index 3190587fb0..4b0b68cba1 100644 --- a/packages/bruno-app/src/components/RunnerResults/index.jsx +++ b/packages/bruno-app/src/components/RunnerResults/index.jsx @@ -120,7 +120,7 @@ export default function RunnerResults({ collection }) {
{item.responseReceived?.statusText}) ) : ( - (request failed) + setSelectedItem(item)}> + (request failed) + )}
{item.status == 'error' ?
{item.error}
: null}