diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index c21f3476fdb..1123b3b3252 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -342,8 +342,6 @@ final Set _knownMissingTests = { 'examples/api/test/material/search_anchor/search_anchor.2_test.dart', 'examples/api/test/material/about/about_list_tile.0_test.dart', 'examples/api/test/material/selection_area/selection_area.0_test.dart', - 'examples/api/test/material/scaffold/scaffold.end_drawer.0_test.dart', - 'examples/api/test/material/scaffold/scaffold.drawer.0_test.dart', 'examples/api/test/material/scaffold/scaffold_messenger.of.0_test.dart', 'examples/api/test/material/scaffold/scaffold_messenger.0_test.dart', 'examples/api/test/material/scaffold/scaffold_state.show_bottom_sheet.0_test.dart', diff --git a/examples/api/test/material/scaffold/scaffold.drawer.0_test.dart b/examples/api/test/material/scaffold/scaffold.drawer.0_test.dart new file mode 100644 index 00000000000..b9cc5c077da --- /dev/null +++ b/examples/api/test/material/scaffold/scaffold.drawer.0_test.dart @@ -0,0 +1,55 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/material/scaffold/scaffold.drawer.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('The page should contain a drawer than can be opened and closed', (WidgetTester tester) async { + await tester.pumpWidget( + const example.DrawerExampleApp(), + ); + + expect(find.byType(Drawer), findsNothing); + + // Open the drawer by tapping the button at the center of the screen. + await tester.tap(find.widgetWithText(ElevatedButton, 'Open Drawer')); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsOne); + expect(tester.getCenter( + find.byType(Drawer)).dx, + lessThan(400), + reason: 'The drawer should be on the left side of the screen', + ); + expect(find.text('This is the Drawer'), findsOne); + + // Close the drawer by tapping the button inside the drawer. + await tester.tap(find.widgetWithText(ElevatedButton, 'Close Drawer')); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsNothing); + + // Open the drawer by tapping the drawer button in the app bar. + expect(tester.getCenter( + find.byType(DrawerButton)).dx, + lessThan(400), + reason: 'The drawer button should be on the left side of the app bar', + ); + await tester.tap(find.byType(DrawerButton)); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsOne); + expect(find.text('This is the Drawer'), findsOne); + + // Close the drawer by tapping outside the drawer. + final Rect drawerRect = tester.getRect(find.byType(Drawer)); + final Offset outsideDrawer = drawerRect.centerRight + const Offset(50, 0); + await tester.tapAt(outsideDrawer); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsNothing); + }); +} diff --git a/examples/api/test/material/scaffold/scaffold.end_drawer.0_test.dart b/examples/api/test/material/scaffold/scaffold.end_drawer.0_test.dart new file mode 100644 index 00000000000..ad6ae00de42 --- /dev/null +++ b/examples/api/test/material/scaffold/scaffold.end_drawer.0_test.dart @@ -0,0 +1,55 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/material/scaffold/scaffold.end_drawer.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('The page should contain an end drawer than can be opened and closed', (WidgetTester tester) async { + await tester.pumpWidget( + const example.EndDrawerExampleApp(), + ); + + expect(find.byType(Drawer), findsNothing); + + // Open the drawer by tapping the button at the center of the screen. + await tester.tap(find.widgetWithText(ElevatedButton, 'Open End Drawer')); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsOne); + expect(tester.getCenter( + find.byType(Drawer)).dx, + greaterThan(400), + reason: 'The drawer should be on the right side of the screen', + ); + expect(find.text('This is the Drawer'), findsOne); + + // Close the drawer by tapping the button inside the drawer. + await tester.tap(find.widgetWithText(ElevatedButton, 'Close Drawer')); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsNothing); + + // Open the drawer by tapping the drawer button in the app bar. + expect(tester.getCenter( + find.byType(EndDrawerButton)).dx, + greaterThan(400), + reason: 'The drawer button should be on the right side of the app bar', + ); + await tester.tap(find.byType(EndDrawerButton)); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsOne); + expect(find.text('This is the Drawer'), findsOne); + + // Close the drawer by tapping outside the drawer. + final Rect drawerRect = tester.getRect(find.byType(Drawer)); + final Offset outsideDrawer = drawerRect.centerLeft - const Offset(50, 0); + await tester.tapAt(outsideDrawer); + await tester.pumpAndSettle(); + + expect(find.byType(Drawer), findsNothing); + }); +}