Skip to content

Commit 66919d6

Browse files
committed
fix(#237): remove reference to dart:html and gaurd stdout function so library works on web
1 parent 9667db0 commit 66919d6

File tree

5 files changed

+42
-25
lines changed

5 files changed

+42
-25
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## [3.0.0-rc.14] - 28/06/2022
2+
- Fix #237 - Ensure everything works on the web
3+
14
## [3.0.0-rc.13] - 27/06/2022
25
- Fix #235 - fix issue taking a screenshot on an Android device
36
- 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

lib/src/flutter/adapters/widget_tester_app_driver_adapter.dart

+21-16
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import 'dart:io' if (dart.library.html) 'dart:html';
1+
import 'dart:io' show Platform;
2+
import 'dart:ui' as ui show ImageByteFormat;
23

34
import 'package:flutter/foundation.dart';
45
import 'package:flutter/material.dart';
56
import 'package:flutter/rendering.dart';
67
import 'package:flutter_test/flutter_test.dart';
78
import 'package:integration_test/integration_test.dart';
8-
import 'dart:ui' as ui show ImageByteFormat;
99

1010
import 'app_driver_adapter.dart';
1111

@@ -68,7 +68,7 @@ class WidgetTesterAppDriverAdapter
6868
}
6969
}
7070

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

9090
@override
9191
Future<List<int>> screenshot({String? screenshotName}) async {
92-
if (!kIsWeb && Platform.isAndroid) {
93-
return await screenshotOnAndroid(screenshotName: screenshotName);
94-
// try {
95-
// // TODO: See https://github.com/flutter/flutter/issues/92381
96-
// // we need to call `revertFlutterImage` once it has been implemented
97-
// await binding.convertFlutterSurfaceToImage();
98-
// await binding.pump();
99-
// // ignore: no_leading_underscores_for_local_identifiers
100-
// } catch (_, __) {}
92+
final name =
93+
screenshotName ?? 'screenshot_${DateTime.now().millisecondsSinceEpoch}';
94+
if (kIsWeb) {
95+
return binding.takeScreenshot(name);
96+
} else {
97+
if (Platform.isAndroid) {
98+
// try {
99+
// // TODO: See https://github.com/flutter/flutter/issues/92381
100+
// // we need to call `revertFlutterImage` once it has been implemented
101+
// await binding.convertFlutterSurfaceToImage();
102+
// await binding.pump();
103+
// // ignore: no_leading_underscores_for_local_identifiers
104+
// } catch (_, __) {}
105+
106+
return await screenshotOnAndroid();
107+
} else {
108+
return binding.takeScreenshot(name);
109+
}
101110
}
102-
103-
return binding.takeScreenshot(
104-
screenshotName ?? 'screenshot_${DateTime.now().millisecondsSinceEpoch}',
105-
);
106111
}
107112

108113
@override

lib/src/flutter/hooks/app_runner_hook.dart

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import 'dart:io' if (dart.library.html) 'dart:html';
1+
import 'dart:io';
2+
3+
import 'package:flutter/foundation.dart';
24
import 'package:flutter_gherkin/src/flutter/configuration/flutter_driver_test_configuration.dart';
35
import 'package:flutter_gherkin/src/flutter/runners/flutter_run_process_handler.dart';
46
import 'package:flutter_gherkin/src/flutter/world/flutter_driver_world.dart';
@@ -62,7 +64,7 @@ class FlutterAppRunnerHook extends Hook {
6264

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

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

9295
Future<void> _terminateApp() async {
9396
if (_flutterRunProcessHandler != null) {
94-
stdout.writeln('Terminating Flutter app under test');
97+
_log('Terminating Flutter app under test');
9598
await _flutterRunProcessHandler!.terminate();
9699
_flutterRunProcessHandler = null;
97100
}
98101
}
99102

100103
Future<void> _restartApp() async {
101104
if (_flutterRunProcessHandler != null) {
102-
stdout.writeln('Restarting Flutter app under test');
105+
_log('Restarting Flutter app under test');
103106
await _flutterRunProcessHandler!.restart();
104107
}
105108
}
106109

107110
FlutterDriverTestConfiguration _castConfig(TestConfiguration config) =>
108111
config as FlutterDriverTestConfiguration;
112+
113+
void _log(String text) {
114+
if (!kIsWeb) {
115+
stdout.writeln(text);
116+
}
117+
}
109118
}

pubspec.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ packages:
133133
name: dart_code_metrics
134134
url: "https://pub.dartlang.org"
135135
source: hosted
136-
version: "4.15.2"
136+
version: "4.16.0"
137137
dart_style:
138138
dependency: transitive
139139
description:

pubspec.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_gherkin
22
description: A Gherkin / Cucumber parser and test runner for Dart and Flutter
3-
version: 3.0.0-rc.13
3+
version: 3.0.0-rc.14
44
homepage: https://github.com/jonsamwell/flutter_gherkin
55

66
environment:
@@ -28,6 +28,6 @@ dev_dependencies:
2828
pedantic: ^1.11.1
2929
build_config: ^1.0.0
3030
flutter_lints: ^2.0.1
31-
dart_code_metrics: ^4.15.2
31+
dart_code_metrics: ^4.16.0
3232

3333
flutter:

0 commit comments

Comments
 (0)