diff --git a/test_driver/integration_driver.dart b/test_driver/integration_driver.dart new file mode 100644 index 0000000..3d79aac --- /dev/null +++ b/test_driver/integration_driver.dart @@ -0,0 +1,8 @@ +import 'package:integration_test/integration_test_driver_extended.dart'; + +import 'utils/grant_camera_permission.dart'; + +Future main() async { + await grantCameraPermission(); + await integrationDriver(); +} diff --git a/test_driver/screenshot_driver.dart b/test_driver/screenshot_driver.dart index 3b11ee3..096b52f 100644 --- a/test_driver/screenshot_driver.dart +++ b/test_driver/screenshot_driver.dart @@ -1,42 +1,15 @@ -import 'dart:developer'; import 'dart:io'; import 'package:integration_test/integration_test_driver_extended.dart'; +import 'utils/grant_camera_permission.dart'; + Future main() async { - try { - final bool adbExists = Process.runSync('which', ['adb']).exitCode == 0; - if (!adbExists) { - log(r'This test needs ADB to exist on the $PATH. Skipping...'); - exit(0); - } - final deviceId = await Process.run('adb', ["-s", 'shell', 'devices']).then((value) { - if (value.stdout is String) { - return RegExp(r"(?:List of devices attached\n)([A-Z0-9]*)(?:\sdevice\n)") - .firstMatch(value.stdout as String)! - .group(1); - } - }); - if (deviceId == null) { - log('This test needs at least one device connected'); - exit(0); - } - await Process.run('adb', [ - "-s", - deviceId, // https://github.com/flutter/flutter/issues/86295#issuecomment-1192766368 - 'shell', - 'pm', - 'grant', - 'com.vodemn.lightmeter.dev', - 'android.permission.CAMERA' - ]); - await integrationDriver( - onScreenshot: (name, bytes, [args]) async { - final File image = await File('screenshots/$name.png').create(recursive: true); - image.writeAsBytesSync(bytes); - return true; - }, - ); - } catch (e) { - log('Error occured: $e'); - } + await grantCameraPermission(); + await integrationDriver( + onScreenshot: (name, bytes, [args]) async { + final File image = await File('screenshots/TEST_$name.png').create(recursive: true); + image.writeAsBytesSync(bytes); + return true; + }, + ); } diff --git a/test_driver/utils/grant_camera_permission.dart b/test_driver/utils/grant_camera_permission.dart new file mode 100644 index 0000000..c6f56d7 --- /dev/null +++ b/test_driver/utils/grant_camera_permission.dart @@ -0,0 +1,34 @@ +import 'dart:developer'; +import 'dart:io'; + +Future grantCameraPermission() async { + try { + final bool adbExists = Process.runSync('which', ['adb']).exitCode == 0; + if (!adbExists) { + log(r'This test needs ADB to exist on the $PATH. Skipping...'); + exit(0); + } + final deviceId = await Process.run('adb', ["-s", 'shell', 'devices']).then((value) { + if (value.stdout is String) { + return RegExp(r"(?:List of devices attached\n)([A-Z0-9]*)(?:\sdevice\n)") + .firstMatch(value.stdout as String)! + .group(1); + } + }); + if (deviceId == null) { + log('This test needs at least one device connected'); + exit(0); + } + await Process.run('adb', [ + "-s", + deviceId, // https://github.com/flutter/flutter/issues/86295#issuecomment-1192766368 + 'shell', + 'pm', + 'grant', + 'com.vodemn.lightmeter.dev', + 'android.permission.CAMERA' + ]); + } catch (e) { + log('Error occured: $e'); + } +}