121 lines
3.7 KiB
JSON
121 lines
3.7 KiB
JSON
{
|
|
"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": "조회 전용 페이지로 데이터 변경 없음"
|
|
}
|
|
}
|