Implement configuration, runtime, frontend, and task governance closure
This commit is contained in:
17
web/app/test_frontend_m2.mjs
Normal file
17
web/app/test_frontend_m2.mjs
Normal file
@@ -0,0 +1,17 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { CommandController } from "./controls.mjs";
|
||||
import { EMPTY_STATE, reduceWorkerState } from "./state-panel.mjs";
|
||||
|
||||
const calls = [];
|
||||
const client = { send: async (kind, payload, options) => { calls.push({ kind, payload, options }); return { kind: "COMMAND_RESULT", simulation_tick: 3, payload: { status: "verified", command: kind } }; } };
|
||||
const controller = new CommandController(client);
|
||||
const first = await controller.execute("run", { program: "main.ngc" });
|
||||
assert.equal(first.payload.command, "PROGRAM_RUN");
|
||||
await controller.execute("estop", { active: true }, { operationId: "estop-fixed" });
|
||||
assert.equal(calls[1].kind, "ESTOP");
|
||||
assert.equal(calls[1].options.operationId, "estop-fixed");
|
||||
assert.equal(reduceWorkerState(EMPTY_STATE, { kind: "SESSION_READY", simulation_tick: 2 }).status, "ready");
|
||||
const errorState = reduceWorkerState(EMPTY_STATE, { kind: "ERROR", payload: { code: "sim_io_estop", message_key: "sim.estop" } });
|
||||
assert.equal(errorState.status, "error");
|
||||
assert.equal(errorState.error, "sim_io_estop");
|
||||
console.log(`frontend_m2=passed commands=${calls.length}`);
|
||||
Reference in New Issue
Block a user