From fb8d62322cd82441cad6c75fa86ece654db63685 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 24 Feb 2020 17:45:19 -0800 Subject: [PATCH 01/17] adding a test for e2e web testing. --- .cirrus.yml | 12 ++++++ packages/e2e/README.md | 9 +++++ packages/e2e/example/lib/main.dart | 26 +------------ packages/e2e/example/lib/my_app.dart | 27 ++++++++++++++ packages/e2e/example/lib/my_web_app.dart | 28 ++++++++++++++ .../e2e/example/test_driver/example_e2e.dart | 7 +++- .../example/test_driver/example_e2e_web.dart | 35 ++++++++++++++++++ .../test_driver/example_e2e_web_test.dart | 12 ++++++ packages/e2e/example/web/favicon.png | Bin 0 -> 917 bytes packages/e2e/example/web/icons/Icon-192.png | Bin 0 -> 5292 bytes packages/e2e/example/web/icons/Icon-512.png | Bin 0 -> 8252 bytes packages/e2e/example/web/index.html | 33 +++++++++++++++++ packages/e2e/example/web/manifest.json | 23 ++++++++++++ packages/e2e/lib/e2e.dart | 10 ++++- 14 files changed, 194 insertions(+), 28 deletions(-) create mode 100644 packages/e2e/example/lib/my_app.dart create mode 100644 packages/e2e/example/lib/my_web_app.dart create mode 100644 packages/e2e/example/test_driver/example_e2e_web.dart create mode 100644 packages/e2e/example/test_driver/example_e2e_web_test.dart create mode 100644 packages/e2e/example/web/favicon.png create mode 100644 packages/e2e/example/web/icons/Icon-192.png create mode 100644 packages/e2e/example/web/icons/Icon-512.png create mode 100644 packages/e2e/example/web/index.html create mode 100644 packages/e2e/example/web/manifest.json diff --git a/.cirrus.yml b/.cirrus.yml index 1236002fecd6..fa6ed5a798ac 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -45,6 +45,18 @@ task: - if [[ "$CHANNEL" -eq "stable" ]]; then find . | grep _web$ | xargs rm -rf; fi - flutter channel $CHANNEL - ./script/build_all_plugins_app.sh apk + - name: e2e_web_smoke_test + # Tests e2e example test in web. + only_if: "changesInclude('.cirrus.yml', 'packages/e2e/**') || $CIRRUS_PR == ''" + script: + - flutter config --enable-web + - git clone https://github.com/flutter/web_installers.git + - cd web_installers/packages/web_drivers/ + - pub get + - dart lib/web_driver_installer.dart & + - sleep 20 + - cd ../../../packages/e2e/example/ + - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome - name: build-apks+java-test+firebase-test-lab env: matrix: diff --git a/packages/e2e/README.md b/packages/e2e/README.md index ed892ab6e7ff..3e27ff36afa3 100644 --- a/packages/e2e/README.md +++ b/packages/e2e/README.md @@ -69,6 +69,15 @@ cd example flutter drive --driver=test_driver/_test.dart test/_e2e.dart ``` +You can run tests on web on release mode. + +First you need to make sure you have downloaded the driver for the browser. + +``` +cd example +flutter drive -v --target=test_driver/dart -d web-server --release --browser-name=chrome +``` + ## Android device testing Create an instrumentation test file in your application's diff --git a/packages/e2e/example/lib/main.dart b/packages/e2e/example/lib/main.dart index 2509fb390ff4..1f33324acd01 100644 --- a/packages/e2e/example/lib/main.dart +++ b/packages/e2e/example/lib/main.dart @@ -1,27 +1,5 @@ -import 'dart:io' show Platform; -import 'package:flutter/material.dart'; +import 'my_app.dart' if (dart.library.html) 'my_web_app.dart'; // ignore_for_file: public_member_api_docs -void main() => runApp(MyApp()); - -class MyApp extends StatefulWidget { - @override - _MyAppState createState() => _MyAppState(); -} - -class _MyAppState extends State { - @override - Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Plugin example app'), - ), - body: Center( - child: Text('Platform: ${Platform.operatingSystem}\n'), - ), - ), - ); - } -} +void main() => startApp(); diff --git a/packages/e2e/example/lib/my_app.dart b/packages/e2e/example/lib/my_app.dart new file mode 100644 index 000000000000..bfbdb860c76d --- /dev/null +++ b/packages/e2e/example/lib/my_app.dart @@ -0,0 +1,27 @@ +import 'dart:io' show Platform; +import 'package:flutter/material.dart'; + +// ignore_for_file: public_member_api_docs + +void startApp() => runApp(MyApp()); + +class MyApp extends StatefulWidget { + @override + _MyAppState createState() => _MyAppState(); +} + +class _MyAppState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar( + title: const Text('Plugin example app'), + ), + body: Center( + child: Text('Platform: ${Platform.operatingSystem}\n'), + ), + ), + ); + } +} diff --git a/packages/e2e/example/lib/my_web_app.dart b/packages/e2e/example/lib/my_web_app.dart new file mode 100644 index 000000000000..c2ced1af97ae --- /dev/null +++ b/packages/e2e/example/lib/my_web_app.dart @@ -0,0 +1,28 @@ +import 'dart:html' as html; +import 'package:flutter/material.dart'; + +// ignore_for_file: public_member_api_docs + +void startApp() => runApp(MyWebApp()); + +class MyWebApp extends StatefulWidget { + @override + _MyWebAppState createState() => _MyWebAppState(); +} + +class _MyWebAppState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar( + title: const Text('Plugin example app'), + ), + body: Center( + key: Key('mainapp'), + child: Text('Platform: ${html.window.navigator.platform}\n'), + ), + ), + ); + } +} diff --git a/packages/e2e/example/test_driver/example_e2e.dart b/packages/e2e/example/test_driver/example_e2e.dart index e91dd4d0ce9f..9766f568b654 100644 --- a/packages/e2e/example/test_driver/example_e2e.dart +++ b/packages/e2e/example/test_driver/example_e2e.dart @@ -10,13 +10,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:e2e/e2e.dart'; -import 'package:e2e_example/main.dart'; +import 'package:e2e_example/main.dart' as app; void main() { E2EWidgetsFlutterBinding.ensureInitialized(); testWidgets('verify text', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); + app.main(); + + // Trigger a frame. + await tester.pumpAndSettle(); // Verify that platform version is retrieved. expect( diff --git a/packages/e2e/example/test_driver/example_e2e_web.dart b/packages/e2e/example/test_driver/example_e2e_web.dart new file mode 100644 index 000000000000..121d07e6e447 --- /dev/null +++ b/packages/e2e/example/test_driver/example_e2e_web.dart @@ -0,0 +1,35 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'dart:html' as html; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:e2e/e2e.dart'; + +import 'package:e2e_example/main.dart' as app; + +void main() { + E2EWidgetsFlutterBinding binding = + E2EWidgetsFlutterBinding.ensureInitialized() as E2EWidgetsFlutterBinding; + testWidgets('verify text', (WidgetTester tester) async { + // Build our app and trigger a frame. + app.main(); + + // Trigger a frame. + await tester.pumpAndSettle(); + + // Verify that platform is retrieved. + expect( + find.byWidgetPredicate( + (Widget widget) => + widget is Text && + widget.data.startsWith('Platform: ${html.window.navigator.platform}\n'), + ), + findsOneWidget, + ); + }); +} diff --git a/packages/e2e/example/test_driver/example_e2e_web_test.dart b/packages/e2e/example/test_driver/example_e2e_web_test.dart new file mode 100644 index 000000000000..6147d44df2ec --- /dev/null +++ b/packages/e2e/example/test_driver/example_e2e_web_test.dart @@ -0,0 +1,12 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter_driver/flutter_driver.dart'; + +Future main() async { + final FlutterDriver driver = await FlutterDriver.connect(); + final String result = + await driver.requestData(null, timeout: const Duration(minutes: 1)); + await driver.close(); + exit(result == 'pass' ? 0 : 1); +} diff --git a/packages/e2e/example/web/favicon.png b/packages/e2e/example/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/packages/e2e/example/web/icons/Icon-192.png b/packages/e2e/example/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/packages/e2e/example/web/icons/Icon-512.png b/packages/e2e/example/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/packages/e2e/example/web/index.html b/packages/e2e/example/web/index.html new file mode 100644 index 000000000000..96629657328f --- /dev/null +++ b/packages/e2e/example/web/index.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + example + + + + + + + + diff --git a/packages/e2e/example/web/manifest.json b/packages/e2e/example/web/manifest.json new file mode 100644 index 000000000000..c63800102369 --- /dev/null +++ b/packages/e2e/example/web/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "example", + "short_name": "example", + "start_url": ".", + "display": "minimal-ui", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/packages/e2e/lib/e2e.dart b/packages/e2e/lib/e2e.dart index afcbeb0d703e..142d2fd8d4bd 100644 --- a/packages/e2e/lib/e2e.dart +++ b/packages/e2e/lib/e2e.dart @@ -19,10 +19,16 @@ class E2EWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding { // TODO(jackson): Report test results as they arrive tearDownAll(() async { try { - await _channel.invokeMethod( - 'allTestsFinished', {'results': _results}); + // For web integration tests we are not using the + // `plugins.flutter.io/e2e`. Therefore tests won't complete and fail + // unless we add a timeout. + await _channel.invokeMethod('allTestsFinished', { + 'results': _results + }).timeout(Duration(seconds: 10)); } on MissingPluginException { print('Warning: E2E test plugin was not detected.'); + } on TimeoutException { + print('Warning: Channel timed out'); } if (!_allTestsPassed.isCompleted) _allTestsPassed.complete(true); }); From fd85c785f0e6ccc477c870ab39cc9f0698793632 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 24 Feb 2020 17:57:02 -0800 Subject: [PATCH 02/17] chaning the changelog. updating pubspec.yaml version. fixing analyze --- packages/e2e/CHANGELOG.md | 4 ++++ packages/e2e/example/test_driver/example_e2e_web.dart | 3 +-- packages/e2e/example/test_driver/failure.dart | 7 +++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/e2e/CHANGELOG.md b/packages/e2e/CHANGELOG.md index 35d3159e05b4..6c960971cca5 100644 --- a/packages/e2e/CHANGELOG.md +++ b/packages/e2e/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.4+4 + +* Add timeout to invokeMethod call, for tests do not use MethodChannel. + ## 0.2.4+3 * Fixed code snippet in the readme under the "Using Flutter driver to run tests" section. diff --git a/packages/e2e/example/test_driver/example_e2e_web.dart b/packages/e2e/example/test_driver/example_e2e_web.dart index 121d07e6e447..48c2a7223eaf 100644 --- a/packages/e2e/example/test_driver/example_e2e_web.dart +++ b/packages/e2e/example/test_driver/example_e2e_web.dart @@ -13,8 +13,7 @@ import 'package:e2e/e2e.dart'; import 'package:e2e_example/main.dart' as app; void main() { - E2EWidgetsFlutterBinding binding = - E2EWidgetsFlutterBinding.ensureInitialized() as E2EWidgetsFlutterBinding; + E2EWidgetsFlutterBinding.ensureInitialized(); testWidgets('verify text', (WidgetTester tester) async { // Build our app and trigger a frame. app.main(); diff --git a/packages/e2e/example/test_driver/failure.dart b/packages/e2e/example/test_driver/failure.dart index 64d83bf5c13b..b2225d18e971 100644 --- a/packages/e2e/example/test_driver/failure.dart +++ b/packages/e2e/example/test_driver/failure.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:e2e/e2e.dart'; -import 'package:e2e_example/main.dart'; +import 'package:e2e_example/main.dart' as app; // Tests the failure behavior of the E2EWidgetsFlutterBinding // @@ -21,7 +21,10 @@ void main() { testWidgets('failure 1', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MyApp()); + app.main(); + + // Trigger a frame. + await tester.pumpAndSettle(); // Verify that platform version is retrieved. expect( From a6705e7672845d1d298b8fe649b23e04a90f5e99 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 24 Feb 2020 18:01:14 -0800 Subject: [PATCH 03/17] merging the changelog --- packages/e2e/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e/pubspec.yaml b/packages/e2e/pubspec.yaml index 68735867218c..21e1210bd23e 100644 --- a/packages/e2e/pubspec.yaml +++ b/packages/e2e/pubspec.yaml @@ -1,6 +1,6 @@ name: e2e description: Runs tests that use the flutter_test API as integration tests. -version: 0.2.4+3 +version: 0.2.4+4 homepage: https://github.com/flutter/plugins/tree/master/packages/e2e environment: From 07db3ebcac4f723b936e0b5a89069c49cc814ea5 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Wed, 26 Feb 2020 11:00:08 -0800 Subject: [PATCH 04/17] addressing reviewer comments --- packages/e2e/example/test_driver/failure.dart | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/e2e/example/test_driver/failure.dart b/packages/e2e/example/test_driver/failure.dart index b2225d18e971..ddeeb800bb06 100644 --- a/packages/e2e/example/test_driver/failure.dart +++ b/packages/e2e/example/test_driver/failure.dart @@ -23,11 +23,8 @@ void main() { // Build our app and trigger a frame. app.main(); - // Trigger a frame. - await tester.pumpAndSettle(); - // Verify that platform version is retrieved. - expect( + await expectLater( find.byWidgetPredicate( (Widget widget) => widget is Text && widget.data.startsWith('This should fail'), From 749b6239631f447144f6421c33cca5c948083c07 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Wed, 26 Feb 2020 11:06:56 -0800 Subject: [PATCH 05/17] fix format. addressing reviewer comments --- .cirrus.yml | 4 ++-- packages/e2e/CHANGELOG.md | 2 +- .../e2e/example/test_driver/example_e2e_web.dart | 3 ++- packages/e2e/lib/e2e.dart | 14 +++++++------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index fa6ed5a798ac..df952bd542ef 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -53,8 +53,8 @@ task: - git clone https://github.com/flutter/web_installers.git - cd web_installers/packages/web_drivers/ - pub get - - dart lib/web_driver_installer.dart & - - sleep 20 + - dart lib/web_driver_installer.dart chromedriver install-only + - ./chromedriver/chromedriver --port=4444 - cd ../../../packages/e2e/example/ - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome - name: build-apks+java-test+firebase-test-lab diff --git a/packages/e2e/CHANGELOG.md b/packages/e2e/CHANGELOG.md index 6c960971cca5..86f37b291549 100644 --- a/packages/e2e/CHANGELOG.md +++ b/packages/e2e/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.2.4+4 -* Add timeout to invokeMethod call, for tests do not use MethodChannel. +* Fixed a hang that occurred on platforms that don't have a `MethodChannel` listener registered.. ## 0.2.4+3 diff --git a/packages/e2e/example/test_driver/example_e2e_web.dart b/packages/e2e/example/test_driver/example_e2e_web.dart index 48c2a7223eaf..24c3f2cbb2a4 100644 --- a/packages/e2e/example/test_driver/example_e2e_web.dart +++ b/packages/e2e/example/test_driver/example_e2e_web.dart @@ -26,7 +26,8 @@ void main() { find.byWidgetPredicate( (Widget widget) => widget is Text && - widget.data.startsWith('Platform: ${html.window.navigator.platform}\n'), + widget.data + .startsWith('Platform: ${html.window.navigator.platform}\n'), ), findsOneWidget, ); diff --git a/packages/e2e/lib/e2e.dart b/packages/e2e/lib/e2e.dart index 142d2fd8d4bd..eef594a6f99e 100644 --- a/packages/e2e/lib/e2e.dart +++ b/packages/e2e/lib/e2e.dart @@ -20,15 +20,15 @@ class E2EWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding { tearDownAll(() async { try { // For web integration tests we are not using the - // `plugins.flutter.io/e2e`. Therefore tests won't complete and fail - // unless we add a timeout. - await _channel.invokeMethod('allTestsFinished', { - 'results': _results - }).timeout(Duration(seconds: 10)); + // `plugins.flutter.io/e2e`. Mark the tests as complete before invoking + // the channel. + if (kIsWeb) { + if (!_allTestsPassed.isCompleted) _allTestsPassed.complete(true); + } + await _channel.invokeMethod( + 'allTestsFinished', {'results': _results}); } on MissingPluginException { print('Warning: E2E test plugin was not detected.'); - } on TimeoutException { - print('Warning: Channel timed out'); } if (!_allTestsPassed.isCompleted) _allTestsPassed.complete(true); }); From f553931444a0f87366eede305b4f80951635f724 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Wed, 26 Feb 2020 11:48:33 -0800 Subject: [PATCH 06/17] try to run chromedriver on the backend --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index df952bd542ef..701818d2a4d7 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -54,7 +54,7 @@ task: - cd web_installers/packages/web_drivers/ - pub get - dart lib/web_driver_installer.dart chromedriver install-only - - ./chromedriver/chromedriver --port=4444 + - ./chromedriver/chromedriver --port=4444 & - cd ../../../packages/e2e/example/ - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome - name: build-apks+java-test+firebase-test-lab From abd5cb80b2ac28ab953c7999d25633da3b725db5 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Wed, 26 Feb 2020 14:01:44 -0800 Subject: [PATCH 07/17] chrome driver is was running as the main task, preventing test from running . use background_task to run it. use ENV for directory change --- .cirrus.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 701818d2a4d7..691b6afb8a35 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -6,6 +6,8 @@ task: dockerfile: .ci/Dockerfile cpu: 8 memory: 16G + env: + E2E_PATH: "./packages/e2e" upgrade_script: - flutter channel stable - flutter upgrade @@ -48,14 +50,18 @@ task: - name: e2e_web_smoke_test # Tests e2e example test in web. only_if: "changesInclude('.cirrus.yml', 'packages/e2e/**') || $CIRRUS_PR == ''" - script: + install_script: - flutter config --enable-web - git clone https://github.com/flutter/web_installers.git - cd web_installers/packages/web_drivers/ - pub get - dart lib/web_driver_installer.dart chromedriver install-only - - ./chromedriver/chromedriver --port=4444 & - - cd ../../../packages/e2e/example/ + start_emulator_background_script: + - pwd + - ./chromedriver/chromedriver --port=4444 + test_script: + - pwd + - cd $E2E_PATH/example/ - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome - name: build-apks+java-test+firebase-test-lab env: From 6e29ec089c289735353664ed9503539a8b2dabb3 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Thu, 27 Feb 2020 11:56:47 -0800 Subject: [PATCH 08/17] change in scripts. remove list from backfround task. change argument of driver --- .cirrus.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 691b6afb8a35..555bfd066e41 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -55,12 +55,9 @@ task: - git clone https://github.com/flutter/web_installers.git - cd web_installers/packages/web_drivers/ - pub get - - dart lib/web_driver_installer.dart chromedriver install-only - start_emulator_background_script: - - pwd - - ./chromedriver/chromedriver --port=4444 + - dart lib/web_driver_installer.dart chromedriver --install-only + driver_background_script: ./chromedriver/chromedriver --port=4444 test_script: - - pwd - cd $E2E_PATH/example/ - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome - name: build-apks+java-test+firebase-test-lab From e0909397b837ef1b2b9243542c3c664a7fc93e90 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Thu, 27 Feb 2020 12:07:16 -0800 Subject: [PATCH 09/17] removed background task. it wasn't using the same path --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 555bfd066e41..6e1403448b8a 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -56,7 +56,7 @@ task: - cd web_installers/packages/web_drivers/ - pub get - dart lib/web_driver_installer.dart chromedriver --install-only - driver_background_script: ./chromedriver/chromedriver --port=4444 + - ./chromedriver/chromedriver --port=4444 & test_script: - cd $E2E_PATH/example/ - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome From c5ca0c280e74a974e891378b1c4b8364aaa621f4 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Thu, 27 Feb 2020 12:53:20 -0800 Subject: [PATCH 10/17] run web tests only on browser --- packages/e2e/example/test_driver/example_e2e_web.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/e2e/example/test_driver/example_e2e_web.dart b/packages/e2e/example/test_driver/example_e2e_web.dart index 24c3f2cbb2a4..4e16d94aa99f 100644 --- a/packages/e2e/example/test_driver/example_e2e_web.dart +++ b/packages/e2e/example/test_driver/example_e2e_web.dart @@ -5,6 +5,8 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. +@TestOn('browser') + import 'dart:html' as html; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; From bbe1ee9b58fd511222025de9b0c700c05a6aa578 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Thu, 27 Feb 2020 13:07:17 -0800 Subject: [PATCH 11/17] add test on to the web driver test as well. drive-examples are still failing --- packages/e2e/example/test_driver/example_e2e_web_test.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/e2e/example/test_driver/example_e2e_web_test.dart b/packages/e2e/example/test_driver/example_e2e_web_test.dart index 6147d44df2ec..4e6b095f5aa1 100644 --- a/packages/e2e/example/test_driver/example_e2e_web_test.dart +++ b/packages/e2e/example/test_driver/example_e2e_web_test.dart @@ -1,3 +1,5 @@ +@TestOn('browser') + import 'dart:async'; import 'dart:io'; From a5de564cac30dea6bce6616a3cd8499412e39b3f Mon Sep 17 00:00:00 2001 From: nturgut Date: Thu, 27 Feb 2020 14:27:22 -0800 Subject: [PATCH 12/17] fix the imports --- packages/e2e/example/test_driver/example_e2e_web_test.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/e2e/example/test_driver/example_e2e_web_test.dart b/packages/e2e/example/test_driver/example_e2e_web_test.dart index 4e6b095f5aa1..ecf6b3e2e17c 100644 --- a/packages/e2e/example/test_driver/example_e2e_web_test.dart +++ b/packages/e2e/example/test_driver/example_e2e_web_test.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter_driver/flutter_driver.dart'; +import 'package:test/test.dart'; Future main() async { final FlutterDriver driver = await FlutterDriver.connect(); From 494c8d48ff42651d63840d17ab56118651ed5c70 Mon Sep 17 00:00:00 2001 From: nturgut Date: Thu, 27 Feb 2020 17:42:38 -0800 Subject: [PATCH 13/17] trying reviever suggestion for drive_example compile errors --- .../e2e/example/test_driver/example_e2e.dart | 23 ++----------- .../example/test_driver/example_e2e_io.dart | 34 +++++++++++++++++++ .../example/test_driver/example_e2e_web.dart | 2 -- .../test_driver/example_e2e_web_test.dart | 3 -- 4 files changed, 36 insertions(+), 26 deletions(-) create mode 100644 packages/e2e/example/test_driver/example_e2e_io.dart diff --git a/packages/e2e/example/test_driver/example_e2e.dart b/packages/e2e/example/test_driver/example_e2e.dart index 9766f568b654..791f4d6553e0 100644 --- a/packages/e2e/example/test_driver/example_e2e.dart +++ b/packages/e2e/example/test_driver/example_e2e.dart @@ -5,30 +5,11 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -import 'dart:io' show Platform; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; import 'package:e2e/e2e.dart'; -import 'package:e2e_example/main.dart' as app; +import 'example_e2e_io.dart' if (dart.library.html) 'example_e2e_web.dart' as tests; void main() { E2EWidgetsFlutterBinding.ensureInitialized(); - testWidgets('verify text', (WidgetTester tester) async { - // Build our app and trigger a frame. - app.main(); - - // Trigger a frame. - await tester.pumpAndSettle(); - - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => - widget is Text && - widget.data.startsWith('Platform: ${Platform.operatingSystem}'), - ), - findsOneWidget, - ); - }); + tests.main(); } diff --git a/packages/e2e/example/test_driver/example_e2e_io.dart b/packages/e2e/example/test_driver/example_e2e_io.dart new file mode 100644 index 000000000000..9766f568b654 --- /dev/null +++ b/packages/e2e/example/test_driver/example_e2e_io.dart @@ -0,0 +1,34 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'dart:io' show Platform; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:e2e/e2e.dart'; + +import 'package:e2e_example/main.dart' as app; + +void main() { + E2EWidgetsFlutterBinding.ensureInitialized(); + testWidgets('verify text', (WidgetTester tester) async { + // Build our app and trigger a frame. + app.main(); + + // Trigger a frame. + await tester.pumpAndSettle(); + + // Verify that platform version is retrieved. + expect( + find.byWidgetPredicate( + (Widget widget) => + widget is Text && + widget.data.startsWith('Platform: ${Platform.operatingSystem}'), + ), + findsOneWidget, + ); + }); +} diff --git a/packages/e2e/example/test_driver/example_e2e_web.dart b/packages/e2e/example/test_driver/example_e2e_web.dart index 4e16d94aa99f..24c3f2cbb2a4 100644 --- a/packages/e2e/example/test_driver/example_e2e_web.dart +++ b/packages/e2e/example/test_driver/example_e2e_web.dart @@ -5,8 +5,6 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -@TestOn('browser') - import 'dart:html' as html; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/e2e/example/test_driver/example_e2e_web_test.dart b/packages/e2e/example/test_driver/example_e2e_web_test.dart index ecf6b3e2e17c..6147d44df2ec 100644 --- a/packages/e2e/example/test_driver/example_e2e_web_test.dart +++ b/packages/e2e/example/test_driver/example_e2e_web_test.dart @@ -1,10 +1,7 @@ -@TestOn('browser') - import 'dart:async'; import 'dart:io'; import 'package:flutter_driver/flutter_driver.dart'; -import 'package:test/test.dart'; Future main() async { final FlutterDriver driver = await FlutterDriver.connect(); From 7cf24d6cb5833efa437a78cf5b843eb6b6368a81 Mon Sep 17 00:00:00 2001 From: nturgut Date: Thu, 27 Feb 2020 18:19:57 -0800 Subject: [PATCH 14/17] test _ imports --- .../test_driver/{example_e2e_io.dart => _example_e2e_io.dart} | 0 .../{example_e2e_test.dart => _example_e2e_test.dart} | 0 .../test_driver/{example_e2e_web.dart => _example_e2e_web.dart} | 0 .../{example_e2e_web_test.dart => _example_e2e_web_test.dart} | 0 packages/e2e/example/test_driver/example_e2e.dart | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) rename packages/e2e/example/test_driver/{example_e2e_io.dart => _example_e2e_io.dart} (100%) rename packages/e2e/example/test_driver/{example_e2e_test.dart => _example_e2e_test.dart} (100%) rename packages/e2e/example/test_driver/{example_e2e_web.dart => _example_e2e_web.dart} (100%) rename packages/e2e/example/test_driver/{example_e2e_web_test.dart => _example_e2e_web_test.dart} (100%) diff --git a/packages/e2e/example/test_driver/example_e2e_io.dart b/packages/e2e/example/test_driver/_example_e2e_io.dart similarity index 100% rename from packages/e2e/example/test_driver/example_e2e_io.dart rename to packages/e2e/example/test_driver/_example_e2e_io.dart diff --git a/packages/e2e/example/test_driver/example_e2e_test.dart b/packages/e2e/example/test_driver/_example_e2e_test.dart similarity index 100% rename from packages/e2e/example/test_driver/example_e2e_test.dart rename to packages/e2e/example/test_driver/_example_e2e_test.dart diff --git a/packages/e2e/example/test_driver/example_e2e_web.dart b/packages/e2e/example/test_driver/_example_e2e_web.dart similarity index 100% rename from packages/e2e/example/test_driver/example_e2e_web.dart rename to packages/e2e/example/test_driver/_example_e2e_web.dart diff --git a/packages/e2e/example/test_driver/example_e2e_web_test.dart b/packages/e2e/example/test_driver/_example_e2e_web_test.dart similarity index 100% rename from packages/e2e/example/test_driver/example_e2e_web_test.dart rename to packages/e2e/example/test_driver/_example_e2e_web_test.dart diff --git a/packages/e2e/example/test_driver/example_e2e.dart b/packages/e2e/example/test_driver/example_e2e.dart index 791f4d6553e0..ccc9395d87eb 100644 --- a/packages/e2e/example/test_driver/example_e2e.dart +++ b/packages/e2e/example/test_driver/example_e2e.dart @@ -7,7 +7,7 @@ import 'package:e2e/e2e.dart'; -import 'example_e2e_io.dart' if (dart.library.html) 'example_e2e_web.dart' as tests; +import '_example_e2e_io.dart' if (dart.library.html) '_example_e2e_web.dart' as tests; void main() { E2EWidgetsFlutterBinding.ensureInitialized(); From d9cd39ed17a1ac035501177cddf271960e427dc3 Mon Sep 17 00:00:00 2001 From: nturgut Date: Thu, 27 Feb 2020 18:50:55 -0800 Subject: [PATCH 15/17] Revert "test _ imports" This reverts commit 7cf24d6cb5833efa437a78cf5b843eb6b6368a81. --- packages/e2e/example/test_driver/example_e2e.dart | 2 +- .../test_driver/{_example_e2e_io.dart => example_e2e_io.dart} | 0 .../{_example_e2e_test.dart => example_e2e_test.dart} | 0 .../test_driver/{_example_e2e_web.dart => example_e2e_web.dart} | 0 .../{_example_e2e_web_test.dart => example_e2e_web_test.dart} | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename packages/e2e/example/test_driver/{_example_e2e_io.dart => example_e2e_io.dart} (100%) rename packages/e2e/example/test_driver/{_example_e2e_test.dart => example_e2e_test.dart} (100%) rename packages/e2e/example/test_driver/{_example_e2e_web.dart => example_e2e_web.dart} (100%) rename packages/e2e/example/test_driver/{_example_e2e_web_test.dart => example_e2e_web_test.dart} (100%) diff --git a/packages/e2e/example/test_driver/example_e2e.dart b/packages/e2e/example/test_driver/example_e2e.dart index ccc9395d87eb..791f4d6553e0 100644 --- a/packages/e2e/example/test_driver/example_e2e.dart +++ b/packages/e2e/example/test_driver/example_e2e.dart @@ -7,7 +7,7 @@ import 'package:e2e/e2e.dart'; -import '_example_e2e_io.dart' if (dart.library.html) '_example_e2e_web.dart' as tests; +import 'example_e2e_io.dart' if (dart.library.html) 'example_e2e_web.dart' as tests; void main() { E2EWidgetsFlutterBinding.ensureInitialized(); diff --git a/packages/e2e/example/test_driver/_example_e2e_io.dart b/packages/e2e/example/test_driver/example_e2e_io.dart similarity index 100% rename from packages/e2e/example/test_driver/_example_e2e_io.dart rename to packages/e2e/example/test_driver/example_e2e_io.dart diff --git a/packages/e2e/example/test_driver/_example_e2e_test.dart b/packages/e2e/example/test_driver/example_e2e_test.dart similarity index 100% rename from packages/e2e/example/test_driver/_example_e2e_test.dart rename to packages/e2e/example/test_driver/example_e2e_test.dart diff --git a/packages/e2e/example/test_driver/_example_e2e_web.dart b/packages/e2e/example/test_driver/example_e2e_web.dart similarity index 100% rename from packages/e2e/example/test_driver/_example_e2e_web.dart rename to packages/e2e/example/test_driver/example_e2e_web.dart diff --git a/packages/e2e/example/test_driver/_example_e2e_web_test.dart b/packages/e2e/example/test_driver/example_e2e_web_test.dart similarity index 100% rename from packages/e2e/example/test_driver/_example_e2e_web_test.dart rename to packages/e2e/example/test_driver/example_e2e_web_test.dart From 86abbd690cfdec3678e4958b1c5e4d79a5da6c89 Mon Sep 17 00:00:00 2001 From: nturgut Date: Fri, 28 Feb 2020 11:09:32 -0800 Subject: [PATCH 16/17] removing the web_test driver file upon reviewers suggestion --- .cirrus.yml | 2 +- .../example/test_driver/example_e2e_web_test.dart | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 packages/e2e/example/test_driver/example_e2e_web_test.dart diff --git a/.cirrus.yml b/.cirrus.yml index 6e1403448b8a..753bc90911ae 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -59,7 +59,7 @@ task: - ./chromedriver/chromedriver --port=4444 & test_script: - cd $E2E_PATH/example/ - - flutter drive -v --target=test_driver/example_e2e_web.dart -d web-server --release --browser-name=chrome + - flutter drive -v --target=test_driver/example_e2e.dart -d web-server --release --browser-name=chrome - name: build-apks+java-test+firebase-test-lab env: matrix: diff --git a/packages/e2e/example/test_driver/example_e2e_web_test.dart b/packages/e2e/example/test_driver/example_e2e_web_test.dart deleted file mode 100644 index 6147d44df2ec..000000000000 --- a/packages/e2e/example/test_driver/example_e2e_web_test.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'dart:async'; -import 'dart:io'; - -import 'package:flutter_driver/flutter_driver.dart'; - -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String result = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - exit(result == 'pass' ? 0 : 1); -} From d3ad5d2766e9f660d76d2e93914e2f50d4fe9202 Mon Sep 17 00:00:00 2001 From: nturgut Date: Fri, 28 Feb 2020 11:30:55 -0800 Subject: [PATCH 17/17] format fix --- packages/e2e/example/test_driver/example_e2e.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/e2e/example/test_driver/example_e2e.dart b/packages/e2e/example/test_driver/example_e2e.dart index 791f4d6553e0..d97702d5d7cf 100644 --- a/packages/e2e/example/test_driver/example_e2e.dart +++ b/packages/e2e/example/test_driver/example_e2e.dart @@ -7,7 +7,8 @@ import 'package:e2e/e2e.dart'; -import 'example_e2e_io.dart' if (dart.library.html) 'example_e2e_web.dart' as tests; +import 'example_e2e_io.dart' if (dart.library.html) 'example_e2e_web.dart' + as tests; void main() { E2EWidgetsFlutterBinding.ensureInitialized();