diff --git a/packages/bruno-common/src/runner/reports/html/template.spec.ts b/packages/bruno-common/src/runner/reports/html/template.spec.ts new file mode 100644 index 000000000..12d696c88 --- /dev/null +++ b/packages/bruno-common/src/runner/reports/html/template.spec.ts @@ -0,0 +1,32 @@ +import { getFilteredRequestResults } from './template'; +import vm from 'vm'; + +describe('getFilteredRequestResults', () => { + it('preserves original request indexes when filtering failed results', () => { + const results = [ + { + path: '01-passing', + status: 'pass', + testResults: [{ description: 'status is 200', status: 'pass' }], + assertionResults: [] + }, + { + path: '02-failing', + status: 'pass', + testResults: [{ description: 'forced failure', status: 'fail' }], + assertionResults: [] + } + ]; + const ctx = vm.createContext({ results }); + vm.runInContext(`var fn = ${getFilteredRequestResults.toString()}`, ctx); + + const result = vm.runInContext('fn(results, true)', ctx); + + expect(result).toEqual([ + { + value: results[1], + index: 1 + } + ]); + }); +}); diff --git a/packages/bruno-common/src/runner/reports/html/template.ts b/packages/bruno-common/src/runner/reports/html/template.ts index a0b525418..dadc20b73 100644 --- a/packages/bruno-common/src/runner/reports/html/template.ts +++ b/packages/bruno-common/src/runner/reports/html/template.ts @@ -1,3 +1,20 @@ +import type { T_RunnerRequestExecutionResult } from '../../types'; + +export const getFilteredRequestResults = (results: T_RunnerRequestExecutionResult[] = [], onlyFailed = false) => { + const indexedResults = (Array.isArray(results) ? results : []).map((value, index) => ({ value, index })); + + if (!onlyFailed) { + return indexedResults; + } + + return indexedResults.filter( + ({ value }) => + value?.status === 'error' + || !!value?.testResults?.find((t) => t.status !== 'pass') + || !!value?.assertionResults?.find((t) => t.status !== 'pass') + ); +}; + export const htmlTemplateString = (resutsJsonString: string) => `
@@ -294,7 +311,7 @@ export const htmlTemplateString = (resutsJsonString: string) => `