diff --git a/packages/bruno-app/src/components/RunnerResults/index.jsx b/packages/bruno-app/src/components/RunnerResults/index.jsx index 7956eb1ad..31b6d97f2 100644 --- a/packages/bruno-app/src/components/RunnerResults/index.jsx +++ b/packages/bruno-app/src/components/RunnerResults/index.jsx @@ -46,6 +46,24 @@ export default function RunnerResults({ collection }) { const dispatch = useDispatch(); const [selectedItem, setSelectedItem] = useState(null); const [delay, setDelay] = useState(null); + const [activeFilter, setActiveFilter] = useState('all'); + + + const getActiveFilterPredicate = () => { + switch (activeFilter) { + case 'passing_requests': + return (item) => item.status !== 'error' && item.testStatus === 'pass' && item.assertionStatus === 'pass'; + case 'failing_requests': + return (item) => (item.status !== 'error' && item.testStatus === 'fail') || item.assertionStatus === 'fail'; + case 'passing_tests': + return (item) => item.testResults?.some((result) => result.status === 'pass'); + case 'failing_tests': + return (item) => item.testResults?.some((result) => result.status === 'fail' || result.status === 'error'); + default: + return () => true + } + } + const [selectedRequestItems, setSelectedRequestItems] = useState([]); const [configureMode, setConfigureMode] = useState(false); @@ -192,6 +210,44 @@ export default function RunnerResults({ collection }) { }, [tagsEnabled]); const totalRequestsInCollection = getTotalRequestCountInCollection(collectionCopy); + + const displayCollectionResults = () => { + let passedRequests = 0; + let failedRequests = 0; + let totalTestsInCollection = 0; + let passedTests = 0; + let failedTests = 0; + items.forEach(item => { + const isPassedRequest = item.status !== 'error' && item.testStatus === 'pass' && item.assertionStatus === 'pass'; + const isFailedRequest = (item.status !== 'error' && item.testStatus === 'fail') || item.assertionStatus === 'fail'; + + if (isPassedRequest) passedRequests++; + if (isFailedRequest) failedRequests++; + + const testResults = Array.isArray(item?.testResults) ? item.testResults : []; + totalTestsInCollection += testResults.length; + testResults.forEach(result => { + if (result.status === 'pass') passedTests++; + if (result.status === 'fail' || result.status === 'error') failedTests++; + }); + }); + + return ( +