diff --git a/TestSelenium.js b/TestSelenium.js index 83b276a40..8e160a7f2 100644 --- a/TestSelenium.js +++ b/TestSelenium.js @@ -22,17 +22,30 @@ if (process.env.SAUCE_USERNAME !== undefined) { driver = new WebDriver.Builder().withCapabilities({ browserName: "chrome" }).build(); } +var SC_GET_LOGS = "return (window.__CRYPTPAD_TEST__) ? window.__CRYPTPAD_TEST__.getLogs() : '[]'"; + var nt = nThen; [ - '/assert/', + '/assert/#?test=test', '/auth/#?test=test' ].forEach(function (path) { var url = 'http://localhost:3000' + path; nt = nThen(function (waitFor) { driver.get(url); + var done = false; + var logMore = function (cb) { + if (done) { return; } + driver.executeScript(SC_GET_LOGS).then(waitFor(function (logs) { + JSON.parse(logs).forEach(function (l) { console.log('>' + l); }); + if (cb) { cb(); } else { setTimeout(logMore, 50); } + })); + }; + logMore(); + driver.wait(WebDriver.until.elementLocated(WebDriver.By.className("report")), 5000); var report = driver.wait(WebDriver.until.elementLocated(WebDriver.By.className("report")), 5000); report.getAttribute("class").then(waitFor(function (cls) { report.getText().then(waitFor(function (text) { + logMore(function () { done = true; }); console.log("\n-----\n" + url + ' ' + text + "\n-----"); if (!cls) { throw new Error("cls is null"); @@ -48,4 +61,4 @@ var nt = nThen; nt(function () { driver.quit(); -}); \ No newline at end of file +}) \ No newline at end of file diff --git a/www/assert/main.js b/www/assert/main.js index ffab3f5a9..560d10fd8 100644 --- a/www/assert/main.js +++ b/www/assert/main.js @@ -4,6 +4,7 @@ define([ '/bower_components/textpatcher/TextPatcher.amd.js', 'json.sortify', '/common/cryptpad-common.js', + '/common/test.js' ], function ($, Hyperjson, TextPatcher, Sortify, Cryptpad) { window.Hyperjson = Hyperjson; window.TextPatcher = TextPatcher; diff --git a/www/common/test.js b/www/common/test.js index 2d70e939f..793bfd1b4 100644 --- a/www/common/test.js +++ b/www/common/test.js @@ -1,30 +1,64 @@ define([], function () { var out = function () { }; + out.passed = out; + var mkReport = function (list, pass) { + var rpt = document.createElement('div'); + rpt.textContent = JSON.stringify(list); + rpt.setAttribute('class', 'report ' + (pass ? 'success' : 'failure')); + rpt.setAttribute('style', 'display:none;'); + document.body.appendChild(rpt); + } if (window.location.hash.indexOf("?test=test") > -1) { window.onerror = function (msg, url, lineNo, columnNo, e) { - document.body.innerHTML = '