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..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,7 @@ // 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'; import 'package:video_player/video_player.dart'; @@ -29,38 +29,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); + }); }); } diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index e0afa4193dc2..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: @@ -23,3 +25,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 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 cc498f41fccb..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 47f3867d9019..000000000000 --- a/packages/video_player/video_player/example/test_driver/video_player_test.dart +++ /dev/null @@ -1,27 +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 { - final FlutterDriver driver = await FlutterDriver.connect(); - tearDownAll(() async { - await driver.close(); - }); - - //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); - 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: 'Cirrus CI currently hangs while playing videos'); -}