ae7daabae5
드래그가 브라우저에서 먹지 않던 문제를 추정 대신 실패 가능 지점별로 전부 막았다. - dragstart 리스너를 카드 요소에 직접 바인딩(위임으로는 잡히지 않는 환경 대비). 렌더할 때마다 다시 바인딩한다. - dragenter/dragover 를 모두 preventDefault — 하나만 막으면 드롭을 거부하는 브라우저가 있다. - 드롭 대상 범위를 ③ 카드 전체로 확대하고, 대상 패널은 closest → elementFromPoint → (센터가 하나면) 그 센터 순으로 찾는다. 패널 사이 여백에 놓아도 담긴다. - dataTransfer.setData/getData 가 막힌 환경 대비로 dragKey 를 따로 보관해 드롭 시 사용한다. 그래도 못 읽으면 클릭으로 담으라는 안내를 띄운다. - 드래그 중에는 ③ 영역에 점선 강조를 준다. - 드래그 직후 발생하는 click 은 무시해 대화상자가 두 번 뜨지 않게 한다. 센터 선택 목록은 이름 가나다순 정렬(한글 음절은 코드포인트 순). tests/js: 여백 드롭·dragenter·setData 차단 환경 시나리오 추가. 전체 통과. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
박스 계산 화면 UI 테스트 (jsdom)
app/modules/cupang/templates/cupang/box_calc.html 의 드래그 분배·수량 대화상자·
잔여 계산을 브라우저 없이 검증한다. 서버 API 응답은 고정값으로 대체한다.
# 1) 템플릿을 HTML 로 렌더 (프로젝트 루트에서)
python tests/js/render_box_calc.py # → tests/js/.out/box_calc_render.html
# 2) jsdom 설치 후 실행
npm install jsdom
node tests/js/box_calc_ui.test.js
성공하면 마지막 줄에 ALL PASS, 실패하면 실패한 항목명이 출력되고 종료코드 1.