diff --git a/search-options-acc-3.json b/search-options-acc-3.json index 7f1b496..9741dbd 100644 --- a/search-options-acc-3.json +++ b/search-options-acc-3.json @@ -1,7 +1,7 @@ { "id": "search-options-acc-3", - "name": "검색 옵션 전수 테스트: 어음/추심/계좌/미수금/결제/지출예상 (3/10)", - "version": "1.0.0", + "name": "검색 옵션 전수 테스트: 어음/추심/계좌 (3/11)", + "version": "1.0.1", "auth": { "role": "admin" }, @@ -84,84 +84,6 @@ "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 - }, - { - "id": 12, - "name": "[회계관리 > 미수금현황] 메뉴 이동", - "action": "menu_navigate", - "level1": "회계관리", - "level2": "미수금현황" - }, - { - "id": 13, - "name": "[회계관리 > 미수금현황] 페이지 로드 대기", - "action": "wait", - "timeout": 3000 - }, - { - "id": 14, - "name": "[회계관리 > 미수금현황] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 - }, - { - "id": 15, - "name": "[회계관리 > 미수금현황] 검색 옵션 전수 테스트", - "action": "evaluate", - "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", - "timeout": 60000 - }, - { - "id": 16, - "name": "[회계관리 > 결제내역] 메뉴 이동", - "action": "menu_navigate", - "level1": "회계관리", - "level2": "결제내역" - }, - { - "id": 17, - "name": "[회계관리 > 결제내역] 페이지 로드 대기", - "action": "wait", - "timeout": 3000 - }, - { - "id": 18, - "name": "[회계관리 > 결제내역] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 - }, - { - "id": 19, - "name": "[회계관리 > 결제내역] 검색 옵션 전수 테스트", - "action": "evaluate", - "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", - "timeout": 60000 - }, - { - "id": 20, - "name": "[회계관리 > 지출예상내역서] 메뉴 이동", - "action": "menu_navigate", - "level1": "회계관리", - "level2": "지출예상내역서" - }, - { - "id": 21, - "name": "[회계관리 > 지출예상내역서] 페이지 로드 대기", - "action": "wait", - "timeout": 3000 - }, - { - "id": 22, - "name": "[회계관리 > 지출예상내역서] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 - }, - { - "id": 23, - "name": "[회계관리 > 지출예상내역서] 검색 옵션 전수 테스트", - "action": "evaluate", - "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", - "timeout": 60000 } ] } \ No newline at end of file diff --git a/search-options-acc-4.json b/search-options-acc-4.json new file mode 100644 index 0000000..5393600 --- /dev/null +++ b/search-options-acc-4.json @@ -0,0 +1,89 @@ +{ + "id": "search-options-acc-4", + "name": "검색 옵션 전수 테스트: 미수금/결제/지출예상 (4/11)", + "version": "1.0.1", + "auth": { + "role": "admin" + }, + "menuNavigation": { + "level1": "회계관리", + "level2": "미수금현황" + }, + "screenshotPolicy": { + "captureOnFail": true, + "captureOnPass": false + }, + "steps": [ + { + "id": 1, + "name": "[회계관리 > 미수금현황] 페이지 로드 대기", + "action": "wait", + "timeout": 3000 + }, + { + "id": 2, + "name": "[회계관리 > 미수금현황] 테이블 로드 대기", + "action": "wait_for_table", + "timeout": 5000 + }, + { + "id": 3, + "name": "[회계관리 > 미수금현황] 검색 옵션 전수 테스트", + "action": "evaluate", + "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", + "timeout": 60000 + }, + { + "id": 4, + "name": "[회계관리 > 결제내역] 메뉴 이동", + "action": "menu_navigate", + "level1": "회계관리", + "level2": "결제내역" + }, + { + "id": 5, + "name": "[회계관리 > 결제내역] 페이지 로드 대기", + "action": "wait", + "timeout": 3000 + }, + { + "id": 6, + "name": "[회계관리 > 결제내역] 테이블 로드 대기", + "action": "wait_for_table", + "timeout": 5000 + }, + { + "id": 7, + "name": "[회계관리 > 결제내역] 검색 옵션 전수 테스트", + "action": "evaluate", + "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", + "timeout": 60000 + }, + { + "id": 8, + "name": "[회계관리 > 지출예상내역서] 메뉴 이동", + "action": "menu_navigate", + "level1": "회계관리", + "level2": "지출예상내역서" + }, + { + "id": 9, + "name": "[회계관리 > 지출예상내역서] 페이지 로드 대기", + "action": "wait", + "timeout": 3000 + }, + { + "id": 10, + "name": "[회계관리 > 지출예상내역서] 테이블 로드 대기", + "action": "wait_for_table", + "timeout": 5000 + }, + { + "id": 11, + "name": "[회계관리 > 지출예상내역서] 검색 옵션 전수 테스트", + "action": "evaluate", + "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", + "timeout": 60000 + } + ] +} \ No newline at end of file diff --git a/search-options-production.json b/search-options-production.json index 66569e0..386e432 100644 --- a/search-options-production.json +++ b/search-options-production.json @@ -1,13 +1,13 @@ { "id": "search-options-production", - "name": "검색 옵션 전수 테스트: 생산/품목관리 (8/10)", - "version": "1.0.0", + "name": "검색 옵션 전수 테스트: 생산/품목관리 (8/11)", + "version": "1.0.1", "auth": { "role": "admin" }, "menuNavigation": { "level1": "생산관리", - "level2": "작업지시관리" + "level2": "품목관리" }, "screenshotPolicy": { "captureOnFail": true, @@ -16,71 +16,71 @@ "steps": [ { "id": 1, - "name": "[생산관리 > 작업지시관리] 페이지 로드 대기", + "name": "[생산관리 > 품목관리] 페이지 로드 대기", "action": "wait", "timeout": 3000 }, { "id": 2, - "name": "[생산관리 > 작업지시관리] 테이블 로드 대기", + "name": "[생산관리 > 품목관리] 테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { "id": 3, - "name": "[생산관리 > 작업지시관리] 검색 옵션 전수 테스트", + "name": "[생산관리 > 품목관리] 검색 옵션 전수 테스트", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 }, { "id": 4, - "name": "[생산관리 > 작업실적관리] 메뉴 이동", + "name": "[생산관리 > 작업지시 관리] 메뉴 이동", "action": "menu_navigate", "level1": "생산관리", - "level2": "작업실적관리" + "level2": "작업지시 관리" }, { "id": 5, - "name": "[생산관리 > 작업실적관리] 페이지 로드 대기", + "name": "[생산관리 > 작업지시 관리] 페이지 로드 대기", "action": "wait", "timeout": 3000 }, { "id": 6, - "name": "[생산관리 > 작업실적관리] 테이블 로드 대기", + "name": "[생산관리 > 작업지시 관리] 테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { "id": 7, - "name": "[생산관리 > 작업실적관리] 검색 옵션 전수 테스트", + "name": "[생산관리 > 작업지시 관리] 검색 옵션 전수 테스트", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 }, { "id": 8, - "name": "[생산관리 > 생산품목관리] 메뉴 이동", + "name": "[생산관리 > 작업실적] 메뉴 이동", "action": "menu_navigate", "level1": "생산관리", - "level2": "생산품목관리" + "level2": "작업실적" }, { "id": 9, - "name": "[생산관리 > 생산품목관리] 페이지 로드 대기", + "name": "[생산관리 > 작업실적] 페이지 로드 대기", "action": "wait", "timeout": 3000 }, { "id": 10, - "name": "[생산관리 > 생산품목관리] 테이블 로드 대기", + "name": "[생산관리 > 작업실적] 테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { "id": 11, - "name": "[생산관리 > 생산품목관리] 검색 옵션 전수 테스트", + "name": "[생산관리 > 작업실적] 검색 옵션 전수 테스트", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 @@ -136,32 +136,6 @@ "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 - }, - { - "id": 20, - "name": "[품목관리 > 품목관리] 메뉴 이동", - "action": "menu_navigate", - "level1": "품목관리", - "level2": "품목관리" - }, - { - "id": 21, - "name": "[품목관리 > 품목관리] 페이지 로드 대기", - "action": "wait", - "timeout": 3000 - }, - { - "id": 22, - "name": "[품목관리 > 품목관리] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 - }, - { - "id": 23, - "name": "[품목관리 > 품목관리] 검색 옵션 전수 테스트", - "action": "evaluate", - "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", - "timeout": 60000 } ] } \ No newline at end of file diff --git a/search-options-sales.json b/search-options-sales.json index 8a5cfec..f1fc590 100644 --- a/search-options-sales.json +++ b/search-options-sales.json @@ -1,13 +1,13 @@ { "id": "search-options-sales", - "name": "검색 옵션 전수 테스트: 판매관리/출고 (7/10)", - "version": "1.0.0", + "name": "검색 옵션 전수 테스트: 판매관리/출고 (7/11)", + "version": "1.0.1", "auth": { "role": "admin" }, "menuNavigation": { "level1": "판매관리", - "level2": "매출관리" + "level2": "거래처관리" }, "screenshotPolicy": { "captureOnFail": true, @@ -16,19 +16,19 @@ "steps": [ { "id": 1, - "name": "[판매관리 > 매출관리] 페이지 로드 대기", + "name": "[판매관리 > 거래처관리] 페이지 로드 대기", "action": "wait", "timeout": 3000 }, { "id": 2, - "name": "[판매관리 > 매출관리] 테이블 로드 대기", + "name": "[판매관리 > 거래처관리] 테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { "id": 3, - "name": "[판매관리 > 매출관리] 검색 옵션 전수 테스트", + "name": "[판매관리 > 거래처관리] 검색 옵션 전수 테스트", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 @@ -87,77 +87,51 @@ }, { "id": 12, - "name": "[판매관리 > 거래처관리] 메뉴 이동", - "action": "menu_navigate", - "level1": "판매관리", - "level2": "거래처관리" - }, - { - "id": 13, - "name": "[판매관리 > 거래처관리] 페이지 로드 대기", - "action": "wait", - "timeout": 3000 - }, - { - "id": 14, - "name": "[판매관리 > 거래처관리] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 - }, - { - "id": 15, - "name": "[판매관리 > 거래처관리] 검색 옵션 전수 테스트", - "action": "evaluate", - "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", - "timeout": 60000 - }, - { - "id": 16, "name": "[판매관리 > 단가관리] 메뉴 이동", "action": "menu_navigate", "level1": "판매관리", "level2": "단가관리" }, { - "id": 17, + "id": 13, "name": "[판매관리 > 단가관리] 페이지 로드 대기", "action": "wait", "timeout": 3000 }, { - "id": 18, + "id": 14, "name": "[판매관리 > 단가관리] 테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { - "id": 19, + "id": 15, "name": "[판매관리 > 단가관리] 검색 옵션 전수 테스트", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", "timeout": 60000 }, { - "id": 20, + "id": 16, "name": "[출고관리 > 출고관리] 메뉴 이동", "action": "menu_navigate", "level1": "출고관리", "level2": "출고관리" }, { - "id": 21, + "id": 17, "name": "[출고관리 > 출고관리] 페이지 로드 대기", "action": "wait", "timeout": 3000 }, { - "id": 22, + "id": 18, "name": "[출고관리 > 출고관리] 테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { - "id": 23, + "id": 19, "name": "[출고관리 > 출고관리] 검색 옵션 전수 테스트", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname,tests:[]};const rc=()=>document.querySelectorAll('table tbody tr').length;const w=ms=>new Promise(r=>setTimeout(r,ms));const sv=(el,v)=>{const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(el,v);else el.value=v;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));};const ss=['input[placeholder*=\"검색\"]','input[type=\"search\"]','input[role=\"searchbox\"]'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}R.search=!!si;R.ph=si?si.placeholder?.substring(0,60):'';const init=rc();R.rows=init;if(si&&init>0){sv(si,'zzz_nomatch_e2e');si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));await w(1500);const a=rc();R.tests.push({t:'noMatch',b:init,a,ok:ao.innerText?.trim());R.tests.push({t:'dd'+i+'_o',dv,opts,n:opts.length});document.dispatchEvent(new KeyboardEvent('keydown',{key:'Escape',bubbles:true}));await w(300);if(opts.length>1){const b=rc();cb.click();await w(500);const lb2=document.querySelector('[role=\"listbox\"]');if(lb2){const ao=Array.from(lb2.querySelectorAll('[role=\"option\"]'));const nd=ao.find(o=>o.innerText?.trim()!==dv)||ao[1];if(nd){const st=nd.innerText?.trim();nd.click();await w(1200);const af=rc();R.tests.push({t:'dd'+i+'_s',s:st,b,a:af,c:af!==b});cb.click();await w(500);const lb3=document.querySelector('[role=\"listbox\"]');if(lb3){const f=lb3.querySelector('[role=\"option\"]');if(f)f.click();await w(800);}}}}}const tb=Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.trim()==='오늘');if(tb){const b=rc();tb.click();await w(1200);const a=rc();R.tests.push({t:'today',b,a,c:a!==b});}R.sum={dd:cbs.length,opts:R.tests.filter(t=>t.n).reduce((s,t)=>s+t.n,0),tested:R.tests.filter(t=>t.t?.includes('_s')).length,changed:R.tests.filter(t=>t.t?.includes('_s')&&t.c).length,searchOk:R.tests.find(t=>t.t==='noMatch')?.ok??null};return JSON.stringify(R);})()", diff --git a/search-options-settings.json b/search-options-settings.json index 4d20c48..ecb9539 100644 --- a/search-options-settings.json +++ b/search-options-settings.json @@ -1,7 +1,7 @@ { "id": "search-options-settings", - "name": "검색 옵션 전수 테스트: 설정 (10/10)", - "version": "1.0.0", + "name": "검색 옵션 전수 테스트: 설정 (10/11)", + "version": "1.0.1", "auth": { "role": "admin" }, @@ -100,9 +100,9 @@ }, { "id": 14, - "name": "[설정 > 직급관리] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 + "name": "[설정 > 직급관리] 콘텐츠 로드 대기", + "action": "wait", + "timeout": 3000 }, { "id": 15, @@ -126,9 +126,9 @@ }, { "id": 18, - "name": "[설정 > 권한관리] 테이블 로드 대기", - "action": "wait_for_table", - "timeout": 5000 + "name": "[설정 > 권한관리] 콘텐츠 로드 대기", + "action": "wait", + "timeout": 3000 }, { "id": 19,