diff --git a/lib/src/flutter/adapters/widget_tester_app_driver_adapter.dart b/lib/src/flutter/adapters/widget_tester_app_driver_adapter.dart index 90978a9..117ef36 100644 --- a/lib/src/flutter/adapters/widget_tester_app_driver_adapter.dart +++ b/lib/src/flutter/adapters/widget_tester_app_driver_adapter.dart @@ -5,12 +5,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:image/image.dart'; import 'package:integration_test/integration_test.dart'; import 'app_driver_adapter.dart'; -class WidgetTesterAppDriverAdapter - extends AppDriverAdapter { +class WidgetTesterAppDriverAdapter extends AppDriverAdapter { IntegrationTestWidgetsFlutterBinding binding; bool waitImplicitlyAfterAction; @@ -88,8 +88,16 @@ class WidgetTesterAppDriverAdapter return await layer .toImage(renderObject.semanticBounds) - .then((value) => value.toByteData(format: ui.ImageByteFormat.png)) - .then((value) => value!.buffer.asUint8List()); + .then((value) => value.toByteData( + format: ui.ImageByteFormat.png, + )) + .then((value) => value!.buffer.asUint8List()) + .then((value) { + final image = decodePng(value); + final resized = copyResize(image!, width: 120); + final resizedByteData = encodePng(image); + return resizedByteData!.buffer.asUint8List(); + }); } throw Exception('Unable to take screenshot on Android device'); @@ -97,8 +105,7 @@ class WidgetTesterAppDriverAdapter @override Future> screenshot({String? screenshotName}) async { - final name = - screenshotName ?? 'screenshot_${DateTime.now().millisecondsSinceEpoch}'; + final name = screenshotName ?? 'screenshot_${DateTime.now().millisecondsSinceEpoch}'; if (kIsWeb || Platform.isAndroid) { // try { // // TODO: See https://github.com/flutter/flutter/issues/92381 @@ -146,8 +153,7 @@ class WidgetTesterAppDriverAdapter return instance.controller?.text; } - throw Exception( - 'Unable to get text from unknown type `${instance.runtimeType}`'); + throw Exception('Unable to get text from unknown type `${instance.runtimeType}`'); } @override diff --git a/pubspec.lock b/pubspec.lock index 07313db..d527975 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -196,6 +196,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.15.0" + image: + dependency: "direct main" + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.13" integration_test: dependency: "direct main" description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 9e3ff64..521990e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: source_gen: ^1.1.1 build: ^2.1.1 glob: ^2.0.2 + image: ^4.0.13 dev_dependencies: meta: '>=1.7.0 < 2.0.0'