diff --git a/JetStreamDriver.js b/JetStreamDriver.js index 735e9f0c..4edd17e8 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js @@ -217,10 +217,7 @@ class Driver { // the global `fileLoader` cache. this.blobDataCache = { }; this.loadCache = { }; - this.counter = { }; - this.counter.loadedResources = 0; - this.counter.totalResources = 0; - this.counter.failedPreloadResources = 0; + this.counter = { loadedResources: 0, totalResources: 0, failedPreloadResources: 0 }; } async start() { @@ -324,7 +321,6 @@ class Driver { } summaryHtml += ""; const summaryElement = document.getElementById("result-summary"); - summaryElement.classList.add("done"); summaryElement.innerHTML = summaryHtml; summaryElement.onclick = displayCategoryScores; statusElement.innerHTML = ""; @@ -357,7 +353,7 @@ class Driver { } } - prepareBrowserUI() { + async prepareBrowserUI() { let text = ""; for (const benchmark of this.benchmarks) text += benchmark.renderHTML(); @@ -370,6 +366,27 @@ class Driver { if (e.key === "Enter") JetStream.start(); }); + + document.body.classList.add("ready"); + const statusElement = document.getElementById("status"); + statusElement.innerHTML = `Start Test`; + + await this.waitForBrowserUIStartupAnimation(); + + statusElement.addEventListener("click", (e) => { + e.preventDefault(); + JetStream.start(); + return false; + }, { once: true}); + } + + + async waitForBrowserUIStartupAnimation() { + if (!JetStreamParams.isDefault) + return + const cssValue = window.getComputedStyle(document.body).getPropertyValue("--startup-animation-duration"); + const startupAnimationDuration = parseInt(cssValue.split("ms")[0]) + await new Promise((resolve) => setTimeout(resolve, startupAnimationDuration)); } reportError(benchmark, error) { @@ -401,7 +418,7 @@ class Driver { await this.prefetchResources(); this.benchmarks.sort((a, b) => a.plan.name.toLowerCase() < b.plan.name.toLowerCase() ? 1 : -1); if (isInBrowser) - this.prepareBrowserUI(); + await this.prepareBrowserUI(); this.isReady = true; if (isInBrowser) { globalThis.dispatchEvent(new Event("JetStreamReady")); @@ -445,15 +462,6 @@ class Driver { } JetStream.loadCache = { }; // Done preloading all the files. - - const statusElement = document.getElementById("status"); - statusElement.classList.remove('loading'); - statusElement.innerHTML = `Start Test`; - statusElement.onclick = () => { - statusElement.onclick = null; - JetStream.start(); - return false; - } } resultsObject(format = "run-benchmark") { @@ -1046,7 +1054,7 @@ class Benchmark { updateCounter() { const counter = JetStream.counter; ++counter.loadedResources; - const statusElement = document.getElementById("status"); + const statusElement = document.getElementById("status-counter"); statusElement.innerHTML = `Loading ${counter.loadedResources} of ${counter.totalResources} ...`; } diff --git a/index.html b/index.html index cf3104fc..fbbb7cc8 100644 --- a/index.html +++ b/index.html @@ -51,7 +51,9 @@ } async function initialize() { + const bodyClassList = document.body.classList; if (!JetStreamParams.isDefault) { + bodyClassList.remove("animate"); showNonDefaultParams(); } if (globalThis.allIsGood) { @@ -60,16 +62,17 @@ } catch (e) { globalThis.allIsGood = false; console.error(e); + } finally { + bodyClassList.remove("loading"); } } if (!globalThis.allIsGood) { + bodyClassList.add('error'); let statusElement = document.getElementById("status"); - statusElement.classList.remove('loading'); - statusElement.classList.add('error'); statusElement.innerHTML = "
Errors were encountered during page load. Refusing to run a partial benchmark suite.
"; } } - + function showNonDefaultParams() { document.body.classList.add("nonDefaultParams"); const body = document.querySelector("#non-standard-params-table tbody"); @@ -87,7 +90,7 @@ - +