对齐 gmoccapy XYZAB 模式互锁

This commit is contained in:
2026-06-26 18:19:49 -04:00
parent 0664ea9bd7
commit 544bfd4b4b
13 changed files with 591 additions and 6 deletions

View File

@@ -303,6 +303,38 @@
if (!doc.querySelector('[data-machine-state="summary"]')?.textContent.includes("power off")) {
throw new Error("initial machine state should show power off");
}
const initialModeManualButton = doc.querySelector('[data-action="mode-manual"]');
const initialModeJogButton = doc.querySelector('[data-action="mode-jog"]');
const initialModeAutoButton = doc.querySelector('[data-action="mode-auto"]');
const initialModeMdiButton = doc.querySelector('[data-action="mode-mdi"]');
if (
!initialModeManualButton?.disabled ||
initialModeManualButton.dataset.commandReady !== "false" ||
initialModeManualButton.getAttribute("aria-disabled") !== "true"
) {
throw new Error("MANUAL mode button should be disabled before machine power on");
}
if (
!initialModeJogButton?.disabled ||
initialModeJogButton.dataset.commandReady !== "false" ||
initialModeJogButton.getAttribute("aria-disabled") !== "true"
) {
throw new Error("JOG mode button should be disabled before machine power on");
}
if (
!initialModeAutoButton?.disabled ||
initialModeAutoButton.dataset.commandReady !== "false" ||
initialModeAutoButton.getAttribute("aria-disabled") !== "true"
) {
throw new Error("AUTO mode button should be disabled before machine power on");
}
if (
!initialModeMdiButton?.disabled ||
initialModeMdiButton.dataset.commandReady !== "false" ||
initialModeMdiButton.getAttribute("aria-disabled") !== "true"
) {
throw new Error("MDI mode button should be disabled before machine power on");
}
const initiallyBlockedRunButton = doc.querySelector('[data-action="RUN"]');
if (
@@ -325,8 +357,44 @@
if (!doc.querySelector('[data-machine-state="summary"]')?.textContent.includes("power on")) {
throw new Error("machine state did not render power on");
}
const unhomedModeManualButton = doc.querySelector('[data-action="mode-manual"]');
const unhomedModeJogButton = doc.querySelector('[data-action="mode-jog"]');
const unhomedModeAutoButton = doc.querySelector('[data-action="mode-auto"]');
const unhomedModeMdiButton = doc.querySelector('[data-action="mode-mdi"]');
if (
unhomedModeManualButton?.disabled ||
unhomedModeManualButton.dataset.commandReady !== "true" ||
unhomedModeJogButton?.disabled ||
unhomedModeJogButton.dataset.commandReady !== "true"
) {
throw new Error("MANUAL and JOG mode buttons should be enabled after power on");
}
if (
!unhomedModeAutoButton?.disabled ||
unhomedModeAutoButton.dataset.commandReady !== "false" ||
!unhomedModeAutoButton.title.includes("home machine before AUTO")
) {
throw new Error("AUTO mode button should remain disabled until homed");
}
if (
!unhomedModeMdiButton?.disabled ||
unhomedModeMdiButton.dataset.commandReady !== "false" ||
!unhomedModeMdiButton.title.includes("home machine before MDI")
) {
throw new Error("MDI mode button should remain disabled until homed");
}
doc.querySelector('[data-action="HOME"]').click();
await wait(50);
const homedModeAutoButton = doc.querySelector('[data-action="mode-auto"]');
const homedModeMdiButton = doc.querySelector('[data-action="mode-mdi"]');
if (
homedModeAutoButton?.disabled ||
homedModeAutoButton.dataset.commandReady !== "true" ||
homedModeMdiButton?.disabled ||
homedModeMdiButton.dataset.commandReady !== "true"
) {
throw new Error("AUTO and MDI mode buttons should be enabled after homing");
}
doc.querySelector('[data-action="mode-auto"]').click();
await wait(50);
if (!doc.querySelector('[data-linuxcnc-task-policy="gates"]')?.textContent.includes("auto")) {