@@ -129,6 +129,42 @@ describe("createMatrixMonitorSyncLifecycle", () => {
129129 ) ;
130130 } ) ;
131131
132+ it ( "only refreshes transport liveness for successful sync responses" , async ( ) => {
133+ vi . useFakeTimers ( ) ;
134+ vi . setSystemTime ( new Date ( "2026-04-10T16:21:00.000Z" ) ) ;
135+ const { client, lifecycle, setStatus } = createSyncLifecycleHarness ( ) ;
136+ try {
137+ setStatus . mockClear ( ) ;
138+
139+ client . emit ( "sync.state" , "PREPARED" , null , undefined ) ;
140+ expect ( setStatus ) . toHaveBeenLastCalledWith (
141+ expect . not . objectContaining ( {
142+ lastTransportActivityAt : expect . any ( Number ) ,
143+ } ) ,
144+ ) ;
145+
146+ await vi . advanceTimersByTimeAsync ( 2_000 ) ;
147+ client . emit ( "sync.state" , "SYNCING" , "PREPARED" , undefined ) ;
148+ const syncAt = Date . now ( ) ;
149+ expect ( setStatus ) . toHaveBeenLastCalledWith (
150+ expect . objectContaining ( {
151+ lastTransportActivityAt : syncAt ,
152+ } ) ,
153+ ) ;
154+
155+ await vi . advanceTimersByTimeAsync ( 3_000 ) ;
156+ client . emit ( "sync.state" , "CATCHUP" , "SYNCING" , undefined ) ;
157+ expect ( setStatus ) . toHaveBeenLastCalledWith (
158+ expect . objectContaining ( {
159+ lastTransportActivityAt : syncAt ,
160+ } ) ,
161+ ) ;
162+ } finally {
163+ lifecycle . dispose ( ) ;
164+ vi . useRealTimers ( ) ;
165+ }
166+ } ) ;
167+
132168 it ( "does not downgrade a fatal error to stopped during shutdown" , async ( ) => {
133169 const { client, lifecycle, setStatus, setStopping, statusController } =
134170 createSyncLifecycleHarness ( {
0 commit comments