Frontend refactored to ES6 modules (no bundler): js/main.js — entry point, wires all modules js/auth.js — OIDC login, token management js/ws.js — /ws, /ws/test, /ws/trace connections + HUD handler js/chat.js — messages, send, streaming js/graph.js — Cytoscape visualization + animation js/trace.js — trace panel js/dashboard.js — workspace controls rendering js/awareness.js — state panel, sensors, meters js/tests.js — test status display js/util.js — shared utilities New 2-row layout: Top: test status | connection status Middle: Workspace | Node Details | Graph Bottom: Chat | Awareness | Trace PA routing: routes ALL tool requests to expert (DB, UI, buttons, machines) Dashboard integration test: 15/15 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
1.1 KiB
JavaScript
26 lines
1.1 KiB
JavaScript
/** Test status display. */
|
|
|
|
import { esc } from './util.js';
|
|
|
|
export function updateTestStatus(data) {
|
|
const el = document.getElementById('test-status');
|
|
if (!el) return;
|
|
const results = data.results || [];
|
|
const pass = results.filter(r => r.status === 'PASS').length;
|
|
const fail = results.filter(r => r.status === 'FAIL').length;
|
|
const done = results.length;
|
|
const expected = data.total_expected || done;
|
|
|
|
if (data.running) {
|
|
const current = data.current || '';
|
|
el.innerHTML = `<span class="ts-running">TESTING</span> `
|
|
+ `<span class="ts-pass">${done}</span>/<span>${expected}</span>`
|
|
+ (fail ? ` <span class="ts-fail">${fail}F</span>` : '')
|
|
+ ` <span style="color:#888;max-width:20rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">${esc(current)}</span>`;
|
|
} else if (done > 0) {
|
|
const allGreen = fail === 0;
|
|
el.innerHTML = `<span class="${allGreen ? 'ts-pass' : 'ts-fail'}">${pass}/${expected}</span>`
|
|
+ (fail ? ` <span class="ts-fail">${fail} failed</span>` : ' <span class="ts-pass">all green</span>');
|
|
}
|
|
}
|