blob: 4963854dea72991a25dd5a6594f0ccd6687b8df1 [file] [log] [blame]
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);
}