@@ -454,6 +454,92 @@ void main() {
454
454
),
455
455
).called (1 );
456
456
});
457
+
458
+ test (
459
+ '[startScreenLoadingTrace] should start screen loading trace when screen loading trace matches UI trace matching screen name' ,
460
+ () async {
461
+ const isSameScreen = true ;
462
+ const matchingScreenName = 'matching_screen_name' ;
463
+ mScreenLoadingManager = ScreenLoadingManagerNoResets .init ();
464
+ when (FlagsConfig .screenLoading.isEnabled ()).thenAnswer ((_) async => true );
465
+ when (IBGBuildInfo .I .isIOS).thenReturn (false );
466
+ when (mDateTime.now ()).thenReturn (time);
467
+
468
+ // Match on matching screen name
469
+ when (
470
+ RouteMatcher .I .match (
471
+ routePath: screenName,
472
+ actualPath: matchingScreenName,
473
+ ),
474
+ ).thenReturn (isSameScreen);
475
+
476
+ when (
477
+ RouteMatcher .I .match (
478
+ routePath: screenName,
479
+ actualPath: screenName,
480
+ ),
481
+ ).thenReturn (! isSameScreen);
482
+
483
+ ScreenLoadingManager .I .currentUiTrace = uiTrace.copyWith (
484
+ matchingScreenName: matchingScreenName,
485
+ );
486
+
487
+ await ScreenLoadingManager .I .startScreenLoadingTrace (screenLoadingTrace);
488
+
489
+ final actualUiTrace = ScreenLoadingManager .I .currentUiTrace! ;
490
+
491
+ expect (
492
+ ScreenLoadingManager .I .currentScreenLoadingTrace,
493
+ equals (screenLoadingTrace),
494
+ );
495
+ expect (
496
+ actualUiTrace.didStartScreenLoading,
497
+ isTrue,
498
+ );
499
+ });
500
+
501
+ test (
502
+ '[startScreenLoadingTrace] should not start screen loading trace when screen loading trace does not matches UI trace matching screen name' ,
503
+ () async {
504
+ const isSameScreen = false ;
505
+ const matchingScreenName = 'matching_screen_name' ;
506
+ mScreenLoadingManager = ScreenLoadingManagerNoResets .init ();
507
+ when (FlagsConfig .screenLoading.isEnabled ()).thenAnswer ((_) async => true );
508
+ when (IBGBuildInfo .I .isIOS).thenReturn (false );
509
+ when (mDateTime.now ()).thenReturn (time);
510
+
511
+ // Don't match on matching screen name
512
+ when (
513
+ RouteMatcher .I .match (
514
+ routePath: screenName,
515
+ actualPath: matchingScreenName,
516
+ ),
517
+ ).thenReturn (isSameScreen);
518
+
519
+ when (
520
+ RouteMatcher .I .match (
521
+ routePath: screenName,
522
+ actualPath: screenName,
523
+ ),
524
+ ).thenReturn (! isSameScreen);
525
+
526
+ ScreenLoadingManager .I .currentUiTrace = uiTrace.copyWith (
527
+ matchingScreenName: matchingScreenName,
528
+ );
529
+
530
+ await ScreenLoadingManager .I .startScreenLoadingTrace (screenLoadingTrace);
531
+
532
+ final actualUiTrace = ScreenLoadingManager .I .currentUiTrace! ;
533
+
534
+ expect (
535
+ ScreenLoadingManager .I .currentScreenLoadingTrace,
536
+ isNull,
537
+ );
538
+ expect (
539
+ actualUiTrace.didStartScreenLoading,
540
+ isFalse,
541
+ );
542
+ });
457
543
});
458
544
459
545
group ('reportScreenLoading tests' , () {
0 commit comments