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