import TKUnit = require("../../TKUnit"); import testModule = require("../../ui-test"); // // # WebView // Using a WebView requires the web-view module. // ``` JavaScript import webViewModule = require("ui/web-view"); // ``` // // // ### Declaring a WebView. //``` XML // // {%raw%}{%endraw%} // //``` //  export class WebViewTest extends testModule.UITest { public create(): webViewModule.WebView { // // ### Creating a WebView // ``` JavaScript let webView = new webViewModule.WebView(); // ``` // return webView; } public testLoadExistingUrl(done) { let webView = this.testView; // // ### Using WebView // ``` JavaScript webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) { let message; if (!args.error) { message = "WebView finished loading " + args.url; } else { message = "Error loading " + args.url + ": " + args.error; } // try { TKUnit.assertNull(args.error, args.error); TKUnit.assertEqual(args.url, "https://github.com/", "args.url"); done(null); } catch (e) { done(e); } // }); webView.url = "https://github.com/"; // ``` // } public testLoadLocalFile(done) { let webView = this.testView; // // ### Using WebView // ``` JavaScript webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) { // let actual; let expectedTitle = 'MyTitle'; let expectedHtml = 'TestÖ'; if (webView.ios) { actual = webView.ios.stringByEvaluatingJavaScriptFromString("document.body.innerHTML").trim(); } else if (webView.android) { actual = webView.android.getTitle(); } try { TKUnit.assertNull(args.error, args.error); TKUnit.assertEqual(actual, webView.ios ? expectedHtml : expectedTitle, "File ~/ui/web-view/test.html not loaded properly."); done(null); } catch (e) { done(e); } // let message; if (!args.error) { message = "WebView finished loading " + args.url; } else { message = "Error loading " + args.url + ": " + args.error; } }); webView.src = "~/ui/web-view/test.html"; // ``` // } public testLoadHTMLString(done) { let webView = this.testView; // // ### Using WebView // ``` JavaScript webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) { // let actual; let expected; if (webView.ios) { actual = webView.ios.stringByEvaluatingJavaScriptFromString("document.body.innerHTML").trim(); expected = 'TestÖ'; } else if (webView.android) { actual = webView.android.getTitle(); expected = 'MyTitle'; } try { TKUnit.assertNull(args.error, args.error); TKUnit.assertEqual(actual, expected, "HTML string not loaded properly. Actual: "); done(null); } catch (e) { done(e); } // let message; if (!args.error) { message = "WebView finished loading " + args.url; } else { message = "Error loading " + args.url + ": " + args.error; } }); webView.src = 'MyTitleTestÖ'; // ``` // } public testLoadInvalidUrl(done) { let webView = this.testView; let actualError; webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) { if (actualError) { // Android call this twice -- the second time args.error is undefined. return; } actualError = args.error; try { TKUnit.assert(actualError !== undefined, "There should be an error."); done(null); } catch (e) { done(e); } }); webView.url = "kofti://mnogokofti"; } public testLoadUpperCaseSrc(done) { let webView = this.testView; let targetSrc = "HTTPS://github.com/"; webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) { try { TKUnit.assertNull(args.error, args.error); TKUnit.assertEqual(args.url, targetSrc.toLowerCase(), "args.url"); done(null); } catch (e) { done(e); } }); webView.src = targetSrc; } } export function createTestCase(): WebViewTest { return new WebViewTest(); }