# HG changeset patch # User Jaroslav Tulach # Date 1461730489 -7200 # Node ID 12a252145892058f5889796c9a74c6a97412511f # Parent bafdddd2a0cf3acb48257a638c840fd38282caba Automatic testing of sample knockout based bck2brwsr application diff -r bafdddd2a0cf -r 12a252145892 ko/kosample/client-web/pom.xml --- a/ko/kosample/client-web/pom.xml Wed Apr 27 06:13:59 2016 +0200 +++ b/ko/kosample/client-web/pom.xml Wed Apr 27 06:14:49 2016 +0200 @@ -295,5 +295,31 @@ + + test-run + + + !skipTests + + + + + + org.apidesign.bck2brwsr + bck2brwsr-maven-plugin + ${project.version} + + + show + + show + + integration-test + + + + + + diff -r bafdddd2a0cf -r 12a252145892 ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java --- a/ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java Wed Apr 27 06:13:59 2016 +0200 +++ b/ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java Wed Apr 27 06:14:49 2016 +0200 @@ -17,17 +17,19 @@ */ package org.apidesign.bck2brwsr.kosample; +import java.util.Timer; import java.util.TimerTask; import net.java.html.json.ComputedProperty; import net.java.html.json.Function; import net.java.html.json.Model; +import net.java.html.json.ModelOperation; import net.java.html.json.Property; import org.apidesign.bck2brwsr.kosample.js.Dialogs; /** Model annotation generates class Data with * one message property, boolean property and read only words property */ -@Model(className = "Data", targetId="", properties = { +@Model(className = "Data", targetId="", instance = true, properties = { @Property(name = "message", type = String.class), @Property(name = "rotating", type = boolean.class) }) @@ -54,7 +56,7 @@ }); } - private static java.util.Timer TIMER = new java.util.Timer("Pending tasks"); + private static final Timer TIMER = new Timer("Pending tasks"); private static void schedule(Runnable run, long delay) { TIMER.schedule(new TimerTask() { @Override @@ -80,5 +82,54 @@ ui = new Data(); ui.setMessage("Hello World from HTML and Java!"); ui.applyBindings(); + + schedule(() -> ui.startTest(), 1000); + } + + // + // testing + // + + @ModelOperation + static void startTest(Data model) { + Dialogs.triggerClick("beginTest"); + } + + private boolean inTesting; + + @Function + void beginTest(Data model) { + if (inTesting) { + model.setRotating(false); + model.setMessage("Hello World from HTML and Java!"); + inTesting = false; + return; + } + + inTesting = true; + model.setMessage("In testing mode stop Automatic testing?"); + model.setRotating(true); + schedule(() -> { + if (inTesting) { + model.setMessage("In testing mode count down 3s"); + } + }, 3000); + schedule(() -> { + if (inTesting) { + model.setMessage("In testing mode count down 2s"); + } + }, 4000); + schedule(() -> { + if (inTesting) { + model.setMessage("In testing mode count down 1s"); + } + }, 5000); + schedule(() -> { + if (inTesting) { + model.setMessage("Finished testing mode close the browser"); + model.setRotating(false); + System.exit(0); + } + }, 6000); } } diff -r bafdddd2a0cf -r 12a252145892 ko/kosample/client/src/main/webapp/pages/index.html --- a/ko/kosample/client/src/main/webapp/pages/index.html Wed Apr 27 06:13:59 2016 +0200 +++ b/ko/kosample/client/src/main/webapp/pages/index.html Wed Apr 27 06:14:49 2016 +0200 @@ -80,6 +80,7 @@ +
diff -r bafdddd2a0cf -r 12a252145892 ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java --- a/ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java Wed Apr 27 06:13:59 2016 +0200 +++ b/ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java Wed Apr 27 06:14:49 2016 +0200 @@ -54,4 +54,12 @@ "return 'Screen size is ' + x + ' times ' + y;\n" ) public static native String screenSize(); + + @JavaScriptBody(args = { "id" }, body = + "var e = window.document.getElementById(id);\n " + + "var ev = window.document.createEvent('MouseEvents');\n " + + "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n " + + "e.dispatchEvent(ev);\n " + ) + public static native void triggerClick(String id); } diff -r bafdddd2a0cf -r 12a252145892 ko/kosample/pom.xml --- a/ko/kosample/pom.xml Wed Apr 27 06:13:59 2016 +0200 +++ b/ko/kosample/pom.xml Wed Apr 27 06:14:49 2016 +0200 @@ -20,7 +20,7 @@ ${project.version} - FULL + MINIMAL 2.13 UTF-8