diff --git a/mobile/test/features/channels/channel_detail_page_test.dart b/mobile/test/features/channels/channel_detail_page_test.dart index 5b375c84bd..50bacdb440 100644 --- a/mobile/test/features/channels/channel_detail_page_test.dart +++ b/mobile/test/features/channels/channel_detail_page_test.dart @@ -31,7 +31,6 @@ import 'package:flutter/rendering.dart' SemanticsNode; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:leak_tracker/leak_tracker.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:http/testing.dart' as http_testing; @@ -100,7 +99,6 @@ part 'channel_detail_page_test/action_row_tests.dart'; part 'channel_detail_page_test/bubble_tests.dart'; part 'channel_detail_page_test/swipe_reply_tests.dart'; part 'channel_detail_page_test/review_avatar_tests.dart'; -part 'channel_detail_page_test/retention_tests.dart'; const _channelId = '11111111-2222-4333-8444-555555555555'; const _huddleChannelId = '8d764100-fd8f-44cf-9c98-6d8fbd739b8c'; @@ -571,7 +569,6 @@ void main() { bubbleLayoutTests(); swipeReplyTests(); reviewAvatarTests(); - channelRetentionTests(); setUp(() async { SharedPreferences.setMockInitialValues({}); _testPrefs = await SharedPreferences.getInstance(); diff --git a/mobile/test/features/channels/channel_detail_page_test/retention_tests.dart b/mobile/test/features/channels/channel_detail_page_test/retention_tests.dart deleted file mode 100644 index b89eadbff1..0000000000 --- a/mobile/test/features/channels/channel_detail_page_test/retention_tests.dart +++ /dev/null @@ -1,69 +0,0 @@ -part of '../channel_detail_page_test.dart'; - -void channelRetentionTests() { - testWidgets('departed channel composer and route are collectible', ( - tester, - ) async { - final semantics = tester.ensureSemantics(); - try { - await tester.pumpWidget( - _buildTestable( - messages: [ - _textMsg(id: 'message', pubkey: 'alice', content: 'Hello'), - ], - home: Builder( - builder: (context) => Scaffold( - body: TextButton( - onPressed: () => Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => ChannelDetailPage(channel: _testChannel), - ), - ), - child: const Text('Open channel'), - ), - ), - ), - ), - ); - await tester.pumpAndSettle(); - - final retired = >[]; - for (var visit = 0; visit < 3; visit++) { - retired.addAll(await _visitAndLeaveChannel(tester)); - } - // Keep the same app, navigator and semantics owner alive during GC. - await tester.runAsync(() => forceGC(fullGcCycles: 3)); - expect( - retired.where((reference) => reference.target != null), - isEmpty, - reason: 'Departed routes, composers and their portals must be released', - ); - } finally { - semantics.dispose(); - } - }); -} - -Future>> _visitAndLeaveChannel( - WidgetTester tester, -) async { - await tester.tap(find.text('Open channel')); - await tester.pumpAndSettle(); - expect(find.text('Message #general'), findsOneWidget); - final composer = find.byType(ComposeBar); - final portal = find.descendant( - of: composer, - matching: find.byType(OverlayPortal), - ); - expect(portal, findsWidgets); - final retired = >[ - for (final state in tester.stateList(portal)) WeakReference(state), - WeakReference(tester.element(composer)), - WeakReference(ModalRoute.of(tester.element(composer))!), - ]; - Navigator.of(tester.element(composer)).pop(); - await tester.pumpAndSettle(); - expect(find.byType(ChannelDetailPage), findsNothing); - expect(find.text('Open channel'), findsOneWidget); - return retired; -}