@@ -439,6 +439,15 @@ async function runWatchHmrCommand(cwd: string, args: string[], commandTimeoutMs:
439439 }
440440}
441441
442+ function expectStyleRollbackMetric ( metric : StyleMutationMetric , message : string ) {
443+ if ( metric . rollbackNeedleCleared === false ) {
444+ expect ( metric . rollbackOutputMs , `${ message } fallback rollback output latency should be recorded` ) . toBeGreaterThanOrEqual ( 0 )
445+ return
446+ }
447+
448+ expect ( metric . rollbackEffectiveMs , `${ message } rollback marker clearance should be positive` ) . toBeGreaterThan ( 0 )
449+ }
450+
442451function assertHotUpdateReport ( report : HotUpdateReport , target : WatchCaseName , maxHotUpdateMs : number ) {
443452 const requiredMutationRounds = resolveRequiredMutationRounds ( )
444453 const issue33RoundProfile = isIssue33RoundProfile ( )
@@ -731,7 +740,7 @@ function assertHotUpdateReport(report: HotUpdateReport, target: WatchCaseName, m
731740 expect ( styleMetric . referenceDirective ) . toBeUndefined ( )
732741 }
733742 expect ( styleMetric . hotUpdateEffectiveMs ) . toBeGreaterThan ( 0 )
734- expect ( styleMetric . rollbackEffectiveMs ) . toBeGreaterThan ( 0 )
743+ expectStyleRollbackMetric ( styleMetric , `[ ${ item . name } ] style` )
735744 expect ( styleMetric . hotUpdateEffectiveMs ) . toBeLessThanOrEqual ( maxHotUpdateMs )
736745 }
737746
@@ -758,7 +767,7 @@ function assertHotUpdateReport(report: HotUpdateReport, target: WatchCaseName, m
758767 }
759768 expect ( subPackageMetric . style . hotUpdateEffectiveMs ) . toBeGreaterThan ( 0 )
760769 expect ( subPackageMetric . style . hotUpdateEffectiveMs ) . toBeLessThanOrEqual ( maxHotUpdateMs )
761- expect ( subPackageMetric . style . rollbackEffectiveMs ) . toBeGreaterThan ( 0 )
770+ expectStyleRollbackMetric ( subPackageMetric . style , `[ ${ item . name } / ${ subPackageMetric . root } ] subpackage style` )
762771 if ( subPackageMetric . independent ) {
763772 expect ( subPackageMetric . root ) . toBe ( 'sub-independent' )
764773 }
0 commit comments