{ "id": "payment-history", "name": "결제내역 테스트", "screenshotPolicy": { "onErrorOnly": true, "captureOn": ["error", "fail", "timeout", "404", "500", "blocked"] }, "description": "회계관리 > 결제내역 메뉴의 결제 내역 조회 기능 테스트", "baseUrl": "https://dev.codebridge-x.com", "menuNavigation": { "level1": "회계관리", "level2": "결제내역", "expectedUrl": "/payment-history", "searchWithinParent": true, "closeOtherMenus": true }, "auth": { "username": "TestUser5", "password": "password123!" }, "selectors": { "pageTitle": "h1, h2, [class*='title'], [class*='Title']", "dataTable": "table, [role='grid'], [class*='table'], [class*='Table']", "tableHeader": "table thead th, table th, [role='columnheader']", "tableRow": "table tbody tr, [role='row']:not(:first-child)", "pagination": "[class*='pagination'], [class*='Pagination'], nav[aria-label*='page'], [class*='pager']", "emptyMessage": "[class*='empty'], [class*='no-data'], [class*='noData']" }, "steps": [ { "id": 0, "name": "사이드바 메뉴 전체 펼치기", "actions": [ { "type": "evaluate", "script": "document.querySelector('.sidebar-scroll')?.scrollTo({top:0,behavior:'instant'})" }, { "type": "wait", "duration": 300 }, { "type": "evaluate", "script": "Array.from(document.querySelectorAll('button')).find(b => b.innerText?.includes('모두 펼치기'))?.click()" }, { "type": "wait", "duration": 2000 } ] }, { "id": 1, "name": "2단계 메뉴 진입: 회계관리 > 결제내역", "action": "menu_navigate", "level1": "회계관리", "level2": "결제내역", "expected": { "url_contains": "/payment" } }, { "id": 2, "name": "페이지 로드 및 404 확인", "action": "verify_url_stability", "verification": { "expected_url": "/payment" } }, { "id": 3, "name": "페이지 제목 확인", "action": "evaluate", "script": "(() => { const title = document.querySelector('h1, h2, [class*=\"title\"]'); return title && (title.innerText.includes('결제') || title.innerText.includes('Payment')); })()" }, { "id": 4, "name": "테이블 구조 존재 확인", "action": "verify_element", "target": "dataTable" }, { "id": 5, "name": "테이블 헤더 컬럼 확인", "action": "verify_element", "target": "tableHeader", "verification": { "count": 1 } }, { "id": 6, "name": "데이터 행 또는 빈 메시지 확인", "action": "evaluate", "script": "(() => { const rows = document.querySelectorAll('table tbody tr, [role=\"row\"]:not(:first-child)'); const empty = document.body.innerText.includes('데이터') && document.body.innerText.includes('없'); return rows.length > 0 || empty; })()" }, { "id": 7, "name": "페이지네이션 존재 확인", "action": "verify_element", "target": "pagination" }, { "id": 8, "name": "콘솔 에러 없음 확인", "action": "evaluate", "script": "true" }, { "id": 9, "name": "최종 URL 안정성 확인", "action": "verify_url_stability", "verification": { "expected_url": "/payment" } } ], "expectedAPIs": [ { "method": "GET", "endpoint": "/api/v1/accounting/payments", "description": "결제 내역 목록 조회" } ], "rollbackPlan": { "note": "조회 전용 페이지로 데이터 변경 없음" } }