implement admin db testing

This commit is contained in:
southseact-3d
2026-02-20 13:54:51 +00:00
parent cb95a916ae
commit d3580b091a
15 changed files with 452 additions and 6 deletions

View File

@@ -125,6 +125,9 @@
ollamaTestRun: document.getElementById('ollama-test-run'),
ollamaTestStatus: document.getElementById('ollama-test-status'),
ollamaTestOutput: document.getElementById('ollama-test-output'),
systemTestsRun: document.getElementById('system-tests-run'),
systemTestsStatus: document.getElementById('system-tests-status'),
systemTestsOutput: document.getElementById('system-tests-output'),
};
function ensureAvailableDatalist() {
@@ -221,6 +224,12 @@
el.externalTestingStatus.style.color = isError ? 'var(--danger)' : 'inherit';
}
function setSystemTestsStatus(msg, isError = false) {
if (!el.systemTestsStatus) return;
el.systemTestsStatus.textContent = msg || '';
el.systemTestsStatus.style.color = isError ? 'var(--danger)' : 'inherit';
}
function renderExternalTestingConfig(config) {
if (!el.externalTestingConfig) return;
el.externalTestingConfig.innerHTML = '';
@@ -337,6 +346,66 @@
renderExternalTestingConfig(data.config || {});
}
function renderSystemTestsOutput(data) {
if (!el.systemTestsOutput) return;
el.systemTestsOutput.innerHTML = '';
if (!data) return;
const summary = data.summary || { total: 0, passed: 0, failed: 0, skipped: 0 };
const summaryRow = document.createElement('div');
summaryRow.className = 'admin-row';
const summaryLabel = document.createElement('div');
summaryLabel.style.minWidth = '180px';
summaryLabel.style.color = 'var(--muted)';
summaryLabel.textContent = 'Summary';
const summaryValue = document.createElement('div');
summaryValue.textContent = `${summary.passed} passed, ${summary.failed} failed, ${summary.skipped} skipped (${data.durationMs || 0}ms)`;
summaryRow.appendChild(summaryLabel);
summaryRow.appendChild(summaryValue);
el.systemTestsOutput.appendChild(summaryRow);
const results = Array.isArray(data.results) ? data.results : [];
results.forEach((result) => {
const row = document.createElement('div');
row.className = 'admin-row';
const labelWrap = document.createElement('div');
labelWrap.style.minWidth = '180px';
const strong = document.createElement('strong');
strong.textContent = result.name || 'Check';
labelWrap.appendChild(strong);
const valueWrap = document.createElement('div');
const status = document.createElement('span');
const statusText = (result.status || 'unknown').toUpperCase();
status.textContent = statusText;
if (result.status === 'passed') status.style.color = 'var(--shopify-green)';
else if (result.status === 'failed') status.style.color = 'var(--danger)';
else status.style.color = 'var(--muted)';
valueWrap.appendChild(status);
if (result.details) {
const sep = document.createElement('span');
sep.textContent = ' - ';
valueWrap.appendChild(sep);
const details = document.createElement('span');
details.textContent = result.details;
valueWrap.appendChild(details);
}
if (typeof result.durationMs === 'number') {
const timing = document.createElement('span');
timing.textContent = ` (${result.durationMs}ms)`;
timing.style.color = 'var(--muted)';
timing.style.marginLeft = '4px';
valueWrap.appendChild(timing);
}
row.appendChild(labelWrap);
row.appendChild(valueWrap);
el.systemTestsOutput.appendChild(row);
});
}
// --- Ollama Test UI ---
function setOllamaTestStatus(msg, isError = false) {
if (!el.ollamaTestStatus) return;
@@ -2822,6 +2891,23 @@
});
}
if (el.systemTestsRun) {
el.systemTestsRun.addEventListener('click', async () => {
el.systemTestsRun.disabled = true;
setSystemTestsStatus('Running system tests...');
if (el.systemTestsOutput) el.systemTestsOutput.innerHTML = '';
try {
const data = await api('/api/admin/system-tests', { method: 'POST' });
renderSystemTestsOutput(data || null);
setSystemTestsStatus(data && data.ok ? 'System tests passed.' : 'System tests completed with failures.', !data || !data.ok);
} catch (err) {
setSystemTestsStatus(err.message || 'System tests failed.', true);
} finally {
el.systemTestsRun.disabled = false;
}
});
}
// Ollama Test button handler
if (el.ollamaTestRun) {
el.ollamaTestRun.addEventListener('click', async () => {