Skip to content

Commit be0e0e2

Browse files
authored
[webview_flutter] Skip flaky legacy tests on iOS (#8911)
I previously skipped these tests in `webview_flutter_wkwebview` example app (#8895), but need to also skip in the `webview_flutter` example app. Temporary solution for flutter/flutter#164632. ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
1 parent c976917 commit be0e0e2

File tree

1 file changed

+111
-98
lines changed

1 file changed

+111
-98
lines changed

packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/legacy/webview_flutter_test.dart

Lines changed: 111 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -340,122 +340,135 @@ Future<void> main() async {
340340
});
341341

342342
group('Video playback policy', () {
343-
testWidgets('Auto media playback', (WidgetTester tester) async {
344-
final String videoTestBase64 = await getTestVideoBase64();
345-
Completer<WebViewController> controllerCompleter =
346-
Completer<WebViewController>();
347-
Completer<void> pageLoaded = Completer<void>();
343+
testWidgets(
344+
'Auto media playback',
345+
(WidgetTester tester) async {
346+
final String videoTestBase64 = await getTestVideoBase64();
347+
Completer<WebViewController> controllerCompleter =
348+
Completer<WebViewController>();
349+
Completer<void> pageLoaded = Completer<void>();
348350

349-
await tester.pumpWidget(
350-
Directionality(
351-
textDirection: TextDirection.ltr,
352-
child: WebView(
353-
key: GlobalKey(),
354-
initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64',
355-
onWebViewCreated: (WebViewController controller) {
356-
controllerCompleter.complete(controller);
357-
},
358-
javascriptMode: JavascriptMode.unrestricted,
359-
onPageFinished: (String url) {
360-
pageLoaded.complete(null);
361-
},
362-
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
351+
await tester.pumpWidget(
352+
Directionality(
353+
textDirection: TextDirection.ltr,
354+
child: WebView(
355+
key: GlobalKey(),
356+
initialUrl:
357+
'data:text/html;charset=utf-8;base64,$videoTestBase64',
358+
onWebViewCreated: (WebViewController controller) {
359+
controllerCompleter.complete(controller);
360+
},
361+
javascriptMode: JavascriptMode.unrestricted,
362+
onPageFinished: (String url) {
363+
pageLoaded.complete(null);
364+
},
365+
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
366+
),
363367
),
364-
),
365-
);
366-
WebViewController controller = await controllerCompleter.future;
367-
await pageLoaded.future;
368+
);
369+
WebViewController controller = await controllerCompleter.future;
370+
await pageLoaded.future;
368371

369-
String isPaused =
370-
await controller.runJavascriptReturningResult('isPaused();');
371-
expect(isPaused, _webviewBool(false));
372+
String isPaused =
373+
await controller.runJavascriptReturningResult('isPaused();');
374+
expect(isPaused, _webviewBool(false));
372375

373-
controllerCompleter = Completer<WebViewController>();
374-
pageLoaded = Completer<void>();
376+
controllerCompleter = Completer<WebViewController>();
377+
pageLoaded = Completer<void>();
375378

376-
// We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy
377-
await tester.pumpWidget(
378-
Directionality(
379-
textDirection: TextDirection.ltr,
380-
child: WebView(
381-
key: GlobalKey(),
382-
initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64',
383-
onWebViewCreated: (WebViewController controller) {
384-
controllerCompleter.complete(controller);
385-
},
386-
javascriptMode: JavascriptMode.unrestricted,
387-
onPageFinished: (String url) {
388-
pageLoaded.complete(null);
389-
},
379+
// We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy
380+
await tester.pumpWidget(
381+
Directionality(
382+
textDirection: TextDirection.ltr,
383+
child: WebView(
384+
key: GlobalKey(),
385+
initialUrl:
386+
'data:text/html;charset=utf-8;base64,$videoTestBase64',
387+
onWebViewCreated: (WebViewController controller) {
388+
controllerCompleter.complete(controller);
389+
},
390+
javascriptMode: JavascriptMode.unrestricted,
391+
onPageFinished: (String url) {
392+
pageLoaded.complete(null);
393+
},
394+
),
390395
),
391-
),
392-
);
396+
);
393397

394-
controller = await controllerCompleter.future;
395-
await pageLoaded.future;
398+
controller = await controllerCompleter.future;
399+
await pageLoaded.future;
396400

397-
isPaused = await controller.runJavascriptReturningResult('isPaused();');
398-
expect(isPaused, _webviewBool(true));
399-
});
401+
isPaused = await controller.runJavascriptReturningResult('isPaused();');
402+
expect(isPaused, _webviewBool(true));
403+
},
404+
// Flakes on iOS: https://github.com/flutter/flutter/issues/164632
405+
skip: Platform.isIOS,
406+
);
400407

401-
testWidgets('Changes to initialMediaPlaybackPolicy are ignored',
402-
(WidgetTester tester) async {
403-
final String videoTestBase64 = await getTestVideoBase64();
404-
final Completer<WebViewController> controllerCompleter =
405-
Completer<WebViewController>();
406-
Completer<void> pageLoaded = Completer<void>();
408+
testWidgets(
409+
'Changes to initialMediaPlaybackPolicy are ignored',
410+
(WidgetTester tester) async {
411+
final String videoTestBase64 = await getTestVideoBase64();
412+
final Completer<WebViewController> controllerCompleter =
413+
Completer<WebViewController>();
414+
Completer<void> pageLoaded = Completer<void>();
407415

408-
final GlobalKey key = GlobalKey();
409-
await tester.pumpWidget(
410-
Directionality(
411-
textDirection: TextDirection.ltr,
412-
child: WebView(
413-
key: key,
414-
initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64',
415-
onWebViewCreated: (WebViewController controller) {
416-
controllerCompleter.complete(controller);
417-
},
418-
javascriptMode: JavascriptMode.unrestricted,
419-
onPageFinished: (String url) {
420-
pageLoaded.complete(null);
421-
},
422-
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
416+
final GlobalKey key = GlobalKey();
417+
await tester.pumpWidget(
418+
Directionality(
419+
textDirection: TextDirection.ltr,
420+
child: WebView(
421+
key: key,
422+
initialUrl:
423+
'data:text/html;charset=utf-8;base64,$videoTestBase64',
424+
onWebViewCreated: (WebViewController controller) {
425+
controllerCompleter.complete(controller);
426+
},
427+
javascriptMode: JavascriptMode.unrestricted,
428+
onPageFinished: (String url) {
429+
pageLoaded.complete(null);
430+
},
431+
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
432+
),
423433
),
424-
),
425-
);
426-
final WebViewController controller = await controllerCompleter.future;
427-
await pageLoaded.future;
434+
);
435+
final WebViewController controller = await controllerCompleter.future;
436+
await pageLoaded.future;
428437

429-
String isPaused =
430-
await controller.runJavascriptReturningResult('isPaused();');
431-
expect(isPaused, _webviewBool(false));
438+
String isPaused =
439+
await controller.runJavascriptReturningResult('isPaused();');
440+
expect(isPaused, _webviewBool(false));
432441

433-
pageLoaded = Completer<void>();
442+
pageLoaded = Completer<void>();
434443

435-
await tester.pumpWidget(
436-
Directionality(
437-
textDirection: TextDirection.ltr,
438-
child: WebView(
439-
key: key,
440-
initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64',
441-
onWebViewCreated: (WebViewController controller) {
442-
controllerCompleter.complete(controller);
443-
},
444-
javascriptMode: JavascriptMode.unrestricted,
445-
onPageFinished: (String url) {
446-
pageLoaded.complete(null);
447-
},
444+
await tester.pumpWidget(
445+
Directionality(
446+
textDirection: TextDirection.ltr,
447+
child: WebView(
448+
key: key,
449+
initialUrl:
450+
'data:text/html;charset=utf-8;base64,$videoTestBase64',
451+
onWebViewCreated: (WebViewController controller) {
452+
controllerCompleter.complete(controller);
453+
},
454+
javascriptMode: JavascriptMode.unrestricted,
455+
onPageFinished: (String url) {
456+
pageLoaded.complete(null);
457+
},
458+
),
448459
),
449-
),
450-
);
460+
);
451461

452-
await controller.reload();
462+
await controller.reload();
453463

454-
await pageLoaded.future;
464+
await pageLoaded.future;
455465

456-
isPaused = await controller.runJavascriptReturningResult('isPaused();');
457-
expect(isPaused, _webviewBool(false));
458-
});
466+
isPaused = await controller.runJavascriptReturningResult('isPaused();');
467+
expect(isPaused, _webviewBool(false));
468+
},
469+
// Flakes on iOS: https://github.com/flutter/flutter/issues/164632
470+
skip: Platform.isIOS,
471+
);
459472

460473
testWidgets('Video plays inline when allowsInlineMediaPlayback is true',
461474
(WidgetTester tester) async {

0 commit comments

Comments
 (0)