72 lines
2.8 KiB
JavaScript
72 lines
2.8 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import { test } from "node:test";
|
|
|
|
const sourceRoot = new URL("../src/", import.meta.url);
|
|
|
|
async function read(relativePath) {
|
|
return readFile(new URL(relativePath, sourceRoot), "utf8");
|
|
}
|
|
|
|
test("Worker 006 telemetry remains a bounded system feature slice", async () => {
|
|
const [
|
|
productModel,
|
|
workspaceHub,
|
|
core,
|
|
computeWorkspace,
|
|
pipelineStages,
|
|
networkWorkspace,
|
|
telemetryPolling,
|
|
contourSettings,
|
|
contourContract,
|
|
telemetryStyles,
|
|
styles,
|
|
] = await Promise.all([
|
|
read("productModel.ts"),
|
|
read("workspaces/Workspaces.tsx"),
|
|
read("core/system/workerTelemetry.ts"),
|
|
read("workspaces/system/ComputeModulesWorkspace.tsx"),
|
|
read("components/system/WorkerPipelineStages.tsx"),
|
|
read("workspaces/system/NetworkWorkspace.tsx"),
|
|
read("core/system/useWorkerTelemetry.ts"),
|
|
read("components/system/ComputeContourSettingsWindow.tsx"),
|
|
read("core/system/computeContours.ts"),
|
|
read("styles/system-telemetry.css"),
|
|
read("styles.css"),
|
|
]);
|
|
|
|
assert.match(productModel, /kind: "compute-modules"/);
|
|
assert.match(productModel, /kind: "network-monitor"/);
|
|
assert.match(workspaceHub, /<ComputeModulesWorkspace \/>/);
|
|
assert.match(workspaceHub, /<NetworkWorkspace \/>/);
|
|
assert.doesNotMatch(workspaceHub, /worker-telemetry|worker-profile|DESKTOP-OPJ8J04/);
|
|
assert.match(core, /\/api\/v1\/system\/worker-telemetry/);
|
|
assert.match(core, /\/api\/v1\/system\/worker-profile/);
|
|
assert.match(core, /share_percent/);
|
|
assert.doesNotMatch(core, /@nodedc\/ui-react/);
|
|
assert.match(computeWorkspace, /useWorkerTelemetry/);
|
|
assert.match(computeWorkspace, /telemetry_poll_interval_seconds/);
|
|
assert.match(computeWorkspace, />\s*Обновить\s*</);
|
|
assert.doesNotMatch(computeWorkspace, /loading\s*\?\s*"Читаем"/);
|
|
assert.match(computeWorkspace, /WorkerPipelineStages/);
|
|
assert.match(pipelineStages, /измеренного времени/);
|
|
assert.doesNotMatch(pipelineStages, /CPU|GPU|hardware/);
|
|
assert.match(
|
|
telemetryPolling,
|
|
/DEFAULT_WORKER_TELEMETRY_POLL_MILLISECONDS\s*=\s*3_000/,
|
|
);
|
|
assert.match(
|
|
telemetryStyles,
|
|
/\.worker-stage-list\s*\{[^}]*grid-template-columns:\s*repeat\(3,/s,
|
|
);
|
|
assert.match(networkWorkspace, /127\.0\.0\.1:8000/);
|
|
assert.match(networkWorkspace, /telemetry_poll_interval_seconds/);
|
|
assert.match(networkWorkspace, />\s*Обновить\s*</);
|
|
assert.doesNotMatch(networkWorkspace, /loading\s*\?\s*"Читаем"/);
|
|
assert.doesNotMatch(networkWorkspace, /8765/);
|
|
assert.match(contourSettings, /FieldFrame label="Операционная система"/);
|
|
assert.match(contourSettings, /label="Интервал MQTT"/);
|
|
assert.match(contourContract, /telemetry_poll_interval_seconds: number/);
|
|
assert.match(styles, /system-telemetry\.css/);
|
|
});
|