diff --git a/src/tests/frontend/helper/methods.js b/src/tests/frontend/helper/methods.js index 253bfbc0d..0861bdf57 100644 --- a/src/tests/frontend/helper/methods.js +++ b/src/tests/frontend/helper/methods.js @@ -226,3 +226,15 @@ helper.clearPad = async () => { await helper.waitForPromise(() => helper.commits.length > commitsBefore); }); }; + +/** + * Writes to an (hidden) element which is dropped into the console output of a workflow run + * + * This is useful for debugging failed tests when there is no console log output available on + * SauceLabs (e.g. Safari) + * + */ +helper.logDebugMsg = (msg) => { + const elem = $('#debuglogs'); + elem.append(`\n${msg}`); +}; diff --git a/src/tests/frontend/index.html b/src/tests/frontend/index.html index 2b70ca667..a9d532b5e 100644 --- a/src/tests/frontend/index.html +++ b/src/tests/frontend/index.html @@ -8,6 +8,7 @@
+
diff --git a/src/tests/frontend/runner.css b/src/tests/frontend/runner.css index 6331b8183..83370719d 100644 --- a/src/tests/frontend/runner.css +++ b/src/tests/frontend/runner.css @@ -13,6 +13,10 @@ body { display: none; } +#debuglogs { + display: none; +} + #split-view { width: 100%; height: 100%; diff --git a/src/tests/frontend/travis/remote_runner.js b/src/tests/frontend/travis/remote_runner.js index 264d8032c..f64c0ec54 100644 --- a/src/tests/frontend/travis/remote_runner.js +++ b/src/tests/frontend/travis/remote_runner.js @@ -54,6 +54,11 @@ const sauceTestWorker = async.queue(async ({name, pfx, testSettings}) => { .setFirefoxOptions(firefoxOptions) .build(); const url = `https://saucelabs.com/jobs/${(await driver.getSession()).getId()}`; + const debugOutput = () => { + const console = document.getElementById('debuglogs'); // eslint-disable-line no-undef + if (console == null) return ''; + return console.innerText; + }; try { await driver.get('http://localhost:9001/tests/frontend/'); log(`Remote sauce test started! ${url}`, pfx); @@ -89,6 +94,7 @@ const sauceTestWorker = async.queue(async ({name, pfx, testSettings}) => { } } finally { log(`Remote sauce test finished! ${url}`, pfx); + log(`Debug logs of ${pfx}: ${await driver.executeScript(debugOutput)}`); await driver.quit(); } }, 6); // run 6 tests in parrallel