Skip to content

Commit

Permalink
fix(#237): remove reference to dart:html and gaurd stdout function so…
Browse files Browse the repository at this point in the history
… library works on web
  • Loading branch information
jonsamwell committed Jun 27, 2022
1 parent 9667db0 commit 66919d6
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 25 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## [3.0.0-rc.14] - 28/06/2022
- Fix #237 - Ensure everything works on the web

## [3.0.0-rc.13] - 27/06/2022
- Fix #235 - fix issue taking a screenshot on an Android device
- Resolved #170: Added example code to ensure json report is save to disk even when the test run fails. Also added script to generate a HTML report from a JSON report
Expand Down
37 changes: 21 additions & 16 deletions lib/src/flutter/adapters/widget_tester_app_driver_adapter.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'dart:io' if (dart.library.html) 'dart:html';
import 'dart:io' show Platform;
import 'dart:ui' as ui show ImageByteFormat;

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'dart:ui' as ui show ImageByteFormat;

import 'app_driver_adapter.dart';

Expand Down Expand Up @@ -68,7 +68,7 @@ class WidgetTesterAppDriverAdapter
}
}

Future<List<int>> screenshotOnAndroid({String? screenshotName}) {
Future<List<int>> screenshotOnAndroid() {
RenderObject? renderObject = binding.renderViewElement?.renderObject;
if (renderObject != null) {
while (!renderObject!.isRepaintBoundary) {
Expand All @@ -89,20 +89,25 @@ class WidgetTesterAppDriverAdapter

@override
Future<List<int>> screenshot({String? screenshotName}) async {
if (!kIsWeb && Platform.isAndroid) {
return await screenshotOnAndroid(screenshotName: screenshotName);
// try {
// // TODO: See https://github.com/flutter/flutter/issues/92381
// // we need to call `revertFlutterImage` once it has been implemented
// await binding.convertFlutterSurfaceToImage();
// await binding.pump();
// // ignore: no_leading_underscores_for_local_identifiers
// } catch (_, __) {}
final name =
screenshotName ?? 'screenshot_${DateTime.now().millisecondsSinceEpoch}';
if (kIsWeb) {
return binding.takeScreenshot(name);
} else {
if (Platform.isAndroid) {
// try {
// // TODO: See https://github.com/flutter/flutter/issues/92381
// // we need to call `revertFlutterImage` once it has been implemented
// await binding.convertFlutterSurfaceToImage();
// await binding.pump();
// // ignore: no_leading_underscores_for_local_identifiers
// } catch (_, __) {}

return await screenshotOnAndroid();
} else {
return binding.takeScreenshot(name);
}
}

return binding.takeScreenshot(
screenshotName ?? 'screenshot_${DateTime.now().millisecondsSinceEpoch}',
);
}

@override
Expand Down
21 changes: 15 additions & 6 deletions lib/src/flutter/hooks/app_runner_hook.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import 'dart:io' if (dart.library.html) 'dart:html';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter_gherkin/src/flutter/configuration/flutter_driver_test_configuration.dart';
import 'package:flutter_gherkin/src/flutter/runners/flutter_run_process_handler.dart';
import 'package:flutter_gherkin/src/flutter/world/flutter_driver_world.dart';
Expand Down Expand Up @@ -62,7 +64,7 @@ class FlutterAppRunnerHook extends Hook {

Future<void> _runApp(FlutterDriverTestConfiguration config) async {
if (config.runningAppProtocolEndpointUri?.isNotEmpty ?? false) {
stdout.writeln(
_log(
"Connecting to running Flutter app under test at '${config.runningAppProtocolEndpointUri}', "
'this might take a few moments',
);
Expand All @@ -80,8 +82,9 @@ class FlutterAppRunnerHook extends Hook {
..setBuildMode(config.buildMode)
..setDeviceTargetId(config.targetDeviceId);

stdout.writeln(
"Starting Flutter app under test '${config.targetAppPath}', this might take a few moments");
_log(
"Starting Flutter app under test '${config.targetAppPath}', this might take a few moments",
);
await _flutterRunProcessHandler!.run();
final observatoryUri = await _flutterRunProcessHandler!
.waitForObservatoryDebuggerUri(config.flutterBuildTimeout);
Expand All @@ -91,19 +94,25 @@ class FlutterAppRunnerHook extends Hook {

Future<void> _terminateApp() async {
if (_flutterRunProcessHandler != null) {
stdout.writeln('Terminating Flutter app under test');
_log('Terminating Flutter app under test');
await _flutterRunProcessHandler!.terminate();
_flutterRunProcessHandler = null;
}
}

Future<void> _restartApp() async {
if (_flutterRunProcessHandler != null) {
stdout.writeln('Restarting Flutter app under test');
_log('Restarting Flutter app under test');
await _flutterRunProcessHandler!.restart();
}
}

FlutterDriverTestConfiguration _castConfig(TestConfiguration config) =>
config as FlutterDriverTestConfiguration;

void _log(String text) {
if (!kIsWeb) {
stdout.writeln(text);
}
}
}
2 changes: 1 addition & 1 deletion pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ packages:
name: dart_code_metrics
url: "https://pub.dartlang.org"
source: hosted
version: "4.15.2"
version: "4.16.0"
dart_style:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: flutter_gherkin
description: A Gherkin / Cucumber parser and test runner for Dart and Flutter
version: 3.0.0-rc.13
version: 3.0.0-rc.14
homepage: https://github.com/jonsamwell/flutter_gherkin

environment:
Expand Down Expand Up @@ -28,6 +28,6 @@ dev_dependencies:
pedantic: ^1.11.1
build_config: ^1.0.0
flutter_lints: ^2.0.1
dart_code_metrics: ^4.15.2
dart_code_metrics: ^4.16.0

flutter:

0 comments on commit 66919d6

Please sign in to comment.