{ "enabled": true, "id": "search-function-audit-acc2-hr", "name": "검색 기능 감사: 회계관리2+인사관리 (2/6)", "description": "회계관리 나머지 + 인사관리 모듈의 검색/필터 기능 동작 검증", "baseUrl": "https://dev.codebridge-x.com", "screenshotPolicy": { "onErrorOnly": true, "captureOn": [ "error", "fail", "timeout" ] }, "menuNavigation": { "level1": "회계관리", "level2": "지출예상내역서", "searchWithinParent": true, "closeOtherMenus": true }, "auth": { "username": "TestUser5", "password": "password123!" }, "steps": [ { "id": 1, "name": "[검색감사] 지출예상내역서 페이지 대기", "action": "wait", "duration": 2000 }, { "id": 2, "name": "[검색감사] 지출예상내역서", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 3, "name": "▶ 회계관리 > 결제내역 이동", "action": "menu_navigate", "level1": "회계관리", "level2": "결제내역" }, { "id": 4, "name": "[검색감사] 결제내역", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 5, "name": "▶ 회계관리 > 거래처원장 이동", "action": "menu_navigate", "level1": "회계관리", "level2": "거래처원장" }, { "id": 6, "name": "[검색감사] 거래처원장", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 7, "name": "▶ 인사관리 > 사원관리 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "사원관리" }, { "id": 8, "name": "[검색감사] 사원관리", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 9, "name": "▶ 인사관리 > 부서관리 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "부서관리" }, { "id": 10, "name": "[검색감사] 부서관리", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 11, "name": "▶ 인사관리 > 급여관리 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "급여관리" }, { "id": 12, "name": "[검색감사] 급여관리", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 13, "name": "▶ 인사관리 > 근태관리 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "근태관리" }, { "id": 14, "name": "[검색감사] 근태관리", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 15, "name": "▶ 인사관리 > 근태현황 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "근태현황" }, { "id": 16, "name": "[검색감사] 근태현황", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 17, "name": "▶ 인사관리 > 카드관리 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "카드관리" }, { "id": 18, "name": "[검색감사] 카드관리", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" }, { "id": 19, "name": "▶ 인사관리 > 휴가관리 이동", "action": "menu_navigate", "level1": "인사관리", "level2": "휴가관리" }, { "id": 20, "name": "[검색감사] 휴가관리", "action": "evaluate", "script": "(async()=>{const R={p:location.pathname};const ss=['input[type=\"search\"]','input[placeholder*=\"검색\"]','input[placeholder*=\"Search\"]','input[role=\"searchbox\"]','[class*=\"search\"] input'];let si=null;for(const s of ss){si=document.querySelector(s);if(si)break;}if(!si) si=Array.from(document.querySelectorAll('input[type=\"text\"],input:not([type])')).find(i=>/검색|search|조회/i.test(i.placeholder||''));R.hasSearch=!!si;R.searchPlaceholder=si?(si.placeholder||'').substring(0,40):'';R.filters=document.querySelectorAll('button[role=\"combobox\"],select').length;R.tabs=document.querySelectorAll('[role=\"tab\"],[role=\"tablist\"] button').length;const rc=()=>document.querySelectorAll('table tbody tr,[role=\"row\"]').length;R.rows=rc();R.hasTable=R.rows>0||!!document.querySelector('table,[role=\"grid\"]');if(si&&R.rows>0){const ns=Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value')?.set;if(ns)ns.call(si,'zzz_no_match_e2e');else si.value='zzz_no_match_e2e';si.dispatchEvent(new Event('input',{bubbles:true}));si.dispatchEvent(new Event('change',{bubbles:true}));si.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true}));const sb=document.querySelector('button[class*=\"search\"],button[aria-label*=\"검색\"]');if(sb)sb.click();await new Promise(w=>setTimeout(w,1500));R.afterRows=rc();R.searchWorked=R.afterRowssetTimeout(w,800));}return JSON.stringify(R);})()" } ] }