@@ -226,13 +226,13 @@ describe("Durable Functions", () => {
226226 const id = await taskHubClient . scheduleNewOrchestration ( singleTimer ) ;
227227 const state = await taskHubClient . waitForOrchestrationCompletion ( id , undefined , 30 ) ;
228228
229- let expectedCompletionSecond = state ?. createdAt ?. getTime ( ) ?? 0 ;
230- if ( state && state . createdAt !== undefined ) {
231- expectedCompletionSecond += delay * 1000 ;
232- }
233- expect ( expectedCompletionSecond ) . toBeDefined ( ) ;
234- const actualCompletionSecond = state ?. lastUpdatedAt ?. getTime ( ) ?? 0 ;
235- expect ( actualCompletionSecond ) . toBeDefined ( ) ;
229+ const createdAtMs = state ?. createdAt ?. getTime ( ) ?? 0 ;
230+ const lastUpdatedAtMs = state ?. lastUpdatedAt ?. getTime ( ) ?? 0 ;
231+ const actualDurationMs = lastUpdatedAtMs - createdAtMs ;
232+ const expectedMinDurationMs = delay * 1000 ;
233+ // Allow 1 second tolerance for timing variations in test infrastructure
234+ // (createdAt may not align exactly with when timer was scheduled)
235+ const toleranceMs = 1000 ;
236236
237237 expect ( state ) ;
238238 expect ( state ?. name ) . toEqual ( getName ( singleTimer ) ) ;
@@ -241,7 +241,8 @@ describe("Durable Functions", () => {
241241 expect ( state ?. runtimeStatus ) . toEqual ( OrchestrationStatus . ORCHESTRATION_STATUS_COMPLETED ) ;
242242 expect ( state ?. createdAt ) . toBeDefined ( ) ;
243243 expect ( state ?. lastUpdatedAt ) . toBeDefined ( ) ;
244- expect ( expectedCompletionSecond ) . toBeLessThanOrEqual ( actualCompletionSecond ) ;
244+ // Timer should fire after approximately the expected delay (with tolerance for timing variations)
245+ expect ( actualDurationMs ) . toBeGreaterThanOrEqual ( expectedMinDurationMs - toleranceMs ) ;
245246 } , 31000 ) ;
246247
247248 it ( "should wait for external events with a timeout - true" , async ( ) => {
0 commit comments