aboutsummaryrefslogtreecommitdiff
path: root/testlib/selenium
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-11-03 00:47:22 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-11-03 00:47:22 +0100
commitd0a0695fb5d34996850723f7d4b1b59c3df909c2 (patch)
tree6141a1db06f8f359813c332b3c23f3777f00b568 /testlib/selenium
parente9a383ede7f98512f0dd351697759d75ddb67eac (diff)
test harness for both browser and node
Diffstat (limited to 'testlib/selenium')
-rw-r--r--testlib/selenium/runtime.js100
-rw-r--r--testlib/selenium/testhost.html19
2 files changed, 119 insertions, 0 deletions
diff --git a/testlib/selenium/runtime.js b/testlib/selenium/runtime.js
new file mode 100644
index 000000000..0cf6c6d18
--- /dev/null
+++ b/testlib/selenium/runtime.js
@@ -0,0 +1,100 @@
+/*
+ This file is part of TALER
+ (C) 2016 Inria
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ *
+ * @author Florian Dold
+ */
+
+"use strict";
+
+var webdriver = require('selenium-webdriver');
+var chrome = require('selenium-webdriver/chrome');
+var path = require("path");
+var process = require("process");
+
+var p = "file://" + __dirname + "/testhost.html";
+
+if (!process.argv[2]) {
+ console.log("no test script given");
+ process.exit(1);
+}
+
+var testScript = path.resolve(process.argv[2]);
+
+var script = `
+ function f() {
+ System.import("testlib/talertest")
+ .then(tt => {
+ SystemJS.import("file://${testScript}")
+ .then(() => {
+ return tt.run();
+ })
+ .then(() => {
+ window.__test_over = true;
+ })
+ .catch((e) => {
+ window.__test_over = true;
+ console.error(e)
+ });
+ })
+ .catch((e) => {
+ console.error("can't locate talertest");
+ console.error(e);
+ });
+ }
+ if (document.readyState == "complete") {
+ f();
+ } else {
+ document.addEventListener("DOMContentLoaded", f);
+ }
+`;
+
+function untilTestOver() {
+ return driver.executeScript("return window.__test_over");
+}
+
+console.log("TAP version 13");
+
+var driver = new webdriver.Builder()
+ .setLoggingPrefs({browser: 'ALL'})
+ .forBrowser('chrome')
+ .build();
+
+driver.get(p);
+driver.executeScript(script);
+driver.wait(untilTestOver);
+
+driver.manage().logs().get("browser").then((logs) => {
+ for (let l of logs) {
+ if (l.level.name != "INFO") {
+ continue;
+ }
+ if (l.message.startsWith("{")) {
+ // format not understood, sometimes messages are logged
+ // with more structure, just pass it on
+ console.log(l.message);
+ continue;
+ }
+ let s1 = l.message.indexOf(" ") + 1;
+ let s2 = l.message.indexOf(" ", s1) + 1;
+ // Skip file url and LINE:COL
+ console.log(l.message.substring(s2));
+ }
+});
+
+driver.quit();
+
diff --git a/testlib/selenium/testhost.html b/testlib/selenium/testhost.html
new file mode 100644
index 000000000..263fe6316
--- /dev/null
+++ b/testlib/selenium/testhost.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Browser Test Host</title>
+ <script src="../../lib/vendor/system-csp-production.src.js"></script>
+ <script>
+ System.config({
+ baseURL: "../../",
+ defaultJSExtensions: true,
+ meta: {
+ "lib/emscripten/taler-emscripten-lib": {
+ format: "global",
+ exports: "Module",
+ }
+ },
+ });
+ </script>
+ </head>
+</html>