{ "id": "payment-history", "name": "결제내역 테스트", "screenshotPolicy": { "onErrorOnly": true, "captureOn": ["error", "fail", "timeout", "404", "500", "blocked"] }, "description": "회계관리 > 결제내역 메뉴의 결제 내역 조회 기능 테스트", "baseUrl": "https://dev.codebridge-x.com", "url": "/payment-history", "navigation": { "targetUrl": "/payment-history", "urlPattern": "/payment-history|/ko/payment-history", "menuHints": ["결제내역", "결제 내역", "회계관리"] }, "menuNavigation": { "level1": "회계관리", "level2": "결제내역", "expectedUrl": "/payment-history", "searchWithinParent": true, "closeOtherMenus": true }, "auth": { "username": "TestUser5", "password": "password123!" }, "menuNavigationEnhanced": { "strategy": "scroll-and-search", "description": "사이드바를 스크롤하며 메뉴를 찾고 클릭하여 404를 방지", "level1": "회계관리", "level2": "결제내역", "alternativeLevel1Names": ["회계관리", "회계 관리", "Accounting", "재무관리"], "alternativeLevel2Names": ["결제내역", "결제 내역", "Payment History", "결제이력"], "fallbackUrls": [ "/payment-history", "/accounting/payment-history", "/ko/payment-history" ], "scrollConfig": { "sidebarSelector": "nav, aside, [role='navigation'], .sidebar, #sidebar, .sidebar-scroll", "menuItemSelector": "a, button, [role='menuitem'], [role='treeitem'], span", "scrollStep": 200, "maxScrollAttempts": 10, "scrollDelay": 300 } }, "testFocus": { "primary": "결제 내역 데이터 표시 및 조회 기능 검증", "description": "결제 내역 테이블 표시, 검색, 필터, 페이지네이션 동작 확인" }, "prerequisites": { "authentication": true, "testData": { "description": "결제 내역 데이터가 최소 1개 이상 존재해야 함" } }, "expectedAPIs": [ { "method": "GET", "endpoint": "/api/v1/accounting/payments", "params": "page=1&per_page=20", "description": "결제 내역 목록 조회" } ], "steps": [ { "id": 0, "name": "사이드바 메뉴 전체 펼치기", "description": "모두 펼치기 버튼을 클릭하여 전체 메뉴를 펼친 후 메뉴 탐색 준비", "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 } ], "verification": [ "사이드바가 화면에 보이는지 확인", "회계관리 메뉴가 보이는지 확인" ] }, { "id": 1, "name": "1차 메뉴 찾기: 회계관리", "description": "사이드바에서 '회계관리' 메뉴를 찾아 클릭", "actions": [ { "type": "scrollAndFind", "target": "회계관리", "alternativeTexts": ["회계관리", "회계 관리", "Accounting"], "scrollContainer": "sidebar", "maxAttempts": 10, "description": "스크롤하며 회계관리 메뉴 찾기" }, { "type": "click", "target": "회계관리", "description": "회계관리 메뉴 클릭" }, { "type": "wait", "duration": 500, "description": "서브메뉴 펼쳐지기 대기" } ], "verification": [ "회계관리 메뉴가 클릭되었는지 확인", "서브메뉴가 펼쳐졌는지 확인" ] }, { "id": 2, "name": "2차 메뉴 찾기: 결제내역", "description": "서브메뉴에서 '결제내역'을 찾아 클릭", "actions": [ { "type": "scrollAndFind", "target": "결제내역", "alternativeTexts": ["결제내역", "결제 내역", "Payment History"], "scrollContainer": "submenu", "maxAttempts": 5, "description": "서브메뉴에서 결제내역 찾기" }, { "type": "click", "target": "결제내역", "description": "결제내역 메뉴 클릭" }, { "type": "wait", "target": "페이지 로드 완료", "timeout": 10000 } ], "verification": [ "결제내역 메뉴 클릭 성공", "페이지 이동 완료" ] }, { "id": 3, "name": "404 에러 감지", "description": "페이지 로드 후 404 에러 여부 확인", "actions": [ { "type": "wait", "duration": 1000 }, { "type": "checkFor404", "indicators": [ "페이지를 찾을 수 없습니다", "404", "Not Found", "존재하지 않거나" ]} ], "verification": [ "404 에러 메시지가 없는지 확인" ] }, { "id": 4, "name": "페이지 정상 로드 확인", "description": "결제내역 페이지가 정상적으로 로드되었는지 확인", "actions": [ { "type": "verify", "target": "pageTitle", "contains": ["결제내역", "결제 내역", "Payment"] }, { "type": "verify", "target": "pageContent", "notContains": ["404", "찾을 수 없습니다", "Not Found"] } ], "verification": [ "페이지 제목 '결제내역' 표시", "404 에러 메시지 미표시" ], "successCriteria": { "urlPattern": "/accounting/payment", "requiredElements": ["결제", "내역"] } }, { "id": 5, "name": "페이지 구조 확인", "description": "페이지 타이틀, 설명 확인", "actions": [ { "type": "verify", "target": "페이지 구조" } ], "expected": { "pageTitle": "결제내역", "pageDescription": "결제 내역을 확인합니다" } }, { "id": 6, "name": "테이블 구조 확인", "description": "결제 내역 테이블의 컬럼 헤더 확인", "actions": [ { "type": "verify", "target": "table columns" } ], "expected": { "tableExists": true, "hasColumns": true } }, { "id": 7, "name": "데이터 로드 확인", "description": "결제 내역 데이터가 테이블에 표시되는지 확인", "actions": [ { "type": "verify", "target": "table data" } ], "expected": { "dataExists": "데이터 행 존재 또는 '데이터가 없습니다' 메시지" } }, { "id": 8, "name": "페이지네이션 확인", "description": "테이블 하단에 페이지네이션이 표시되는지 확인", "actions": [ { "type": "verify", "target": "pagination component" } ], "expected": { "paginationExists": true } }, { "id": 9, "name": "콘솔 에러 확인", "description": "페이지 동작 중 콘솔에 에러가 발생하지 않는지 확인", "actions": [ { "type": "verify", "target": "console errors" } ], "expected": { "noErrors": "콘솔 에러 없음" } } ], "cleanup": { "description": "테스트 후 정리 작업 (없음)", "actions": [] }, "notes": [ "직접 URL 접근 금지: 반드시 메뉴 클릭으로 페이지 진입 (404 방지)", "스크롤 필수: 회계관리 메뉴는 사이드바 하단에 위치", "메뉴 계층: 회계관리 > 결제내역" ] }