From b379a92ad079354e57d753ec684f7229bf7a6d7b Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 28 Oct 2020 10:56:30 -0700 Subject: [PATCH 01/13] re-enable tests --- .../video_player/example/lib/main.dart | 25 +++++++++++++------ .../test_driver/video_player_test.dart | 2 +- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/video_player/video_player/example/lib/main.dart b/packages/video_player/video_player/example/lib/main.dart index a99b9da6bd0c..ea4495142dcb 100644 --- a/packages/video_player/video_player/example/lib/main.dart +++ b/packages/video_player/video_player/example/lib/main.dart @@ -9,6 +9,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:video_player/video_player.dart'; void main() { @@ -155,14 +156,24 @@ class _ButterFlyAssetVideoState extends State<_ButterFlyAssetVideo> { @override void initState() { super.initState(); - _controller = VideoPlayerController.asset('assets/Butterfly-209.mp4'); + _playAsset(); + } - _controller.addListener(() { - setState(() {}); - }); - _controller.setLooping(true); - _controller.initialize().then((_) => setState(() {})); - _controller.play(); + void _playAsset() async { + try { + print('_playAsset'); + _controller = VideoPlayerController.asset('assets/Butterfly-209.mp4'); + + _controller.addListener(() { + setState(() {}); + }); + await _controller.setLooping(true); + await _controller.initialize().then((_) => setState(() {})); + await _controller.play(); + } on PlatformException catch (e) { + print('_playAsset error $e'); + assert(false, 'exception happened when playing assets $e'); + } } @override diff --git a/packages/video_player/video_player/example/test_driver/video_player_test.dart b/packages/video_player/video_player/example/test_driver/video_player_test.dart index 47f3867d9019..71aed486b518 100644 --- a/packages/video_player/video_player/example/test_driver/video_player_test.dart +++ b/packages/video_player/video_player/example/test_driver/video_player_test.dart @@ -23,5 +23,5 @@ Future main() async { await driver.waitUntilNoTransientCallbacks(); final Health health = await driver.checkHealth(); expect(health.status, HealthStatus.ok); - }, skip: 'Cirrus CI currently hangs while playing videos'); + }); } From 4cf12ed34e07f7441273c344b35365704c9ef133 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 28 Oct 2020 13:09:37 -0700 Subject: [PATCH 02/13] run drive on android tests --- .cirrus.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.cirrus.yml b/.cirrus.yml index 8c632a076522..13403ed84048 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -88,6 +88,7 @@ task: - export CIRRUS_CHANGE_MESSAGE="" - export CIRRUS_COMMIT_MESSAGE="" - ./script/incremental_build.sh build-examples --apk + - ./script/incremental_build.sh drive-examples - ./script/incremental_build.sh java-test # must come after apk build - if [[ $GCLOUD_FIREBASE_TESTLAB_KEY == ENCRYPTED* ]]; then - echo "This user does not have permission to run Firebase Test Lab tests." From db790f2ba82bac1a0365026345d88957a6aa744e Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 28 Oct 2020 13:49:12 -0700 Subject: [PATCH 03/13] move drive after firebase test lab --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 13403ed84048..b3591b11f517 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -88,13 +88,13 @@ task: - export CIRRUS_CHANGE_MESSAGE="" - export CIRRUS_COMMIT_MESSAGE="" - ./script/incremental_build.sh build-examples --apk - - ./script/incremental_build.sh drive-examples - ./script/incremental_build.sh java-test # must come after apk build - if [[ $GCLOUD_FIREBASE_TESTLAB_KEY == ENCRYPTED* ]]; then - echo "This user does not have permission to run Firebase Test Lab tests." - else - echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json - ./script/incremental_build.sh firebase-test-lab --device model=flame,version=29 --device model=starqlteue,version=26 + ./script/incremental_build.sh drive-examples --apk - fi - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt` - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt` From 7c4c0af2a1606c9887bcf0ec24914f4eb33dc30a Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 28 Oct 2020 14:00:09 -0700 Subject: [PATCH 04/13] fiox --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index b3591b11f517..c4f7fa4b3ddd 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -94,7 +94,7 @@ task: - else - echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json - ./script/incremental_build.sh firebase-test-lab --device model=flame,version=29 --device model=starqlteue,version=26 - ./script/incremental_build.sh drive-examples --apk + - ./script/incremental_build.sh drive-examples --apk - fi - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt` - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt` From 7235535c7f994cb2779c7eb3a77af29bc2cb4f05 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 28 Oct 2020 14:01:44 -0700 Subject: [PATCH 05/13] revert changes to main --- .../video_player/example/lib/main.dart | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/packages/video_player/video_player/example/lib/main.dart b/packages/video_player/video_player/example/lib/main.dart index ea4495142dcb..a99b9da6bd0c 100644 --- a/packages/video_player/video_player/example/lib/main.dart +++ b/packages/video_player/video_player/example/lib/main.dart @@ -9,7 +9,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:video_player/video_player.dart'; void main() { @@ -156,24 +155,14 @@ class _ButterFlyAssetVideoState extends State<_ButterFlyAssetVideo> { @override void initState() { super.initState(); - _playAsset(); - } + _controller = VideoPlayerController.asset('assets/Butterfly-209.mp4'); - void _playAsset() async { - try { - print('_playAsset'); - _controller = VideoPlayerController.asset('assets/Butterfly-209.mp4'); - - _controller.addListener(() { - setState(() {}); - }); - await _controller.setLooping(true); - await _controller.initialize().then((_) => setState(() {})); - await _controller.play(); - } on PlatformException catch (e) { - print('_playAsset error $e'); - assert(false, 'exception happened when playing assets $e'); - } + _controller.addListener(() { + setState(() {}); + }); + _controller.setLooping(true); + _controller.initialize().then((_) => setState(() {})); + _controller.play(); } @override From 06da96d61278d49d9bc9c303b2793258bb40c4db Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 28 Oct 2020 14:02:30 -0700 Subject: [PATCH 06/13] remove todo --- .../video_player/example/test_driver/video_player_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/video_player/video_player/example/test_driver/video_player_test.dart b/packages/video_player/video_player/example/test_driver/video_player_test.dart index 71aed486b518..e17b0f792852 100644 --- a/packages/video_player/video_player/example/test_driver/video_player_test.dart +++ b/packages/video_player/video_player/example/test_driver/video_player_test.dart @@ -13,7 +13,6 @@ Future main() async { }); //TODO(cyanglaz): Use TabBar tabs to navigate between pages after https://github.com/flutter/flutter/issues/16991 is fixed. - //TODO(cyanglaz): Un-skip the test after https://github.com/flutter/flutter/issues/43012 is fixed test('Push a page contains video and pop back, do not crash.', () async { final SerializableFinder pushTab = find.byValueKey('push_tab'); await driver.waitFor(pushTab); From 3ac837fc1f95ab38b7e97b6f9fa33720ccdb3ec4 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 09:06:22 -0700 Subject: [PATCH 07/13] fix --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index c4f7fa4b3ddd..d0efe52f83be 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -94,7 +94,7 @@ task: - else - echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json - ./script/incremental_build.sh firebase-test-lab --device model=flame,version=29 --device model=starqlteue,version=26 - - ./script/incremental_build.sh drive-examples --apk + - ./script/incremental_build.sh drive-examples - fi - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt` - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt` From 72aa428ffa92ba78032218e6f60069c7d6bf330d Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 09:29:13 -0700 Subject: [PATCH 08/13] revert cirrus change --- .cirrus.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index d0efe52f83be..8c632a076522 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -94,7 +94,6 @@ task: - else - echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json - ./script/incremental_build.sh firebase-test-lab --device model=flame,version=29 --device model=starqlteue,version=26 - - ./script/incremental_build.sh drive-examples - fi - export CIRRUS_CHANGE_MESSAGE=`cat /tmp/cirrus_change_message.txt` - export CIRRUS_COMMIT_MESSAGE=`cat /tmp/cirrus_commit_message.txt` From 4e32994ed6943e1ec66555697738dd80a7db7e27 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 15:59:14 -0700 Subject: [PATCH 09/13] add sdk constraint to the example app --- packages/video_player/video_player/example/pubspec.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index e0afa4193dc2..3f73e68207e7 100644 --- a/packages/video_player/video_player/example/pubspec.yaml +++ b/packages/video_player/video_player/example/pubspec.yaml @@ -23,3 +23,7 @@ flutter: - assets/flutter-mark-square-64.png - assets/Butterfly-209.mp4 - assets/bumble_bee_captions.srt + +environment: + sdk: ">=2.8.0 <3.0.0" + flutter: ">=1.12.13+hotfix.5 <2.0.0" \ No newline at end of file From 39e5df12d3a1ee5296d13ac468b7cf6de601a142 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 18:49:41 -0700 Subject: [PATCH 10/13] test ci --- .../video_player/example/pubspec.yaml | 4 +- .../example/test_driver/video_player.dart | 18 +++---- .../test_driver/video_player_test.dart | 53 +++++++++++-------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index 3f73e68207e7..5fc5743c538d 100644 --- a/packages/video_player/video_player/example/pubspec.yaml +++ b/packages/video_player/video_player/example/pubspec.yaml @@ -1,5 +1,7 @@ name: video_player_example description: Demonstrates how to use the video_player plugin. +version: 0.0.1 +publish_to: none dependencies: flutter: @@ -14,7 +16,7 @@ dev_dependencies: sdk: flutter integration_test: path: ../../../integration_test - test: any + # test: any pedantic: ^1.8.0 flutter: diff --git a/packages/video_player/video_player/example/test_driver/video_player.dart b/packages/video_player/video_player/example/test_driver/video_player.dart index cc498f41fccb..2fc23fc600ee 100644 --- a/packages/video_player/video_player/example/test_driver/video_player.dart +++ b/packages/video_player/video_player/example/test_driver/video_player.dart @@ -1,11 +1,11 @@ -// Copyright 2019, the Chromium project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. +// // Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// // for details. 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_driver/driver_extension.dart'; -import 'package:video_player_example/main.dart' as app; +// import 'package:flutter_driver/driver_extension.dart'; +// import 'package:video_player_example/main.dart' as app; -void main() { - enableFlutterDriverExtension(); - app.main(); -} +// void main() { +// enableFlutterDriverExtension(); +// app.main(); +// } diff --git a/packages/video_player/video_player/example/test_driver/video_player_test.dart b/packages/video_player/video_player/example/test_driver/video_player_test.dart index e17b0f792852..6e7d73a6d37c 100644 --- a/packages/video_player/video_player/example/test_driver/video_player_test.dart +++ b/packages/video_player/video_player/example/test_driver/video_player_test.dart @@ -1,26 +1,33 @@ -// Copyright 2019, the Chromium project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. +// // Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// // for details. All rights reserved. Use of this source code is governed by a +// // BSD-style license that can be found in the LICENSE file. -import 'dart:async'; -import 'package:flutter_driver/flutter_driver.dart'; -import 'package:test/test.dart'; +// import 'dart:async'; +// import 'package:flutter_driver/flutter_driver.dart'; +// import 'package:test/test.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - tearDownAll(() async { - await driver.close(); - }); +// Future main() async { +// FlutterDriver driver; - //TODO(cyanglaz): Use TabBar tabs to navigate between pages after https://github.com/flutter/flutter/issues/16991 is fixed. - test('Push a page contains video and pop back, do not crash.', () async { - final SerializableFinder pushTab = find.byValueKey('push_tab'); - await driver.waitFor(pushTab); - await driver.tap(pushTab); - await driver.waitForAbsent(pushTab); - await driver.waitFor(find.byValueKey('home_page')); - await driver.waitUntilNoTransientCallbacks(); - final Health health = await driver.checkHealth(); - expect(health.status, HealthStatus.ok); - }); -} +// setUpAll(() async { +// driver = await FlutterDriver.connect(); +// }); + +// tearDownAll(() async { +// if (driver != null) { +// driver.close(); +// } +// }); + +// //TODO(cyanglaz): Use TabBar tabs to navigate between pages after https://github.com/flutter/flutter/issues/16991 is fixed. +// test('Push a page contains video and pop back, do not crash.', () async { +// final SerializableFinder pushTab = find.byValueKey('push_tab'); +// await driver.waitFor(pushTab); +// await driver.tap(pushTab); +// await driver.waitForAbsent(pushTab); +// await driver.waitFor(find.byValueKey('home_page')); +// await driver.waitUntilNoTransientCallbacks(); +// final Health health = await driver.checkHealth(); +// expect(health.status, HealthStatus.ok); +// }, skip: true); +// } From ab3bd68fdac87cf71de851eca580eb98f022612c Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 18:59:24 -0700 Subject: [PATCH 11/13] re-enable integration tests --- .../integration_test/video_player_test.dart | 94 ++++++++++++++----- 1 file changed, 69 insertions(+), 25 deletions(-) diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index 0953c8feb6c0..108b2c4ae1c5 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:io'; +import 'package:flutter/material.dart'; import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:video_player/video_player.dart'; @@ -29,38 +30,81 @@ void main() { const Duration(seconds: 7, milliseconds: 540)); }); - testWidgets('can be played', (WidgetTester tester) async { - await _controller.initialize(); + testWidgets( + 'can be played', + (WidgetTester tester) async { + await _controller.initialize(); - await _controller.play(); - await tester.pumpAndSettle(_playDuration); + await _controller.play(); + await tester.pumpAndSettle(_playDuration); - expect(_controller.value.isPlaying, true); - expect(_controller.value.position, - (Duration position) => position > const Duration(seconds: 0)); - }, skip: Platform.isIOS); + expect(_controller.value.isPlaying, true); + expect(_controller.value.position, + (Duration position) => position > const Duration(seconds: 0)); + }, + ); - testWidgets('can seek', (WidgetTester tester) async { - await _controller.initialize(); + testWidgets( + 'can seek', + (WidgetTester tester) async { + await _controller.initialize(); - await _controller.seekTo(const Duration(seconds: 3)); + await _controller.seekTo(const Duration(seconds: 3)); - expect(_controller.value.position, const Duration(seconds: 3)); - }, skip: Platform.isIOS); + expect(_controller.value.position, const Duration(seconds: 3)); + }, + ); - testWidgets('can be paused', (WidgetTester tester) async { - await _controller.initialize(); + testWidgets( + 'can be paused', + (WidgetTester tester) async { + await _controller.initialize(); - // Play for a second, then pause, and then wait a second. - await _controller.play(); - await tester.pumpAndSettle(_playDuration); - await _controller.pause(); - final Duration pausedPosition = _controller.value.position; - await tester.pumpAndSettle(_playDuration); + // Play for a second, then pause, and then wait a second. + await _controller.play(); + await tester.pumpAndSettle(_playDuration); + await _controller.pause(); + final Duration pausedPosition = _controller.value.position; + await tester.pumpAndSettle(_playDuration); - // Verify that we stopped playing after the pause. - expect(_controller.value.isPlaying, false); - expect(_controller.value.position, pausedPosition); - }, skip: Platform.isIOS); + // Verify that we stopped playing after the pause. + expect(_controller.value.isPlaying, false); + expect(_controller.value.position, pausedPosition); + }, + ); + + testWidgets('test video player view with local asset', + (WidgetTester tester) async { + Future started() async { + await _controller.initialize(); + await _controller.play(); + return true; + } + + await tester.pumpWidget(Material( + elevation: 0, + child: Directionality( + textDirection: TextDirection.ltr, + child: Center( + child: FutureBuilder( + future: started(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.data == true) { + return AspectRatio( + aspectRatio: _controller.value.aspectRatio, + child: VideoPlayer(_controller), + ); + } else { + return const Text('waiting for video to load'); + } + }, + ), + ), + ), + )); + + await tester.pumpAndSettle(); + expect(_controller.value.isPlaying, true); + }); }); } From 80c775841558be6a1b80cfd14b0d8a17223b5e8c Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 19:29:49 -0700 Subject: [PATCH 12/13] remove driver test files --- .../example/test_driver/video_player.dart | 11 ------- .../test_driver/video_player_test.dart | 33 ------------------- 2 files changed, 44 deletions(-) delete mode 100644 packages/video_player/video_player/example/test_driver/video_player.dart delete mode 100644 packages/video_player/video_player/example/test_driver/video_player_test.dart diff --git a/packages/video_player/video_player/example/test_driver/video_player.dart b/packages/video_player/video_player/example/test_driver/video_player.dart deleted file mode 100644 index 2fc23fc600ee..000000000000 --- a/packages/video_player/video_player/example/test_driver/video_player.dart +++ /dev/null @@ -1,11 +0,0 @@ -// // Copyright 2019, the Chromium project authors. Please see the AUTHORS file -// // for details. 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_driver/driver_extension.dart'; -// import 'package:video_player_example/main.dart' as app; - -// void main() { -// enableFlutterDriverExtension(); -// app.main(); -// } diff --git a/packages/video_player/video_player/example/test_driver/video_player_test.dart b/packages/video_player/video_player/example/test_driver/video_player_test.dart deleted file mode 100644 index 6e7d73a6d37c..000000000000 --- a/packages/video_player/video_player/example/test_driver/video_player_test.dart +++ /dev/null @@ -1,33 +0,0 @@ -// // Copyright 2019, the Chromium project authors. Please see the AUTHORS file -// // for details. All rights reserved. Use of this source code is governed by a -// // BSD-style license that can be found in the LICENSE file. - -// import 'dart:async'; -// import 'package:flutter_driver/flutter_driver.dart'; -// import 'package:test/test.dart'; - -// Future main() async { -// FlutterDriver driver; - -// setUpAll(() async { -// driver = await FlutterDriver.connect(); -// }); - -// tearDownAll(() async { -// if (driver != null) { -// driver.close(); -// } -// }); - -// //TODO(cyanglaz): Use TabBar tabs to navigate between pages after https://github.com/flutter/flutter/issues/16991 is fixed. -// test('Push a page contains video and pop back, do not crash.', () async { -// final SerializableFinder pushTab = find.byValueKey('push_tab'); -// await driver.waitFor(pushTab); -// await driver.tap(pushTab); -// await driver.waitForAbsent(pushTab); -// await driver.waitFor(find.byValueKey('home_page')); -// await driver.waitUntilNoTransientCallbacks(); -// final Health health = await driver.checkHealth(); -// expect(health.status, HealthStatus.ok); -// }, skip: true); -// } From 66588380869000671e83013b720b5882540148d7 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 30 Oct 2020 19:55:29 -0700 Subject: [PATCH 13/13] remove unused imports --- .../video_player/example/integration_test/video_player_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index 108b2c4ae1c5..639cca9b8631 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -2,7 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; import 'package:flutter/material.dart'; import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart';