From ad0cb5e0891a74a8318567fc24e01637434cc1dd Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 4 Mar 2020 11:42:59 +0100 Subject: [PATCH] add first test driver --- example/pubspec.yaml | 3 ++ example/test_driver/single_conversation.dart | 9 ++++ .../test_driver/single_conversation_test.dart | 46 +++++++++++++++++++ lib/src/message_input.dart | 2 + lib/src/message_list_view.dart | 1 + 5 files changed, 61 insertions(+) create mode 100644 example/test_driver/single_conversation.dart create mode 100644 example/test_driver/single_conversation_test.dart diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 35756fdf..d683e8c6 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -16,6 +16,9 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + flutter_driver: + sdk: flutter + test: any flutter: uses-material-design: true diff --git a/example/test_driver/single_conversation.dart b/example/test_driver/single_conversation.dart new file mode 100644 index 00000000..28ec8e56 --- /dev/null +++ b/example/test_driver/single_conversation.dart @@ -0,0 +1,9 @@ +import 'package:flutter_driver/driver_extension.dart'; + +import '../lib/single_conversation.dart' as app; + +void main() async { + enableFlutterDriverExtension(); + + await app.main(); +} diff --git a/example/test_driver/single_conversation_test.dart b/example/test_driver/single_conversation_test.dart new file mode 100644 index 00000000..9038ab98 --- /dev/null +++ b/example/test_driver/single_conversation_test.dart @@ -0,0 +1,46 @@ +import 'dart:io'; + +import 'package:flutter_driver/flutter_driver.dart'; +import 'package:test/test.dart'; + +void main() { + test('Single conversation', () async { + final inputFinder = find.byValueKey('messageInputText'); + final sendButtonFinder = find.byValueKey('sendButton'); + final messageListViewFinder = find.byValueKey('messageListView'); + + FlutterDriver driver = await FlutterDriver.connect(); + // Connect to the Flutter driver before running any tests. + + await sleep(Duration(seconds: 5)); + + await driver.waitFor(inputFinder); + + await driver.tap(inputFinder); + + await sleep(Duration(seconds: 1)); + + await driver.enterText('hey'); + + await sleep(Duration(seconds: 1)); + + await driver.tap(sendButtonFinder); + + await sleep(Duration(seconds: 1)); + + await driver.scroll( + messageListViewFinder, + 0, + 2000, + Duration(seconds: 1), + ); + + await sleep(Duration(seconds: 1)); + + // Close the connection to the driver after the tests have completed. + await sleep(Duration(seconds: 5)); + if (driver != null) { + await driver.close(); + } + }); +} diff --git a/lib/src/message_input.dart b/lib/src/message_input.dart index 8df9670c..d8e25372 100644 --- a/lib/src/message_input.dart +++ b/lib/src/message_input.dart @@ -132,6 +132,7 @@ class _MessageInputState extends State { Expanded _buildTextInput(BuildContext context) { return Expanded( child: TextField( + key: Key('messageInputText'), minLines: null, maxLines: null, onSubmitted: (_) { @@ -524,6 +525,7 @@ class _MessageInputState extends State { ), color: Colors.transparent, child: IconButton( + key: Key('sendButton'), onPressed: () { _sendMessage(context); }, diff --git a/lib/src/message_list_view.dart b/lib/src/message_list_view.dart index 45945e30..a3124084 100644 --- a/lib/src/message_list_view.dart +++ b/lib/src/message_list_view.dart @@ -108,6 +108,7 @@ class _MessageListViewState extends State { return true; }, child: ListView.custom( + key: Key('messageListView'), physics: AlwaysScrollableScrollPhysics(), controller: _scrollController, reverse: true,