// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:webview_flutter_example/main.dart'; import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; void main() { setUp(() { WebViewPlatform.instance = FakeWebViewPlatform(); }); testWidgets('Test snackbar from ScaffoldMessenger', (WidgetTester tester) async { await tester.pumpWidget(const MaterialApp(home: WebViewExample())); expect(find.byIcon(Icons.favorite), findsOneWidget); await tester.tap(find.byIcon(Icons.favorite)); await tester.pump(); expect(find.byType(SnackBar), findsOneWidget); }); } class FakeWebViewPlatform extends WebViewPlatform { @override PlatformWebViewController createPlatformWebViewController( PlatformWebViewControllerCreationParams params, ) { return FakeWebViewController(params); } @override PlatformWebViewWidget createPlatformWebViewWidget( PlatformWebViewWidgetCreationParams params, ) { return FakeWebViewWidget(params); } @override PlatformWebViewCookieManager createPlatformCookieManager( PlatformWebViewCookieManagerCreationParams params, ) { return FakeCookieManager(params); } @override PlatformNavigationDelegate createPlatformNavigationDelegate( PlatformNavigationDelegateCreationParams params, ) { return FakeNavigationDelegate(params); } } class FakeWebViewController extends PlatformWebViewController { FakeWebViewController(super.params) : super.implementation(); @override Future setJavaScriptMode(JavaScriptMode javaScriptMode) async {} @override Future setBackgroundColor(Color color) async {} @override Future setPlatformNavigationDelegate( PlatformNavigationDelegate handler, ) async {} @override Future addJavaScriptChannel( JavaScriptChannelParams javaScriptChannelParams) async {} @override Future loadRequest(LoadRequestParams params) async {} @override Future currentUrl() async { return 'https://www.google.com'; } } class FakeCookieManager extends PlatformWebViewCookieManager { FakeCookieManager(super.params) : super.implementation(); } class FakeWebViewWidget extends PlatformWebViewWidget { FakeWebViewWidget(super.params) : super.implementation(); @override Widget build(BuildContext context) { return Container(); } } class FakeNavigationDelegate extends PlatformNavigationDelegate { FakeNavigationDelegate(super.params) : super.implementation(); @override Future setOnNavigationRequest( NavigationRequestCallback onNavigationRequest, ) async {} @override Future setOnPageFinished(PageEventCallback onPageFinished) async {} @override Future setOnPageStarted(PageEventCallback onPageStarted) async {} @override Future setOnProgress(ProgressCallback onProgress) async {} @override Future setOnWebResourceError( WebResourceErrorCallback onWebResourceError, ) async {} @override Future setOnUrlChange(UrlChangeCallback onUrlChange) async {} @override Future setOnHttpAuthRequest( HttpAuthRequestCallback handler, ) async {} @override Future setOnHttpError(HttpResponseErrorCallback onHttpError) async {} }