feat: refocus acoustic camera workflow

This commit is contained in:
Codex
2026-08-28 18:08:52 +09:00
parent fd3d98947a
commit bc63ada1cd
3 changed files with 622 additions and 249 deletions
+30
View File
@@ -60,9 +60,27 @@ test("Acoustic Camera가 8×8 CPU 실행·결과 저장·stale·재실행 흐름
"기본 Camera 입력 검증",
);
const workflowSteps = [...documentObject.querySelectorAll("#camera-workflow [data-workflow-step]")];
assertEqual(workflowSteps.length, 4, "four-step workflow is discoverable");
assertEqual(
workflowSteps.map((step) => step.dataset.workflowStep).join(","),
"1,2,3,4",
"workflow order",
);
assert(documentObject.querySelector("#input-step").textContent.includes("입력 준비"), "input step label");
assert(documentObject.querySelector("#configure-step").textContent.includes("분석 설정"), "configure step label");
assert(documentObject.querySelector("#run-step").textContent.includes("실행 방식"), "run step label");
assert(documentObject.querySelector("#inspect-step").textContent.includes("결과 확인"), "inspect step label");
assert(documentObject.querySelector("#snapshot-mode").contains(documentObject.querySelector("#run-button")), "snapshot action is grouped with snapshot mode");
assert(documentObject.querySelector("#moving-mode").contains(documentObject.querySelector("#prepare-live-button")), "live action is grouped with moving mode");
assert(!documentObject.querySelector("#advanced-settings").open, "advanced settings start collapsed");
assert(!documentObject.querySelector("#array-details").open, "array developer detail starts collapsed");
assert(!documentObject.querySelector("#camera-help").open, "limitations help starts collapsed");
const canvas = documentObject.querySelector("#scene-canvas");
await waitFor(() => canvas.width > 0 && canvas.height > 0, "scene canvas 초기 렌더");
await nextPaint(windowObject);
assert(canvas.getBoundingClientRect().height >= 500, "scene canvas remains the dominant workspace");
const initialCanvas = canvas.toDataURL();
dispatchValue(windowObject, documentObject.querySelector("#scan-columns"), 8);
@@ -208,6 +226,18 @@ test("Acoustic Camera가 8×8 CPU 실행·결과 저장·stale·재실행 흐름
"final Camera documents saved",
);
assertEqual(documentObject.documentElement.dataset.unsavedWork, "", "all Camera work is saved");
frame.style.width = "390px";
await nextPaint(windowObject);
assert(
documentObject.documentElement.scrollWidth <= documentObject.documentElement.clientWidth + 1,
"compact Camera layout has no horizontal overflow",
);
const finalWorkflowStep = workflowSteps.at(-1).getBoundingClientRect();
assert(
finalWorkflowStep.right <= documentObject.documentElement.clientWidth + 1,
"all workflow steps remain visible on a compact viewport",
);
} finally {
windowObject.confirm = originalConfirm;
windowObject.HTMLAnchorElement.prototype.click = originalAnchorClick;