11import _ from 'lodash' ;
22import { StaticReportBuilder , StaticReportBuilderOptions } from './static' ;
33import { GuiTestsTreeBuilder , TestBranch , TestEqualDiffsData , TestRefUpdateData } from '../tests-tree-builder/gui' ;
4- import { UPDATED , DB_COLUMNS , ToolName , HERMIONE_TITLE_DELIMITER , SKIPPED } from '../constants' ;
4+ import { UPDATED , DB_COLUMNS , ToolName , TestStatus , HERMIONE_TITLE_DELIMITER , SKIPPED , SUCCESS } from '../constants' ;
55import { ConfigForStaticFile , getConfigForStaticFile } from '../server-utils' ;
66import { ReporterTestResult } from '../test-adapter' ;
77import { Tree , TreeImage } from '../tests-tree-builder/base' ;
88import { ImageInfoFull , ImageInfoWithState , ReporterConfig } from '../types' ;
9- import { isUpdatedStatus } from '../common-utils' ;
9+ import { determineStatus , isUpdatedStatus } from '../common-utils' ;
1010import { HtmlReporter , HtmlReporterValues } from '../plugin-api' ;
1111import { SkipItem } from '../tests-tree-builder/static' ;
1212import { copyAndUpdate } from '../test-adapter/utils' ;
@@ -134,7 +134,25 @@ export class GuiReportBuilder extends StaticReportBuilder {
134134 return { updatedImage, removedResult, previousExpectedPath, shouldRemoveReference, shouldRevertReference, newResult} ;
135135 }
136136
137- override async addTestResult ( formattedResultOriginal : ReporterTestResult ) : Promise < ReporterTestResult > {
137+ getUpdatedReferenceTestStatus ( testResult : ReporterTestResult ) : TestStatus {
138+ const getStateName = ( imageInfo : ImageInfoFull ) : string => ( imageInfo as ImageInfoWithState ) . stateName ;
139+ const resultId = testResult . id ;
140+ const originalResult = this . _testsTree . getTestBranch ( resultId ) ;
141+ const omittedImageStates = testResult . imagesInfo . map ( getStateName ) ;
142+
143+ const estimatedStatus = determineStatus ( {
144+ status : originalResult . result . status ,
145+ error : originalResult . result . error ,
146+ imagesInfo : originalResult . images . filter ( image => ! omittedImageStates . includes ( getStateName ( image ) ) )
147+ } ) ;
148+
149+ return estimatedStatus === SUCCESS ? UPDATED : estimatedStatus ;
150+ }
151+
152+ override async addTestResult (
153+ formattedResultOriginal : ReporterTestResult ,
154+ updates ?: Partial < ReporterTestResult >
155+ ) : Promise < ReporterTestResult > {
138156 const formattedResult = await super . addTestResult ( formattedResultOriginal ) ;
139157
140158 if ( formattedResult . status === SKIPPED ) {
@@ -148,10 +166,13 @@ export class GuiReportBuilder extends StaticReportBuilder {
148166 }
149167
150168 const formattedResultWithImages = this . _loadImagesFromPreviousAttempt ( formattedResult ) ;
169+ const resultOverrided = updates
170+ ? copyAndUpdate ( formattedResultWithImages , updates )
171+ : formattedResultWithImages ;
151172
152- this . _testsTree . addTestResult ( formattedResultWithImages ) ;
173+ this . _testsTree . addTestResult ( resultOverrided ) ;
153174
154- return formattedResultWithImages ;
175+ return resultOverrided ;
155176 }
156177
157178 private _loadImagesFromPreviousAttempt ( formattedResult : ReporterTestResult ) : ReporterTestResult {
0 commit comments