Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

[webview_flutter] Reactivate skipped integration tests on Android #4710

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ import 'package:webview_flutter/webview_flutter.dart';
Future<void> main() async {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

const bool _skipDueToIssue86757 = true;

final HttpServer server = await HttpServer.bind(InternetAddress.anyIPv4, 0);
server.forEach((HttpRequest request) {
if (request.uri.path == '/hello.txt') {
Expand All @@ -45,7 +43,6 @@ Future<void> main() async {
final String secondaryUrl = '$prefixUrl/secondary.txt';
final String headersUrl = '$prefixUrl/headers';

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('initialUrl', (WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
Expand All @@ -64,9 +61,8 @@ Future<void> main() async {
final WebViewController controller = await controllerCompleter.future;
final String? currentUrl = await controller.currentUrl();
expect(currentUrl, primaryUrl);
}, skip: _skipDueToIssue86757);
});

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('loadUrl', (WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
Expand All @@ -86,7 +82,7 @@ Future<void> main() async {
await controller.loadUrl(secondaryUrl);
final String? currentUrl = await controller.currentUrl();
expect(currentUrl, secondaryUrl);
}, skip: _skipDueToIssue86757);
});

testWidgets('evaluateJavascript', (WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Expand All @@ -110,7 +106,6 @@ Future<void> main() async {
expect(result, equals('2'));
});

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('loadUrl with headers', (WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
Expand Down Expand Up @@ -149,9 +144,8 @@ Future<void> main() async {
final String content = await controller
.runJavascriptReturningResult('document.documentElement.innerText');
expect(content.contains('flutter_test_header'), isTrue);
}, skip: Platform.isAndroid && _skipDueToIssue86757);
});

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('JavascriptChannel', (WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
Expand Down Expand Up @@ -194,7 +188,7 @@ Future<void> main() async {
expect(messagesReceived, isEmpty);
await controller.runJavascript('Echo.postMessage("hello");');
expect(messagesReceived, equals(<String>['hello']));
}, skip: Platform.isAndroid && _skipDueToIssue86757);
});

testWidgets('resize webview', (WidgetTester tester) async {
final Completer<void> initialResizeCompleter = Completer<void>();
Expand Down Expand Up @@ -263,7 +257,6 @@ Future<void> main() async {
expect(customUserAgent2, 'Custom_User_Agent2');
});

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('use default platform userAgent after webView is rebuilt',
(WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Expand Down Expand Up @@ -313,7 +306,7 @@ Future<void> main() async {

final String customUserAgent2 = await _getUserAgent(controller);
expect(customUserAgent2, defaultPlatformUserAgent);
}, skip: Platform.isAndroid && _skipDueToIssue86757);
});

group('Video playback policy', () {
late String videoTestBase64;
Expand Down Expand Up @@ -798,7 +791,6 @@ Future<void> main() async {
});

group('Programmatic Scroll', () {
// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('setAndGetScrollPosition', (WidgetTester tester) async {
const String scrollTestPage = '''
<!DOCTYPE html>
Expand Down Expand Up @@ -873,7 +865,7 @@ Future<void> main() async {
scrollPosY = await controller.getScrollY();
expect(scrollPosX, X_SCROLL * 2);
expect(scrollPosY, Y_SCROLL * 2);
}, skip: Platform.isAndroid && _skipDueToIssue86757);
});
});

// Minimial end-to-end testing of the legacy Android implementation.
Expand Down Expand Up @@ -909,8 +901,8 @@ Future<void> main() async {
await loadCompleter.future;
final String? currentUrl = await controller.currentUrl();
expect(currentUrl, primaryUrl);
});
}, skip: !Platform.isAndroid || _skipDueToIssue86757);
}, skip: !Platform.isAndroid);
});

group('NavigationDelegate', () {
const String blankPage = '<!DOCTYPE html><head></head><body></body></html>';
Expand Down Expand Up @@ -1149,7 +1141,6 @@ Future<void> main() async {
expect(currentUrl, primaryUrl);
});

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets('target _blank opens in same window',
(WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Expand All @@ -1175,48 +1166,43 @@ Future<void> main() async {
await pageLoaded.future;
final String? currentUrl = await controller.currentUrl();
expect(currentUrl, primaryUrl);
}, skip: Platform.isAndroid && _skipDueToIssue86757);
});

// TODO(bparrishMines): skipped due to https://github.com/flutter/flutter/issues/86757
testWidgets(
'can open new window and go back',
(WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
Completer<void> pageLoaded = Completer<void>();
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: WebView(
key: GlobalKey(),
onWebViewCreated: (WebViewController controller) {
controllerCompleter.complete(controller);
},
javascriptMode: JavascriptMode.unrestricted,
onPageFinished: (String url) {
pageLoaded.complete();
},
initialUrl: primaryUrl,
),
testWidgets('can open new window and go back', (WidgetTester tester) async {
final Completer<WebViewController> controllerCompleter =
Completer<WebViewController>();
Completer<void> pageLoaded = Completer<void>();
await tester.pumpWidget(
Directionality(
textDirection: TextDirection.ltr,
child: WebView(
key: GlobalKey(),
onWebViewCreated: (WebViewController controller) {
controllerCompleter.complete(controller);
},
javascriptMode: JavascriptMode.unrestricted,
onPageFinished: (String url) {
pageLoaded.complete();
},
initialUrl: primaryUrl,
),
);
final WebViewController controller = await controllerCompleter.future;
expect(controller.currentUrl(), completion(primaryUrl));
await pageLoaded.future;
pageLoaded = Completer<void>();
),
);
final WebViewController controller = await controllerCompleter.future;
expect(controller.currentUrl(), completion(primaryUrl));
await pageLoaded.future;
pageLoaded = Completer<void>();

await controller.runJavascript('window.open("$secondaryUrl")');
await pageLoaded.future;
pageLoaded = Completer<void>();
expect(controller.currentUrl(), completion(secondaryUrl));
await controller.runJavascript('window.open("$secondaryUrl")');
await pageLoaded.future;
pageLoaded = Completer<void>();
expect(controller.currentUrl(), completion(secondaryUrl));

expect(controller.canGoBack(), completion(true));
await controller.goBack();
await pageLoaded.future;
expect(controller.currentUrl(), completion(primaryUrl));
},
skip: _skipDueToIssue86757,
);
expect(controller.canGoBack(), completion(true));
await controller.goBack();
await pageLoaded.future;
expect(controller.currentUrl(), completion(primaryUrl));
});
}

// JavaScript booleans evaluate to different string values on Android and iOS.
Expand Down
Loading