${escapeHTML(test.startedLabel)}
${escapeHTML(test.customLabel || test.modeLabel)}
${escapeHTML(test.status)}
${progress}%${test.stage ? " ยท " + escapeHTML(test.stage) : ""}
Finished${escapeHTML(test.finishedLabel)}
Files${escapeHTML(test.files)}
Size${escapeHTML(test.sizeLabel)}
Write${escapeHTML(test.writeSpeed)}
Read${escapeHTML(test.readSpeed)}
${error}
`;
}
async function refreshTests() {
const url = testList.getAttribute("data-storage-tests-url");
if (!url) {
return;
}
const response = await fetch(url, { headers: { Accept: "application/json" } });
if (!response.ok) {
return;
}
const payload = await response.json();
const openIDs = new Set(Array.from(testList.querySelectorAll("details[open]")).map((row) => row.dataset.storageTestId));
const tests = payload.tests || [];
if (tests.length === 0) {
return;
}
testList.innerHTML = tests.map(renderTest).join("");
testList.querySelectorAll("details").forEach((row) => {
if (openIDs.has(row.dataset.storageTestId)) {
row.open = true;
}
});
}
setInterval(() => {
refreshTests().catch(() => {});
}, 1200);
})();