blob: 08b16bcdab9cee0dc409e413554c2843a1a7c700 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 'dart:convert';
import 'package:flutter_test/flutter_test.dart';
import 'package:fuchsia_webview_flutter/webview.dart';
import 'package:webview_flutter/webview_flutter.dart';
// ignore_for_file: implementation_imports
const kPageHtml = '''
<html>
<head>
<title>My test page</title>
</head>
<body>
Test
</body>
</html>
''';
const kSampleScript = '''
(function() {
TestChannel.postMessage('test succeeded');
})();
''';
void main() {
setUpAll(() async {
WebView.platform = FuchsiaWebView();
});
testWidgets('loading', (WidgetTester tester) async {
final base64Content = base64Encode(Utf8Encoder().convert(kPageHtml));
final url = 'data:text/html;base64,$base64Content';
late WebViewController webViewController;
final webView = WebView(
onWebViewCreated: (WebViewController controller) {
webViewController = controller;
},
initialUrl: url,
);
await tester.pumpWidget(webView);
expect(await webViewController.currentUrl(), url);
expect(await webViewController.getTitle(), 'My test page');
});
testWidgets('javascript object', (WidgetTester tester) async {
final base64Content = base64Encode(Utf8Encoder().convert(kPageHtml));
final url = 'data:text/html;base64,$base64Content';
var success = false;
late WebViewController webViewController;
final webView = WebView(
onWebViewCreated: (WebViewController controller) {
webViewController = controller;
},
initialUrl: url,
// Reason: sdk_version_set_literal unsupported until version 2.2
// ignore: prefer_collection_literals
javascriptChannels: Set.from([
JavascriptChannel(
name: 'TestChannel',
onMessageReceived: (JavascriptMessage message) {
success = message.message == 'test succeeded';
},
),
]),
);
await tester.pumpWidget(webView);
await webViewController.evaluateJavascript(kSampleScript);
expect(success, true);
});
}