diff --git a/www/checkup/main.js b/www/checkup/main.js index 2fb4085e2..68d35a12e 100644 --- a/www/checkup/main.js +++ b/www/checkup/main.js @@ -175,17 +175,19 @@ define([ // Test Websocket var evWSError = Util.mkEvent(true); assert(function (_cb, msg) { - var cb = Util.once(Util.both(_cb, function (err) { - if (typeof(err) === 'string') { - msg.innerText = err; - } + var timeoutErr = 'Could not connect to the websocket server within 5 seconds.'; + var cb = Util.once(Util.both(_cb, function (status) { + if (status === true) { return; } + msg.appendChild(h('span#websocket', [ + status || 'Unknown websocket error', + ])); })); var ws = new WebSocket(NetConfig.getWebsocketURL()); var to = setTimeout(function () { console.error('Websocket TIMEOUT'); evWSError.fire(); - cb('Could not connect to the websocket server within 5 seconds.'); + cb(timeoutErr); }, 5000); ws.onopen = function () { clearTimeout(to); @@ -200,17 +202,32 @@ define([ }); // Test login block - assert(function (cb, msg) { - msg.appendChild(h('span', [ - "Unable to create, retrieve, or remove encrypted credentials from the server. ", - "This is most commonly caused by a mismatch between the value of the ", - h('code', 'blockPath'), - ' value configured in ', - CONFIG_PATH(), - " and the corresponding settings in your reverse proxy's configuration file,", - " but it can also be explained by a websocket error. ", - RESTART_WARNING(), - ])); + assert(function (_cb, msg) { + var websocketErr = "No WebSocket available"; + var cb = Util.once(Util.both(_cb, function (status) { + if (status === true) { return; } + if (status === websocketErr) { + msg.appendChild(h('span', [ + websocketErr, + ' See ', + h('a', { + href: '#websocket', + }, 'the related websocket error'), + ])); + return; + } + // else + msg.appendChild(h('span', [ + "Unable to create, retrieve, or remove encrypted credentials from the server. ", + "This is most commonly caused by a mismatch between the value of the ", + h('code', 'blockPath'), + ' value configured in ', + CONFIG_PATH(), + " and the corresponding settings in your reverse proxy's configuration file,", + " but it can also be explained by a websocket error. ", + RESTART_WARNING(), + ])); + })); var bytes = new Uint8Array(Login.requiredBytes); @@ -237,7 +254,7 @@ define([ // If WebSockets aren't working, don't wait forever here evWSError.reg(function () { waitFor.abort(); - cb("No WebSocket available"); + cb(websocketErr); }); // Create proxy Login.loadUserObject(opt, waitFor(function (err, rt) { @@ -416,12 +433,16 @@ define([ var statusClass = failed? 'failure': 'success'; + var failedDetails = "Details found below"; + var successDetails = "This checkup only tests the most common configuration issues. You may still experience errors."; + var details = h('p', failed? failedDetails: successDetails); + var summary = h('div.summary.' + statusClass, [ h('p', Messages._getKey('assert_numberOfTestsPassed', [ state.passed, state.total ])), - h('p', "Details found below"), + details, ]); var report = h('div.report', [