{ "id": "bank-transactions", "name": "은행거래 테스트", "screenshotPolicy": { "onErrorOnly": true, "captureOn": ["error", "fail", "timeout", "404", "500", "blocked"] }, "description": "은행거래 목록 조회 및 기간별 데이터 필터링 E2E 테스트", "baseUrl": "https://dev.codebridge-x.com", "url": "/ko/accounting/bank-transactions", "menuNavigation": { "level1": "회계관리", "level2": "입출금계좌조회", "expectedUrl": "/ko/accounting/bank-transactions" }, "menuNavigationEnhanced": { "strategy": "scroll-and-search", "sidebarSelector": ".sidebar-scroll, [class*='sidebar'], nav[class*='menu']", "scrollConfig": { "scrollToTopFirst": true, "scrollStep": 200, "maxScrollAttempts": 10, "scrollDelay": 300 }, "level1": { "text": "회계관리", "fallbackSelectors": [ "//span[contains(text(),'회계관리')]", "//div[contains(text(),'회계관리')]", "[data-menu='accounting']" ] }, "level2": { "text": "은행거래", "fallbackSelectors": [ "//span[contains(text(),'은행거래')]", "//a[contains(text(),'은행거래')]", "[href*='bank-transactions']" ] }, "verification": { "expectedUrl": "/ko/accounting/bank-transactions", "timeout": 5000 } }, "timeout": 60000, "tags": ["accounting", "bank", "filter", "date-range"], "login": { "url": "https://dev.codebridge-x.com/login", "credentials": { "id": "TestUser5", "password": "password123!" }, "successIndicator": "대시보드" }, "testFocus": { "primary": "기간별 데이터 조회 검증", "description": "각 기간 버튼 클릭 및 직접 날짜 입력 시 해당 기간의 데이터가 정확히 조회되는지 확인" }, "steps": [ { "id": "step-0", "name": "사이드바 준비", "description": "사이드바 스크롤을 최상단으로 이동하여 메뉴 탐색 준비", "actions": [ { "type": "evaluate", "script": "document.querySelector('.sidebar-scroll, [class*=\"sidebar\"] > div, nav[class*=\"menu\"]')?.scrollTo({top: 0, behavior: 'instant'})", "description": "사이드바 스크롤 최상단 이동" }, { "type": "wait", "duration": 500, "description": "스크롤 안정화 대기" } ], "expect": { "sidebarReady": true } }, { "id": "step-1", "name": "은행거래 메뉴 진입", "description": "회계관리 > 은행거래 메뉴로 이동 (scrollAndFind 패턴 사용)", "menuNavigation": { "method": "scrollAndFind", "level1": { "text": "회계관리", "scrollSearch": true, "clickAction": "expand" }, "level2": { "text": "은행거래", "scrollSearch": true, "clickAction": "navigate" }, "fallbackUrl": "/ko/accounting/bank-transactions" }, "expect": { "url": "/accounting/bank-transactions", "visible": ["은행거래"] } }, { "id": "step-2", "name": "목록 페이지 구조 확인", "description": "테이블 컬럼 및 UI 요소 확인", "expect": { "visible": ["거래일", "계좌", "입금", "출금", "잔액", "적요"], "elements": { "dateFilter": { "startDate": "시작일 입력 필드", "endDate": "종료일 입력 필드" }, "periodButtons": ["당해년도", "전전월", "전월", "당월", "어제", "오늘"], "pagination": true } } }, { "id": "step-3", "name": "기본 데이터 확인", "description": "초기 로드된 데이터 및 현재 날짜 필터 상태 확인", "actions": [ { "type": "capture", "target": "dateRange", "description": "현재 설정된 날짜 범위 기록" }, { "type": "capture", "target": "dataCount", "description": "현재 조회된 데이터 건수 기록" } ], "expect": { "dataLoaded": true, "dateRangeVisible": true } }, { "id": "step-4", "name": "당해년도 버튼 클릭 테스트", "description": "당해년도 버튼 클릭 시 해당 기간 데이터 조회 확인", "actions": [ { "type": "click", "target": "당해년도", "description": "당해년도 버튼 클릭" } ], "expect": { "dateRange": { "startDate": "2026-01-01", "endDate": "2026-12-31" }, "buttonActive": "당해년도", "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 2026년 범위 내인지 확인" } }, { "id": "step-5", "name": "전전월 버튼 클릭 테스트", "description": "전전월 버튼 클릭 시 해당 기간 데이터 조회 확인", "actions": [ { "type": "click", "target": "전전월", "description": "전전월 버튼 클릭" } ], "expect": { "dateRange": { "startDate": "2025-11-01", "endDate": "2025-11-30", "note": "현재 날짜 기준 전전월 (2026-01-15 기준 → 2025년 11월)" }, "buttonActive": "전전월", "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 전전월 범위 내인지 확인" } }, { "id": "step-6", "name": "전월 버튼 클릭 테스트", "description": "전월 버튼 클릭 시 해당 기간 데이터 조회 확인", "actions": [ { "type": "click", "target": "전월", "description": "전월 버튼 클릭" } ], "expect": { "dateRange": { "startDate": "2025-12-01", "endDate": "2025-12-31", "note": "현재 날짜 기준 전월 (2026-01-15 기준 → 2025년 12월)" }, "buttonActive": "전월", "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 전월 범위 내인지 확인" } }, { "id": "step-7", "name": "당월 버튼 클릭 테스트", "description": "당월 버튼 클릭 시 해당 기간 데이터 조회 확인", "actions": [ { "type": "click", "target": "당월", "description": "당월 버튼 클릭" } ], "expect": { "dateRange": { "startDate": "2026-01-01", "endDate": "2026-01-31", "note": "현재 날짜 기준 당월 (2026년 1월)" }, "buttonActive": "당월", "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 당월 범위 내인지 확인" } }, { "id": "step-8", "name": "어제 버튼 클릭 테스트", "description": "어제 버튼 클릭 시 해당 날짜 데이터 조회 확인", "actions": [ { "type": "click", "target": "어제", "description": "어제 버튼 클릭" } ], "expect": { "dateRange": { "startDate": "2026-01-14", "endDate": "2026-01-14", "note": "현재 날짜 기준 어제 (2026-01-15 기준 → 2026-01-14)" }, "buttonActive": "어제", "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 어제인지 확인" } }, { "id": "step-9", "name": "오늘 버튼 클릭 테스트", "description": "오늘 버튼 클릭 시 해당 날짜 데이터 조회 확인", "actions": [ { "type": "click", "target": "오늘", "description": "오늘 버튼 클릭" } ], "expect": { "dateRange": { "startDate": "2026-01-15", "endDate": "2026-01-15", "note": "현재 날짜 (2026-01-15)" }, "buttonActive": "오늘", "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 오늘인지 확인" } }, { "id": "step-10", "name": "직접 날짜 입력 테스트 - 특정 기간", "description": "시작일/종료일 직접 입력 후 데이터 조회 확인", "actions": [ { "type": "clear", "target": "startDate", "description": "시작일 필드 초기화" }, { "type": "type", "target": "startDate", "value": "2025-10-01", "description": "시작일 입력" }, { "type": "clear", "target": "endDate", "description": "종료일 필드 초기화" }, { "type": "type", "target": "endDate", "value": "2025-10-31", "description": "종료일 입력" }, { "type": "click", "target": "새로고침 또는 검색", "description": "데이터 새로고침" } ], "expect": { "dateRange": { "startDate": "2025-10-01", "endDate": "2025-10-31" }, "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 2025-10-01 ~ 2025-10-31 범위 내인지 확인" } }, { "id": "step-11", "name": "직접 날짜 입력 테스트 - 단일 날짜", "description": "시작일/종료일 동일하게 입력하여 특정 날짜 데이터만 조회", "actions": [ { "type": "clear", "target": "startDate", "description": "시작일 필드 초기화" }, { "type": "type", "target": "startDate", "value": "2025-12-25", "description": "시작일 입력" }, { "type": "clear", "target": "endDate", "description": "종료일 필드 초기화" }, { "type": "type", "target": "endDate", "value": "2025-12-25", "description": "종료일 입력" }, { "type": "click", "target": "새로고침 또는 검색", "description": "데이터 새로고침" } ], "expect": { "dateRange": { "startDate": "2025-12-25", "endDate": "2025-12-25" }, "dataRefreshed": true }, "validation": { "type": "dateRangeMatch", "description": "조회된 데이터의 거래일이 2025-12-25인지 확인" } }, { "id": "step-12", "name": "데이터 없는 기간 조회 테스트", "description": "데이터가 없는 기간 조회 시 빈 상태 표시 확인", "actions": [ { "type": "clear", "target": "startDate", "description": "시작일 필드 초기화" }, { "type": "type", "target": "startDate", "value": "2020-01-01", "description": "시작일 입력 (과거)" }, { "type": "clear", "target": "endDate", "description": "종료일 필드 초기화" }, { "type": "type", "target": "endDate", "value": "2020-01-31", "description": "종료일 입력 (과거)" }, { "type": "click", "target": "새로고침 또는 검색", "description": "데이터 새로고침" } ], "expect": { "emptyState": true, "message": "검색 결과가 없습니다" } }, { "id": "step-13", "name": "넓은 기간 조회 테스트", "description": "전체 데이터 조회를 위한 넓은 기간 설정", "actions": [ { "type": "clear", "target": "startDate", "description": "시작일 필드 초기화" }, { "type": "type", "target": "startDate", "value": "2025-01-01", "description": "시작일 입력" }, { "type": "clear", "target": "endDate", "description": "종료일 필드 초기화" }, { "type": "type", "target": "endDate", "value": "2025-12-31", "description": "종료일 입력" }, { "type": "click", "target": "새로고침 또는 검색", "description": "데이터 새로고침" } ], "expect": { "dataLoaded": true, "dataCountGreaterThan": 0 }, "validation": { "type": "dateRangeMatch", "description": "조회된 모든 데이터의 거래일이 2025년도 범위 내인지 확인" } }, { "id": "step-14", "name": "테이블 데이터 검증", "description": "조회된 데이터의 거래일이 설정된 기간 내인지 상세 검증", "actions": [ { "type": "verify", "target": "tableRows", "description": "테이블의 모든 행 거래일 확인" } ], "expect": { "allRowsWithinDateRange": true }, "validation": { "type": "rowByRowCheck", "description": "각 행의 거래일 컬럼 값이 설정된 시작일~종료일 범위 내인지 확인" } }, { "id": "step-15", "name": "페이지네이션과 날짜 필터 연동 확인", "description": "페이지 이동 시에도 날짜 필터가 유지되는지 확인", "precondition": "데이터가 여러 페이지에 걸쳐 있는 경우", "actions": [ { "type": "click", "target": "다음 페이지", "description": "다음 페이지 이동" } ], "expect": { "dateRangePreserved": true, "dataWithinRange": true }, "validation": { "type": "dateRangeMatch", "description": "다음 페이지의 데이터도 설정된 기간 내인지 확인" } } ], "assertions": [ { "type": "url", "expected": "/accounting/bank-transactions", "message": "은행거래 페이지 URL 확인" }, { "type": "element", "target": "dateFilter", "expected": "존재", "message": "날짜 필터 요소가 존재해야 함" }, { "type": "element", "target": "periodButtons", "expected": ["당해년도", "전전월", "전월", "당월", "어제", "오늘"], "message": "기간 버튼 6개가 존재해야 함" } ], "validationRules": { "dateRangeMatch": { "description": "테이블의 모든 거래일이 설정된 시작일~종료일 범위 내인지 확인", "method": "각 행의 거래일 컬럼 값 추출 후 날짜 범위 비교", "passCondition": "모든 행의 거래일이 범위 내 / 데이터 없음 (빈 상태)" }, "buttonActiveState": { "description": "클릭된 기간 버튼이 활성화(active) 상태인지 확인", "method": "버튼의 active 속성 또는 스타일 확인" }, "dateInputSync": { "description": "기간 버튼 클릭 시 날짜 입력 필드가 동기화되는지 확인", "method": "버튼 클릭 후 시작일/종료일 입력 필드 값 확인" } }, "testData": { "expectedPeriodButtons": [ { "name": "당해년도", "range": "해당 년도 1월 1일 ~ 12월 31일" }, { "name": "전전월", "range": "현재 월 기준 2개월 전 1일 ~ 말일" }, { "name": "전월", "range": "현재 월 기준 1개월 전 1일 ~ 말일" }, { "name": "당월", "range": "현재 월 1일 ~ 말일" }, { "name": "어제", "range": "어제 날짜 (단일)" }, { "name": "오늘", "range": "오늘 날짜 (단일)" } ], "testDateRanges": [ { "start": "2025-10-01", "end": "2025-10-31", "description": "특정 월 조회" }, { "start": "2025-12-25", "end": "2025-12-25", "description": "단일 날짜 조회" }, { "start": "2020-01-01", "end": "2020-01-31", "description": "데이터 없는 기간" }, { "start": "2025-01-01", "end": "2025-12-31", "description": "전체 연도 조회" } ] }, "notes": { "testPriority": "High", "mainObjective": "기간별 필터링이 정확히 동작하는지 검증", "criticalValidation": [ "기간 버튼 클릭 시 날짜 입력 필드 자동 변경", "설정된 기간 내 데이터만 조회되는지 확인", "날짜 범위 외 데이터가 표시되지 않는지 확인" ] } }