From 8c7f60b4c68876415bdb46ed568ff1e058da4e9d Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Mon, 14 Oct 2024 16:22:58 +0200 Subject: [PATCH] fix tests --- .../time_to_initial_display_tracker.dart | 6 ++++ .../test/sentry_navigator_observer_test.dart | 29 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/flutter/lib/src/navigation/time_to_initial_display_tracker.dart b/flutter/lib/src/navigation/time_to_initial_display_tracker.dart index d2bad1869..5213d4587 100644 --- a/flutter/lib/src/navigation/time_to_initial_display_tracker.dart +++ b/flutter/lib/src/navigation/time_to_initial_display_tracker.dart @@ -129,4 +129,10 @@ class TimeToInitialDisplayTracker { // We can't clear the ttid end time stamp here, because it might be needed // in the [TimeToFullDisplayTracker] class } + + @visibleForTesting + void clearForTest() { + clear(); + _endTimestamp = null; + } } diff --git a/flutter/test/sentry_navigator_observer_test.dart b/flutter/test/sentry_navigator_observer_test.dart index fe2f029c4..cc7fc106e 100644 --- a/flutter/test/sentry_navigator_observer_test.dart +++ b/flutter/test/sentry_navigator_observer_test.dart @@ -10,6 +10,7 @@ import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry/src/sentry_tracer.dart'; import 'package:sentry_flutter/src/native/native_frames.dart'; import 'package:sentry_flutter/src/navigation/time_to_display_tracker.dart'; +import 'package:sentry_flutter/src/navigation/time_to_full_display_tracker.dart'; import 'package:sentry_flutter/src/navigation/time_to_initial_display_tracker.dart'; import 'fake_frame_callback_handler.dart'; @@ -128,6 +129,11 @@ void main() { }); group('$SentryNavigatorObserver', () { + tearDown(() { + fixture.timeToInitialDisplayTracker.clearForTest(); + fixture.timeToFullDisplayTracker.clear(); + }); + test('didPush starts transaction', () async { const name = 'Current Route'; final currentRoute = route(RouteSettings(name: name)); @@ -461,6 +467,9 @@ void main() { final currentRoute = route(RouteSettings(name: 'Current Route')); final hub = _MockHub(); + final options = hub.options as SentryFlutterOptions; + options.enableTimeToFullDisplayTracing = true; + final transaction = getMockSentryTracer(finished: false) as SentryTracer; final ttidSpan = MockSentrySpan(); final ttfdSpan = MockSentrySpan(); @@ -480,6 +489,10 @@ void main() { description: anyNamed('description'), startTimestamp: anyNamed('startTimestamp'))) .thenReturn(NoOpSentrySpan()); + when(transaction.startChild('ui.load.full_display', + description: anyNamed('description'), + startTimestamp: anyNamed('startTimestamp'))) + .thenReturn(NoOpSentrySpan()); _whenAnyStart(hub, transaction); final sut = fixture.getSut(hub: hub); @@ -514,6 +527,9 @@ void main() { final currentRoute = route(RouteSettings(name: 'Current Route')); final hub = _MockHub(); + final options = hub.options as SentryFlutterOptions; + options.enableTimeToFullDisplayTracing = true; + final transaction = getMockSentryTracer(finished: false) as SentryTracer; final ttidSpan = MockSentrySpan(); final ttfdSpan = MockSentrySpan(); @@ -533,6 +549,10 @@ void main() { description: anyNamed('description'), startTimestamp: anyNamed('startTimestamp'))) .thenReturn(NoOpSentrySpan()); + when(transaction.startChild('ui.load.full_display', + description: anyNamed('description'), + startTimestamp: anyNamed('startTimestamp'))) + .thenReturn(NoOpSentrySpan()); _whenAnyStart(hub, transaction); final sut = fixture.getSut(hub: hub); @@ -1165,6 +1185,9 @@ void main() { } class Fixture { + late TimeToInitialDisplayTracker timeToInitialDisplayTracker; + late TimeToFullDisplayTracker timeToFullDisplayTracker; + SentryNavigatorObserver getSut({ required Hub hub, bool enableAutoTransactions = true, @@ -1175,13 +1198,17 @@ class Fixture { List? ignoreRoutes, }) { final frameCallbackHandler = FakeFrameCallbackHandler(); - final timeToInitialDisplayTracker = TimeToInitialDisplayTracker( + timeToInitialDisplayTracker = TimeToInitialDisplayTracker( frameCallbackHandler: frameCallbackHandler, ); + timeToFullDisplayTracker = TimeToFullDisplayTracker( + endTimestampProvider: () => timeToInitialDisplayTracker.endTimestamp, + ); final options = hub.options; if (options is SentryFlutterOptions) { options.timeToDisplayTracker = TimeToDisplayTracker( ttidTracker: timeToInitialDisplayTracker, + ttfdTracker: timeToFullDisplayTracker, options: hub.options as SentryFlutterOptions, ); }