mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-08 06:28:33 +00:00
fix: add size and duration fields to CLI bru.runRequest() response (#7429)
* fix: add size and duration fields to CLI bru.runRequest() response Add `size` and `duration` fields to the response object in CLI to match GUI behavior, ensuring consistent API for bru.runRequest() across both environments. - `duration` is an alias for `responseTime` for GUI compatibility - `size` is the byte length of the response buffer (0 for errors/skipped) Fixes #7352 * fix: address PR review feedback for CLI response consistency - Coerce responseTime header to number (was string from headers.get()) - Add comment explaining duration vs responseTime difference between GUI (wall-clock) and CLI (approximation using responseTime) - Add integration tests for duration/size fields across skipped, success, and network error response paths * fix: add missing setupProxyAgents mock in response-fields test The success path calls setupProxyAgents which was missing from the proxy-util mock, causing CI failure. --------- Co-authored-by: Chirag Chandrashekhar <cchirag85@gmail.com>
This commit is contained in:
committed by
GitHub
parent
7ddd2d3f17
commit
765c9f1060
@@ -161,7 +161,9 @@ const runSingleRequest = async function (
|
||||
status: 'skipped',
|
||||
statusText: errorMsg,
|
||||
data: null,
|
||||
responseTime: 0
|
||||
responseTime: 0,
|
||||
duration: 0,
|
||||
size: 0
|
||||
},
|
||||
error: null,
|
||||
status: 'skipped',
|
||||
@@ -256,7 +258,9 @@ const runSingleRequest = async function (
|
||||
status: 'skipped',
|
||||
statusText: 'request skipped via pre-request script',
|
||||
data: null,
|
||||
responseTime: 0
|
||||
responseTime: 0,
|
||||
duration: 0,
|
||||
size: 0
|
||||
},
|
||||
error: null,
|
||||
status: 'skipped',
|
||||
@@ -307,7 +311,9 @@ const runSingleRequest = async function (
|
||||
headers: null,
|
||||
data: null,
|
||||
url: null,
|
||||
responseTime: 0
|
||||
responseTime: 0,
|
||||
duration: 0,
|
||||
size: 0
|
||||
},
|
||||
error: error?.message || 'An error occurred while executing the pre-request script.',
|
||||
status: 'error',
|
||||
@@ -667,7 +673,7 @@ const runSingleRequest = async function (
|
||||
response.dataBuffer = dataBuffer;
|
||||
|
||||
// Prevents the duration on leaking to the actual result
|
||||
responseTime = response.headers.get('request-duration');
|
||||
responseTime = Number(response.headers.get('request-duration')) || 0;
|
||||
response.headers.delete('request-duration');
|
||||
|
||||
// save cookies if enabled
|
||||
@@ -707,7 +713,9 @@ const runSingleRequest = async function (
|
||||
headers: null,
|
||||
data: null,
|
||||
url: null,
|
||||
responseTime: 0
|
||||
responseTime: 0,
|
||||
duration: 0,
|
||||
size: 0
|
||||
},
|
||||
error: err?.message || err?.errors?.map((e) => e?.message)?.at(0) || err?.code || 'Request Failed!',
|
||||
status: 'error',
|
||||
@@ -902,7 +910,11 @@ const runSingleRequest = async function (
|
||||
headers: response.headers,
|
||||
data: response.data,
|
||||
url: response.request ? response.request.protocol + '//' + response.request.host + response.request.path : null,
|
||||
responseTime
|
||||
responseTime,
|
||||
// In the GUI, duration is wall-clock time (timeEnd - timeStart).
|
||||
// In the CLI we use responseTime as a close approximation.
|
||||
duration: responseTime,
|
||||
size: response.dataBuffer ? Buffer.byteLength(response.dataBuffer) : 0
|
||||
},
|
||||
error: null,
|
||||
status: 'pass',
|
||||
@@ -931,7 +943,9 @@ const runSingleRequest = async function (
|
||||
headers: null,
|
||||
data: null,
|
||||
url: null,
|
||||
responseTime: 0
|
||||
responseTime: 0,
|
||||
duration: 0,
|
||||
size: 0
|
||||
},
|
||||
status: 'error',
|
||||
error: err.message,
|
||||
|
||||
Reference in New Issue
Block a user