| import 'dart:async'; |
| import 'dart:io'; |
| |
| import 'package:flutter_driver/flutter_driver.dart'; |
| |
| const String _examplePackage = 'io.flutter.plugins.cameraexample'; |
| |
| Future<void> main() async { |
| if (!(Platform.isLinux || Platform.isMacOS)) { |
| print('This test must be run on a POSIX host. Skipping...'); |
| exit(0); |
| } |
| final bool adbExists = |
| Process.runSync('which', <String>['adb']).exitCode == 0; |
| if (!adbExists) { |
| print('This test needs ADB to exist on the \$PATH. Skipping...'); |
| exit(0); |
| } |
| print('Granting camera permissions...'); |
| Process.runSync('adb', <String>[ |
| 'shell', |
| 'pm', |
| 'grant', |
| _examplePackage, |
| 'android.permission.CAMERA' |
| ]); |
| Process.runSync('adb', <String>[ |
| 'shell', |
| 'pm', |
| 'grant', |
| _examplePackage, |
| 'android.permission.RECORD_AUDIO' |
| ]); |
| print('Starting test.'); |
| final FlutterDriver driver = await FlutterDriver.connect(); |
| final String result = |
| await driver.requestData(null, timeout: const Duration(minutes: 1)); |
| await driver.close(); |
| print('Test finished. Revoking camera permissions...'); |
| Process.runSync('adb', <String>[ |
| 'shell', |
| 'pm', |
| 'revoke', |
| _examplePackage, |
| 'android.permission.CAMERA' |
| ]); |
| Process.runSync('adb', <String>[ |
| 'shell', |
| 'pm', |
| 'revoke', |
| _examplePackage, |
| 'android.permission.RECORD_AUDIO' |
| ]); |
| exit(result == 'pass' ? 0 : 1); |
| } |