@@ -193,6 +193,9 @@ void main() {
193
193
// ignore: deprecated_member_use
194
194
window.physicalSizeTestValue = Size (newWidth, newHeight);
195
195
196
+ // waiting for debouncing with 100ms added https://github.com/getsentry/sentry-dart/issues/400
197
+ await tester.pump (Duration (milliseconds: 150 ));
198
+
196
199
final breadcrumb =
197
200
verify (hub.addBreadcrumb (captureAny)).captured.single as Breadcrumb ;
198
201
@@ -230,6 +233,9 @@ void main() {
230
233
// ignore: deprecated_member_use
231
234
window.devicePixelRatioTestValue = newPixelRatio;
232
235
236
+ // waiting for debouncing with 100ms added https://github.com/getsentry/sentry-dart/issues/400
237
+ await tester.pump (Duration (milliseconds: 150 ));
238
+
233
239
final breadcrumb =
234
240
verify (hub.addBreadcrumb (captureAny)).captured.single as Breadcrumb ;
235
241
@@ -265,6 +271,9 @@ void main() {
265
271
// ignore: deprecated_member_use
266
272
window.viewInsetsTestValue = WindowPadding .zero;
267
273
274
+ // waiting for debouncing with 100ms added https://github.com/getsentry/sentry-dart/issues/400
275
+ await tester.pump (Duration (milliseconds: 150 ));
276
+
268
277
verifyNever (hub.addBreadcrumb (captureAny));
269
278
270
279
instance.removeObserver (observer);
@@ -286,6 +295,9 @@ void main() {
286
295
287
296
window.onMetricsChanged !();
288
297
298
+ // waiting for debouncing with 100ms added https://github.com/getsentry/sentry-dart/issues/400
299
+ await tester.pump (Duration (milliseconds: 150 ));
300
+
289
301
verifyNever (hub.addBreadcrumb (captureAny));
290
302
291
303
instance.removeObserver (observer);
@@ -400,5 +412,70 @@ void main() {
400
412
401
413
instance.removeObserver (observer);
402
414
});
415
+
416
+ testWidgets ('debouncing didChangeMetrics with 100ms delay' ,
417
+ (WidgetTester tester) async {
418
+ final hub = MockHub ();
419
+
420
+ final observer = SentryWidgetsBindingObserver (
421
+ hub: hub,
422
+ options: flutterTrackingEnabledOptions,
423
+ );
424
+ final instance = tester.binding;
425
+ instance.addObserver (observer);
426
+
427
+ // ignore: deprecated_member_use
428
+ final window = instance.window;
429
+
430
+ // ignore: deprecated_member_use
431
+ window.physicalSizeTestValue = window.physicalSize;
432
+
433
+ const newPixelRatio = 1.7 ;
434
+ // ignore: deprecated_member_use
435
+ window.devicePixelRatioTestValue = newPixelRatio;
436
+
437
+ verifyNever (hub.addBreadcrumb (captureAny));
438
+
439
+ // waiting for debouncing with 100ms added https://github.com/getsentry/sentry-dart/issues/400
440
+ await tester.pump (Duration (milliseconds: 150 ));
441
+
442
+ verify (hub.addBreadcrumb (captureAny));
443
+
444
+ instance.removeObserver (observer);
445
+ });
446
+
447
+ testWidgets ('debouncing: didChangeMetrics is called only once in 100ms' ,
448
+ (WidgetTester tester) async {
449
+ final hub = MockHub ();
450
+
451
+ final observer = SentryWidgetsBindingObserver (
452
+ hub: hub,
453
+ options: flutterTrackingEnabledOptions,
454
+ );
455
+ final instance = tester.binding;
456
+ instance.addObserver (observer);
457
+
458
+ // ignore: deprecated_member_use
459
+ final window = instance.window;
460
+
461
+ // ignore: deprecated_member_use
462
+ window.physicalSizeTestValue = window.physicalSize;
463
+
464
+ // ignore: deprecated_member_use
465
+ window.devicePixelRatioTestValue = 2.1 ;
466
+ // ignore: deprecated_member_use
467
+ window.devicePixelRatioTestValue = 2.2 ;
468
+ // ignore: deprecated_member_use
469
+ window.devicePixelRatioTestValue = 2.3 ;
470
+
471
+ verifyNever (hub.addBreadcrumb (captureAny));
472
+
473
+ // waiting for debouncing with 100ms added https://github.com/getsentry/sentry-dart/issues/400
474
+ await tester.pump (Duration (milliseconds: 150 ));
475
+
476
+ verify (hub.addBreadcrumb (captureAny)).called (1 );
477
+
478
+ instance.removeObserver (observer);
479
+ });
403
480
});
404
481
}
0 commit comments