From cb7507526b76950771e5d292af6ec735ef57d1d9 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Fri, 29 Oct 2021 12:42:21 -0700 Subject: [PATCH 1/6] fix resize test --- .../webview_flutter_test.dart | 165 +++++++++--------- .../webview_flutter_test.dart | 164 ++++++++--------- .../webview_flutter_test.dart | 165 +++++++++--------- 3 files changed, 254 insertions(+), 240 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 3379bafa2346..5b6aed3842de 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -8,6 +8,7 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -162,91 +163,24 @@ void main() { }, skip: Platform.isAndroid && _skipDueToIssue86757); testWidgets('resize webview', (WidgetTester tester) async { - final String resizeTest = ''' - - Resize test - - - - - - '''; - final String resizeTestBase64 = - base64Encode(const Utf8Encoder().convert(resizeTest)); - final Completer resizeCompleter = Completer(); - final Completer pageStarted = Completer(); - final Completer pageLoaded = Completer(); - final Completer controllerCompleter = - Completer(); - final GlobalKey key = GlobalKey(); + final Completer pageFinishedCompleter = Completer(); - final WebView webView = WebView( - key: key, - initialUrl: 'data:text/html;charset=utf-8;base64,$resizeTestBase64', - onWebViewCreated: (WebViewController controller) { - controllerCompleter.complete(controller); + int resizeCallbackCount = 0; + await tester.pumpWidget(ResizableWebView( + onResize: (_) => resizeCallbackCount++, + onPageFinished: () { + pageFinishedCompleter.complete(); }, - javascriptChannels: { - JavascriptChannel( - name: 'Resize', - onMessageReceived: (JavascriptMessage message) { - resizeCompleter.complete(true); - }, - ), - }, - onPageStarted: (String url) { - pageStarted.complete(null); - }, - onPageFinished: (String url) { - pageLoaded.complete(null); - }, - javascriptMode: JavascriptMode.unrestricted, - ); - - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: Column( - children: [ - SizedBox( - width: 200, - height: 200, - child: webView, - ), - ], - ), - ), - ); + )); + await tester.pump(Duration(seconds: 3)); + await pageFinishedCompleter.future; - await controllerCompleter.future; - await pageStarted.future; - await pageLoaded.future; + final int oldCount = resizeCallbackCount; - expect(resizeCompleter.isCompleted, false); - - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: Column( - children: [ - SizedBox( - width: 400, - height: 400, - child: webView, - ), - ], - ), - ), - ); + await tester.tap(find.byKey(const ValueKey('resizeButton'))); + await tester.pump(Duration(seconds: 3)); - await resizeCompleter.future; + expect(resizeCallbackCount, greaterThan(oldCount)); }); testWidgets('set custom userAgent', (WidgetTester tester) async { @@ -1471,3 +1405,74 @@ Future _evaluateJavascript( } return jsonDecode(await controller.evaluateJavascript(js)); } + +class ResizableWebView extends StatefulWidget { + ResizableWebView({required this.onResize, required this.onPageFinished}); + + final JavascriptMessageHandler onResize; + final VoidCallback onPageFinished; + + @override + State createState() => ResizableWebViewState(); +} + +class ResizableWebViewState extends State { + double webViewWidth = 200; + double webViewHeight = 200; + + static const String resizePage = ''' + + Resize test + + + + + + '''; + + @override + Widget build(BuildContext context) { + final String resizeTestBase64 = + base64Encode(const Utf8Encoder().convert(resizePage)); + return Directionality( + textDirection: TextDirection.ltr, + child: Column( + children: [ + SizedBox( + width: webViewWidth, + height: webViewHeight, + child: WebView( + initialUrl: + 'data:text/html;charset=utf-8;base64,$resizeTestBase64', + javascriptChannels: { + JavascriptChannel( + name: 'Resize', + onMessageReceived: widget.onResize, + ), + }, + onPageFinished: (_) => widget.onPageFinished(), + javascriptMode: JavascriptMode.unrestricted, + ), + ), + TextButton( + key: Key('resizeButton'), + onPressed: () { + setState(() { + webViewWidth += 100.0; + webViewHeight += 100.0; + }); + }, + child: Text('ResizeButton'), + ), + ], + ), + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index c57d2bd55580..5876fa5d2d5c 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -168,91 +168,24 @@ void main() { }, skip: _skipDueToIssue86757); testWidgets('resize webview', (WidgetTester tester) async { - final String resizeTest = ''' - - Resize test - - - - - - '''; - final String resizeTestBase64 = - base64Encode(const Utf8Encoder().convert(resizeTest)); - final Completer resizeCompleter = Completer(); - final Completer pageStarted = Completer(); - final Completer pageLoaded = Completer(); - final Completer controllerCompleter = - Completer(); - final GlobalKey key = GlobalKey(); + final Completer pageFinishedCompleter = Completer(); - final WebView webView = WebView( - key: key, - initialUrl: 'data:text/html;charset=utf-8;base64,$resizeTestBase64', - onWebViewCreated: (WebViewController controller) { - controllerCompleter.complete(controller); + int resizeCallbackCount = 0; + await tester.pumpWidget(ResizableWebView( + onResize: (_) => resizeCallbackCount++, + onPageFinished: () { + pageFinishedCompleter.complete(); }, - javascriptChannels: { - JavascriptChannel( - name: 'Resize', - onMessageReceived: (JavascriptMessage message) { - resizeCompleter.complete(true); - }, - ), - }, - onPageStarted: (String url) { - pageStarted.complete(null); - }, - onPageFinished: (String url) { - pageLoaded.complete(null); - }, - javascriptMode: JavascriptMode.unrestricted, - ); - - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: Column( - children: [ - SizedBox( - width: 200, - height: 200, - child: webView, - ), - ], - ), - ), - ); + )); + await tester.pump(Duration(seconds: 3)); + await pageFinishedCompleter.future; - await controllerCompleter.future; - await pageStarted.future; - await pageLoaded.future; + final int oldCount = resizeCallbackCount; - expect(resizeCompleter.isCompleted, false); - - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: Column( - children: [ - SizedBox( - width: 400, - height: 400, - child: webView, - ), - ], - ), - ), - ); + await tester.tap(find.byKey(const ValueKey('resizeButton'))); + await tester.pump(Duration(seconds: 3)); - await resizeCompleter.future; + expect(resizeCallbackCount, greaterThan(oldCount)); }); testWidgets('set custom userAgent', (WidgetTester tester) async { @@ -1416,3 +1349,74 @@ Future _evaluateJavascript( WebViewController controller, String js) async { return jsonDecode(await controller.evaluateJavascript(js)); } + +class ResizableWebView extends StatefulWidget { + ResizableWebView({required this.onResize, required this.onPageFinished}); + + final JavascriptMessageHandler onResize; + final VoidCallback onPageFinished; + + @override + State createState() => ResizableWebViewState(); +} + +class ResizableWebViewState extends State { + double webViewWidth = 200; + double webViewHeight = 200; + + static const String resizePage = ''' + + Resize test + + + + + + '''; + + @override + Widget build(BuildContext context) { + final String resizeTestBase64 = + base64Encode(const Utf8Encoder().convert(resizePage)); + return Directionality( + textDirection: TextDirection.ltr, + child: Column( + children: [ + SizedBox( + width: webViewWidth, + height: webViewHeight, + child: WebView( + initialUrl: + 'data:text/html;charset=utf-8;base64,$resizeTestBase64', + javascriptChannels: { + JavascriptChannel( + name: 'Resize', + onMessageReceived: widget.onResize, + ), + }, + onPageFinished: (_) => widget.onPageFinished(), + javascriptMode: JavascriptMode.unrestricted, + ), + ), + TextButton( + key: Key('resizeButton'), + onPressed: () { + setState(() { + webViewWidth += 100.0; + webViewHeight += 100.0; + }); + }, + child: Text('ResizeButton'), + ), + ], + ), + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 8ba17a2428c5..b46c404194f5 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -8,6 +8,7 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -163,91 +164,24 @@ void main() { }); testWidgets('resize webview', (WidgetTester tester) async { - final String resizeTest = ''' - - Resize test - - - - - - '''; - final String resizeTestBase64 = - base64Encode(const Utf8Encoder().convert(resizeTest)); - final Completer resizeCompleter = Completer(); - final Completer pageStarted = Completer(); - final Completer pageLoaded = Completer(); - final Completer controllerCompleter = - Completer(); - final GlobalKey key = GlobalKey(); + final Completer pageFinishedCompleter = Completer(); - final WebView webView = WebView( - key: key, - initialUrl: 'data:text/html;charset=utf-8;base64,$resizeTestBase64', - onWebViewCreated: (WebViewController controller) { - controllerCompleter.complete(controller); + int resizeCallbackCount = 0; + await tester.pumpWidget(ResizableWebView( + onResize: (_) => resizeCallbackCount++, + onPageFinished: () { + pageFinishedCompleter.complete(); }, - javascriptChannels: { - JavascriptChannel( - name: 'Resize', - onMessageReceived: (JavascriptMessage message) { - resizeCompleter.complete(true); - }, - ), - }, - onPageStarted: (String url) { - pageStarted.complete(null); - }, - onPageFinished: (String url) { - pageLoaded.complete(null); - }, - javascriptMode: JavascriptMode.unrestricted, - ); + )); + await tester.pump(Duration(seconds: 3)); + await pageFinishedCompleter.future; - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: Column( - children: [ - SizedBox( - width: 200, - height: 200, - child: webView, - ), - ], - ), - ), - ); + final int oldCount = resizeCallbackCount; - await controllerCompleter.future; - await pageStarted.future; - await pageLoaded.future; - - expect(resizeCompleter.isCompleted, false); - - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: Column( - children: [ - SizedBox( - width: 400, - height: 400, - child: webView, - ), - ], - ), - ), - ); + await tester.tap(find.byKey(const ValueKey('resizeButton'))); + await tester.pump(Duration(seconds: 3)); - await resizeCompleter.future; + expect(resizeCallbackCount, greaterThan(oldCount)); }); testWidgets('set custom userAgent', (WidgetTester tester) async { @@ -1214,3 +1148,74 @@ Future _evaluateJavascript( } return jsonDecode(await controller.evaluateJavascript(js)); } + +class ResizableWebView extends StatefulWidget { + ResizableWebView({required this.onResize, required this.onPageFinished}); + + final JavascriptMessageHandler onResize; + final VoidCallback onPageFinished; + + @override + State createState() => ResizableWebViewState(); +} + +class ResizableWebViewState extends State { + double webViewWidth = 200; + double webViewHeight = 200; + + static const String resizePage = ''' + + Resize test + + + + + + '''; + + @override + Widget build(BuildContext context) { + final String resizeTestBase64 = + base64Encode(const Utf8Encoder().convert(resizePage)); + return Directionality( + textDirection: TextDirection.ltr, + child: Column( + children: [ + SizedBox( + width: webViewWidth, + height: webViewHeight, + child: WebView( + initialUrl: + 'data:text/html;charset=utf-8;base64,$resizeTestBase64', + javascriptChannels: { + JavascriptChannel( + name: 'Resize', + onMessageReceived: widget.onResize, + ), + }, + onPageFinished: (_) => widget.onPageFinished(), + javascriptMode: JavascriptMode.unrestricted, + ), + ), + TextButton( + key: Key('resizeButton'), + onPressed: () { + setState(() { + webViewWidth += 100.0; + webViewHeight += 100.0; + }); + }, + child: Text('ResizeButton'), + ), + ], + ), + ); + } +} From 1ea9f8ccf18e79d646b5c7360e9bd2f046b1f854 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Fri, 29 Oct 2021 14:27:53 -0700 Subject: [PATCH 2/6] comments --- .../example/integration_test/webview_flutter_test.dart | 3 +++ .../example/integration_test/webview_flutter_test.dart | 3 +++ .../example/integration_test/webview_flutter_test.dart | 3 +++ 3 files changed, 9 insertions(+) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 5b6aed3842de..5da0a4d1102d 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -172,12 +172,15 @@ void main() { pageFinishedCompleter.complete(); }, )); + // This is required to wait for the initial resize of the WebView. The line + // pageFinishedCompleter can complete before this. await tester.pump(Duration(seconds: 3)); await pageFinishedCompleter.future; final int oldCount = resizeCallbackCount; await tester.tap(find.byKey(const ValueKey('resizeButton'))); + // Wait for WebView resize. await tester.pump(Duration(seconds: 3)); expect(resizeCallbackCount, greaterThan(oldCount)); diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 5876fa5d2d5c..345aa0b940e6 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -177,12 +177,15 @@ void main() { pageFinishedCompleter.complete(); }, )); + // This is required to wait for the initial resize of the WebView. The line + // pageFinishedCompleter can complete before this. await tester.pump(Duration(seconds: 3)); await pageFinishedCompleter.future; final int oldCount = resizeCallbackCount; await tester.tap(find.byKey(const ValueKey('resizeButton'))); + // Wait for WebView resize. await tester.pump(Duration(seconds: 3)); expect(resizeCallbackCount, greaterThan(oldCount)); diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index b46c404194f5..e2d99768ffdf 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -173,12 +173,15 @@ void main() { pageFinishedCompleter.complete(); }, )); + // This is required to wait for the initial resize of the WebView. The line + // pageFinishedCompleter can complete before this. await tester.pump(Duration(seconds: 3)); await pageFinishedCompleter.future; final int oldCount = resizeCallbackCount; await tester.tap(find.byKey(const ValueKey('resizeButton'))); + // Wait for WebView resize. await tester.pump(Duration(seconds: 3)); expect(resizeCallbackCount, greaterThan(oldCount)); From 7c2b2db526a3bdd567faf69c184f02954d6c8dbf Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Wed, 3 Nov 2021 11:46:40 -0700 Subject: [PATCH 3/6] wait for resizes instead --- .../webview_flutter_test.dart | 30 +++++++++---------- .../webview_flutter_test.dart | 30 +++++++++---------- .../webview_flutter_test.dart | 30 +++++++++---------- 3 files changed, 42 insertions(+), 48 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 5da0a4d1102d..d037ec39f7cc 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -163,28 +163,26 @@ void main() { }, skip: Platform.isAndroid && _skipDueToIssue86757); testWidgets('resize webview', (WidgetTester tester) async { - final Completer pageFinishedCompleter = Completer(); + final Completer initialResizeCompleter = Completer(); + final Completer buttonTapResizeCompleter = Completer(); - int resizeCallbackCount = 0; + bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( - onResize: (_) => resizeCallbackCount++, - onPageFinished: () { - pageFinishedCompleter.complete(); + onResize: (_) { + if (resizeButtonTapped) { + buttonTapResizeCompleter.complete(); + } else { + initialResizeCompleter.complete(); + } }, + onPageFinished: () {}, )); - // This is required to wait for the initial resize of the WebView. The line - // pageFinishedCompleter can complete before this. - await tester.pump(Duration(seconds: 3)); - await pageFinishedCompleter.future; - - final int oldCount = resizeCallbackCount; + await initialResizeCompleter.future; + resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); - // Wait for WebView resize. - await tester.pump(Duration(seconds: 3)); - - expect(resizeCallbackCount, greaterThan(oldCount)); - }); + expect(buttonTapResizeCompleter.future, completes); + }, timeout: Timeout(Duration(seconds: 10))); testWidgets('set custom userAgent', (WidgetTester tester) async { final Completer controllerCompleter1 = diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 345aa0b940e6..c0cdb35bba9d 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -168,28 +168,26 @@ void main() { }, skip: _skipDueToIssue86757); testWidgets('resize webview', (WidgetTester tester) async { - final Completer pageFinishedCompleter = Completer(); + final Completer initialResizeCompleter = Completer(); + final Completer buttonTapResizeCompleter = Completer(); - int resizeCallbackCount = 0; + bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( - onResize: (_) => resizeCallbackCount++, - onPageFinished: () { - pageFinishedCompleter.complete(); + onResize: (_) { + if (resizeButtonTapped) { + buttonTapResizeCompleter.complete(); + } else { + initialResizeCompleter.complete(); + } }, + onPageFinished: () {}, )); - // This is required to wait for the initial resize of the WebView. The line - // pageFinishedCompleter can complete before this. - await tester.pump(Duration(seconds: 3)); - await pageFinishedCompleter.future; - - final int oldCount = resizeCallbackCount; + await initialResizeCompleter.future; + resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); - // Wait for WebView resize. - await tester.pump(Duration(seconds: 3)); - - expect(resizeCallbackCount, greaterThan(oldCount)); - }); + expect(buttonTapResizeCompleter.future, completes); + }, timeout: Timeout(Duration(seconds: 10))); testWidgets('set custom userAgent', (WidgetTester tester) async { final Completer controllerCompleter1 = diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index e2d99768ffdf..158c00a0f1fa 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -164,28 +164,26 @@ void main() { }); testWidgets('resize webview', (WidgetTester tester) async { - final Completer pageFinishedCompleter = Completer(); + final Completer initialResizeCompleter = Completer(); + final Completer buttonTapResizeCompleter = Completer(); - int resizeCallbackCount = 0; + bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( - onResize: (_) => resizeCallbackCount++, - onPageFinished: () { - pageFinishedCompleter.complete(); + onResize: (_) { + if (resizeButtonTapped) { + buttonTapResizeCompleter.complete(); + } else { + initialResizeCompleter.complete(); + } }, + onPageFinished: () {}, )); - // This is required to wait for the initial resize of the WebView. The line - // pageFinishedCompleter can complete before this. - await tester.pump(Duration(seconds: 3)); - await pageFinishedCompleter.future; - - final int oldCount = resizeCallbackCount; + await initialResizeCompleter.future; + resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); - // Wait for WebView resize. - await tester.pump(Duration(seconds: 3)); - - expect(resizeCallbackCount, greaterThan(oldCount)); - }); + expect(buttonTapResizeCompleter.future, completes); + }, timeout: Timeout(Duration(seconds: 10))); testWidgets('set custom userAgent', (WidgetTester tester) async { final Completer controllerCompleter1 = From 57fd7a5f1680b98cd57984bd3d99fd1de3257a14 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Wed, 3 Nov 2021 12:00:58 -0700 Subject: [PATCH 4/6] await for pumpAndSettle --- .../example/integration_test/webview_flutter_test.dart | 3 ++- .../example/integration_test/webview_flutter_test.dart | 3 ++- .../example/integration_test/webview_flutter_test.dart | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index d037ec39f7cc..f76aee708be3 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -181,8 +181,9 @@ void main() { resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); + await tester.pumpAndSettle(); expect(buttonTapResizeCompleter.future, completes); - }, timeout: Timeout(Duration(seconds: 10))); + }); testWidgets('set custom userAgent', (WidgetTester tester) async { final Completer controllerCompleter1 = diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index c0cdb35bba9d..3de6751ff6d1 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -186,8 +186,9 @@ void main() { resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); + await tester.pumpAndSettle(); expect(buttonTapResizeCompleter.future, completes); - }, timeout: Timeout(Duration(seconds: 10))); + }); testWidgets('set custom userAgent', (WidgetTester tester) async { final Completer controllerCompleter1 = diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 158c00a0f1fa..d27197ded74f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -182,8 +182,9 @@ void main() { resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); + await tester.pumpAndSettle(); expect(buttonTapResizeCompleter.future, completes); - }, timeout: Timeout(Duration(seconds: 10))); + }); testWidgets('set custom userAgent', (WidgetTester tester) async { final Completer controllerCompleter1 = From 9b76598b92c83545e66c55408c904cdd9eebb3e4 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Wed, 3 Nov 2021 12:32:28 -0700 Subject: [PATCH 5/6] wait for page to finish loading --- .../example/integration_test/webview_flutter_test.dart | 4 +++- .../example/integration_test/webview_flutter_test.dart | 4 +++- .../example/integration_test/webview_flutter_test.dart | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index f76aee708be3..be0635042e80 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -165,6 +165,7 @@ void main() { testWidgets('resize webview', (WidgetTester tester) async { final Completer initialResizeCompleter = Completer(); final Completer buttonTapResizeCompleter = Completer(); + final Completer onPageFinished = Completer(); bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( @@ -175,8 +176,9 @@ void main() { initialResizeCompleter.complete(); } }, - onPageFinished: () {}, + onPageFinished: () => onPageFinished.complete(), )); + await onPageFinished.future; await initialResizeCompleter.future; resizeButtonTapped = true; diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 3de6751ff6d1..9e090fd74965 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -170,6 +170,7 @@ void main() { testWidgets('resize webview', (WidgetTester tester) async { final Completer initialResizeCompleter = Completer(); final Completer buttonTapResizeCompleter = Completer(); + final Completer onPageFinished = Completer(); bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( @@ -180,8 +181,9 @@ void main() { initialResizeCompleter.complete(); } }, - onPageFinished: () {}, + onPageFinished: () => onPageFinished.complete(), )); + await onPageFinished.future; await initialResizeCompleter.future; resizeButtonTapped = true; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index d27197ded74f..4d2ed3df389a 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -166,6 +166,7 @@ void main() { testWidgets('resize webview', (WidgetTester tester) async { final Completer initialResizeCompleter = Completer(); final Completer buttonTapResizeCompleter = Completer(); + final Completer onPageFinished = Completer(); bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( @@ -176,8 +177,9 @@ void main() { initialResizeCompleter.complete(); } }, - onPageFinished: () {}, + onPageFinished: () => onPageFinished.complete(), )); + await onPageFinished.future; await initialResizeCompleter.future; resizeButtonTapped = true; From 15bb4e98d7f8f9fc79d4cdbec3b2c0b3f3f508ad Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Fri, 5 Nov 2021 12:46:34 -0700 Subject: [PATCH 6/6] fix platform dependent wait --- .../example/integration_test/webview_flutter_test.dart | 4 +++- .../example/integration_test/webview_flutter_test.dart | 1 + .../example/integration_test/webview_flutter_test.dart | 4 ---- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index be0635042e80..5fe0af1f9a7a 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -179,7 +179,9 @@ void main() { onPageFinished: () => onPageFinished.complete(), )); await onPageFinished.future; - await initialResizeCompleter.future; + if (Platform.isAndroid) { + await initialResizeCompleter.future; + } resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton'))); diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 77f2e1370910..454e2c959680 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -192,6 +192,7 @@ void main() { bool resizeButtonTapped = false; await tester.pumpWidget(ResizableWebView( onResize: (_) { + print(resizeButtonTapped); if (resizeButtonTapped) { buttonTapResizeCompleter.complete(); } else { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index c181ad29dbe5..a637da13ddc0 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -181,7 +181,6 @@ void main() { }); testWidgets('resize webview', (WidgetTester tester) async { - final Completer initialResizeCompleter = Completer(); final Completer buttonTapResizeCompleter = Completer(); final Completer onPageFinished = Completer(); @@ -190,14 +189,11 @@ void main() { onResize: (_) { if (resizeButtonTapped) { buttonTapResizeCompleter.complete(); - } else { - initialResizeCompleter.complete(); } }, onPageFinished: () => onPageFinished.complete(), )); await onPageFinished.future; - await initialResizeCompleter.future; resizeButtonTapped = true; await tester.tap(find.byKey(const ValueKey('resizeButton')));