test(M02): 화면 시나리오 43-6 도면 표 선 색 — orca eval 한 번 · 놓기 → 저장 JSON 선 색 · 되돌림 (43-6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UoSr2sqvYtBf1dtQdus88s
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
/* 43-6 도면 표 선 색(흠 E2) — orca eval 한 번에 도는 시나리오(읽기만 · 저장 안 함).
|
||||
* 시작 화면: M02 · 시스템 관리자 · 구조물 도면 상세(마스터 item1 · CAD 열림 · 보기 전용 아님).
|
||||
* 하는 일: 면적산출 범위 → 표 변환(POST …/area/item1/table · 답에 lineColor 없음) → CAD 에 place-table →
|
||||
* 커서 옮김 → 누름(놓기) → save-request 로 CAD 도면 JSON 받음 → Ctrl+Z 로 되돌림.
|
||||
* 기대: 변환 답 lineColor 없음(answerHasColor false) · 놓인 표 1 · 저장 JSON 표 lineColor = "#fff" ·
|
||||
* lineWidth 1 · id 있음 · 되돌린 뒤 표 수 = 시작 수.
|
||||
*/
|
||||
(async () => {
|
||||
const W = (t) => new Promise((r) => setTimeout(r, t));
|
||||
const f = document.querySelector("iframe");
|
||||
const w = f.contentWindow;
|
||||
const cad = w.__aisloCad;
|
||||
const before = cad.entities().filter((e) => e.type === "Table").length;
|
||||
const area = await (
|
||||
await fetch("/api/m02/layers/system/templates/area/item1", { credentials: "include" })
|
||||
).json();
|
||||
const sheet = area.문서.시트[0].id;
|
||||
const got = await (
|
||||
await fetch("/api/m02/layers/system/area/item1/table", {
|
||||
method: "POST",
|
||||
credentials: "include",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ 시트: sheet, 범위: "A1:B2", 글자크기: 2.5 }),
|
||||
})
|
||||
).json();
|
||||
const entity = got.표;
|
||||
w.postMessage({ type: "aislo:b08:place-table", entity, link: "T43" }, location.origin);
|
||||
await W(600);
|
||||
const c = f.contentDocument.querySelector("canvas");
|
||||
const r = c.getBoundingClientRect();
|
||||
const at = { bubbles: true, button: 0, clientX: r.left + 320, clientY: r.top + 260 };
|
||||
c.dispatchEvent(new MouseEvent("mousemove", at));
|
||||
await W(window.__hold ?? 300); // 사진 찍을 때는 __hold 를 늘림
|
||||
c.dispatchEvent(new MouseEvent("mousedown", at));
|
||||
c.dispatchEvent(new MouseEvent("mouseup", at));
|
||||
await W(500);
|
||||
const placed = cad.entities().filter((e) => e.type === "Table").length - before;
|
||||
let saved = null;
|
||||
const take = (e) => {
|
||||
if (e.data && e.data.type === "aislo:b08:save-response") saved = e.data.drawing;
|
||||
};
|
||||
window.addEventListener("message", take);
|
||||
w.postMessage({ type: "aislo:b08:save-request" }, location.origin);
|
||||
await W(1000);
|
||||
window.removeEventListener("message", take);
|
||||
const table = (saved?.entities ?? []).find(
|
||||
(e) => e.type === "Table" && e.shapeData?.style?.연결 === "T43",
|
||||
);
|
||||
f.contentDocument.body.dispatchEvent(
|
||||
new KeyboardEvent("keydown", {
|
||||
key: "z",
|
||||
code: "KeyZ",
|
||||
ctrlKey: true,
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
}),
|
||||
);
|
||||
await W(400);
|
||||
return JSON.stringify({
|
||||
answerHasColor: "lineColor" in entity,
|
||||
placed,
|
||||
lineColor: table?.lineColor ?? null,
|
||||
lineWidth: table?.lineWidth ?? null,
|
||||
hasId: !!table?.id,
|
||||
afterUndo: cad.entities().filter((e) => e.type === "Table").length === before,
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user