Files
sam-scenarios/bank-transactions.json

440 lines
16 KiB
JSON

{
"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": [
"기간 버튼 클릭 시 날짜 입력 필드 자동 변경",
"설정된 기간 내 데이터만 조회되는지 확인",
"날짜 범위 외 데이터가 표시되지 않는지 확인"
]
}
}