From 848f8bbc931663547e5f18a17d9bc5c731e5ccb5 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 5 Oct 2026 00:33:02 +0900 Subject: [PATCH] =?UTF-8?q?test(M02):=20=ED=99=94=EB=A9=B4=20=EC=8B=9C?= =?UTF-8?q?=EB=82=98=EB=A6=AC=EC=98=A4=2043-6=20=EB=8F=84=EB=A9=B4=20?= =?UTF-8?q?=ED=91=9C=20=EC=84=A0=20=EC=83=89=20=E2=80=94=20orca=20eval=20?= =?UTF-8?q?=ED=95=9C=20=EB=B2=88=20=C2=B7=20=EB=86=93=EA=B8=B0=20=E2=86=92?= =?UTF-8?q?=20=EC=A0=80=EC=9E=A5=20JSON=20=EC=84=A0=20=EC=83=89=20=C2=B7?= =?UTF-8?q?=20=EB=90=98=EB=8F=8C=EB=A6=BC=20(43-6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01UoSr2sqvYtBf1dtQdus88s --- .../tester/ui_checks/43-6_도면표_선색.js | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 resources/tester/ui_checks/43-6_도면표_선색.js diff --git a/resources/tester/ui_checks/43-6_도면표_선색.js b/resources/tester/ui_checks/43-6_도면표_선색.js new file mode 100644 index 000000000..15e939a3f --- /dev/null +++ b/resources/tester/ui_checks/43-6_도면표_선색.js @@ -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, + }); +})();