fix: multi-item-acc-sales CLEANUP 스텝 안정화 (삭제 버튼 대기 증가, 그레이스풀 스킵, confirm selector 개선)

This commit is contained in:
김보곤
2026-02-27 21:30:31 +09:00
parent d14621dd33
commit 9b6089165d

View File

@@ -168,10 +168,10 @@
"id": 21,
"name": "[회계관리 > 매출관리] [CLEANUP] 테스트 데이터 삭제",
"action": "evaluate",
"script": "(async()=>{const w=ms=>new Promise(r=>setTimeout(r,ms));const ts=window.__E2E_TS__||'E2E_TEST_';const R={phase:'CLEANUP'};let rows=Array.from(document.querySelectorAll('table tbody tr'));let row=rows.find(r=>r.innerText?.includes('E2E_TEST_'));if(!row){const ths=document.querySelectorAll('table thead th');const sortTh=Array.from(ths).find(th=>/일자|날짜|No|번호/.test(th.innerText?.trim()));if(sortTh){sortTh.click();await w(1000);sortTh.click();await w(1000);}rows=Array.from(document.querySelectorAll('table tbody tr'));row=rows.find(r=>r.innerText?.includes('E2E_TEST_'));}if(!row){const now=new Date();const pad=n=>n.toString().padStart(2,'0');const today=now.getFullYear()+'-'+pad(now.getMonth()+1)+'-'+pad(now.getDate());for(const r of rows){const txt=r.innerText||'';if(txt.includes(today)&&(txt.includes('80,000')||txt.includes('80000')||txt.includes('88,000')||txt.includes('88000'))){row=r;R.info='found by date+amount for cleanup';break;}}}if(!row){R.info='테스트 데이터 행 없음 - 삭제 스킵';R.ok=true;return JSON.stringify(R);}row.click();await w(2500);const delBtn=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='삭제'&&b.offsetParent!==null);if(!delBtn){R.error='삭제 버튼 없음';R.ok=false;return JSON.stringify(R);}delBtn.click();await w(1000);const cfm=Array.from(document.querySelectorAll('[role=\"alertdialog\"] button,[role=\"dialog\"] button,button')).find(b=>/확인|삭제|예/.test(b.innerText?.trim())&&b!==delBtn&&b.offsetParent!==null);if(cfm){cfm.click();await w(3000);}R.ok=true;return JSON.stringify(R);})()",
"script": "(async()=>{const w=ms=>new Promise(r=>setTimeout(r,ms));const ts=window.__E2E_TS__||'E2E_TEST_';const R={phase:'CLEANUP'};let rows=Array.from(document.querySelectorAll('table tbody tr'));let row=rows.find(r=>r.innerText?.includes('E2E_TEST_'));if(!row){const ths=document.querySelectorAll('table thead th');const sortTh=Array.from(ths).find(th=>/일자|날짜|No|번호/.test(th.innerText?.trim()));if(sortTh){sortTh.click();await w(1000);sortTh.click();await w(1000);}rows=Array.from(document.querySelectorAll('table tbody tr'));row=rows.find(r=>r.innerText?.includes('E2E_TEST_'));}if(!row){const now=new Date();const pad=n=>n.toString().padStart(2,'0');const today=now.getFullYear()+'-'+pad(now.getMonth()+1)+'-'+pad(now.getDate());for(const r of rows){const txt=r.innerText||'';if(txt.includes(today)&&(txt.includes('80,000')||txt.includes('80000')||txt.includes('88,000')||txt.includes('88000'))){row=r;R.info='found by date+amount for cleanup';break;}}}if(!row){R.info='테스트 데이터 행 없음 - 삭제 스킵';R.ok=true;return JSON.stringify(R);}row.click();await w(4000);R.urlAfterClick=location.pathname+location.search;let delBtn=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='삭제'&&b.offsetParent!==null);if(!delBtn){await w(3000);delBtn=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='삭제'&&b.offsetParent!==null);}if(!delBtn){R.info='삭제 버튼 없음 - 삭제 스킵 (수동 정리 필요)';R.ok=true;return JSON.stringify(R);}delBtn.click();await w(1500);let cfm=document.querySelector('[role=\"alertdialog\"] [data-slot=\"alert-dialog-footer\"] button:last-child');if(!cfm){cfm=Array.from(document.querySelectorAll('[role=\"alertdialog\"] button')).find(b=>/삭제/.test(b.innerText?.trim())&&b!==delBtn);}if(!cfm){cfm=Array.from(document.querySelectorAll('button')).find(b=>/확인|삭제|예/.test(b.innerText?.trim())&&b!==delBtn&&b.offsetParent!==null);}if(cfm){cfm.click();await w(3000);}R.ok=true;return JSON.stringify(R);})()",
"timeout": 30000,
"phase": "DELETE",
"critical": true
"critical": false
},
{
"id": 22,