Files
sam-scenarios/card-transactions.json

414 lines
12 KiB
JSON

{
"id": "card-transactions",
"name": "카드거래 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "회계관리 > 카드거래 메뉴의 기간 설정, 계정과목명 일괄변경, 모달 상세 수정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"url": "/ko/accounting/card-transactions",
"menuNavigation": {
"level1": "회계관리",
"level2": "카드내역조회",
"expectedUrl": "/ko/accounting/card-transactions"
},
"menuNavigationEnhanced": {
"strategy": "scroll-and-search",
"sidebarSelector": ".sidebar-scroll, [class*='sidebar'], nav[role='navigation']",
"scrollConfig": {
"scrollToTopFirst": true,
"scrollStep": 200,
"maxScrollAttempts": 10,
"waitAfterScroll": 300
},
"level1": {
"text": "회계관리",
"selectors": [
"button:has-text('회계관리')",
"[data-menu='회계관리']",
".menu-item:has-text('회계관리')"
],
"expandWait": 500
},
"level2": {
"text": "카드내역조회",
"selectors": [
"a:has-text('카드내역조회')",
"[data-submenu='카드내역조회']",
".submenu-item:has-text('카드내역조회')"
]
},
"fallbackUrl": "/ko/accounting/card-transactions"
},
"testFocus": {
"primary": "계정과목명 일괄변경 및 모달 수정 기능 검증",
"description": "2년 기간 설정 후 체크박스 선택하여 계정과목명 일괄변경, 행 클릭 시 모달창에서 적요/사용유형 수정 저장 확인"
},
"prerequisites": {
"authentication": true,
"testData": {
"dateRange": {
"startDate": "2024-01-15",
"endDate": "2026-01-15",
"description": "현재일자(2026-01-15)에서 2년 전까지"
}
}
},
"steps": [
{
"id": "step-0",
"name": "사이드바 준비",
"description": "메뉴 탐색 전 사이드바를 최상단으로 스크롤하여 초기화",
"actions": [
{
"type": "evaluate",
"script": "document.querySelector('.sidebar-scroll, [class*=\"sidebar\"], nav[role=\"navigation\"]')?.scrollTo({top: 0, behavior: 'instant'})"
},
{ "type": "wait", "duration": 500 }
],
"expected": {
"sidebarScrollTop": 0,
"sidebarReady": true
}
},
{
"id": "step-1",
"name": "2단계 메뉴 진입: 회계관리 > 카드거래",
"description": "사이드바 스크롤 탐색으로 회계관리 > 카드거래 메뉴 진입",
"navigationPattern": "scrollAndFind",
"actions": [
{
"type": "scrollAndFind",
"target": "회계관리",
"scrollContainer": ".sidebar-scroll, [class*='sidebar'], nav[role='navigation']",
"scrollStep": 200,
"maxAttempts": 10
},
{ "type": "click", "target": "회계관리" },
{ "type": "wait", "duration": 500 },
{
"type": "scrollAndFind",
"target": "카드내역조회",
"scrollContainer": ".sidebar-scroll, [class*='sidebar'], nav[role='navigation']",
"scrollStep": 200,
"maxAttempts": 5
},
{ "type": "click", "target": "카드내역조회" },
{ "type": "wait", "target": "페이지 로드 완료" }
],
"fallback": {
"type": "directNavigation",
"url": "/ko/accounting/card-transactions"
},
"expected": {
"url": "/ko/accounting/card-transactions",
"pageTitle": "카드내역조회",
"elements": ["페이지 타이틀", "날짜 필터", "테이블"],
"authenticated": true
}
},
{
"id": "step-2",
"name": "목록 페이지 구조 확인",
"description": "통계 카드, 필터, 테이블 컬럼 구조 확인",
"actions": [
{
"type": "verify",
"target": "페이지 구조"
}
],
"expected": {
"statisticsCards": ["사용금액", "사용유형 미설정"],
"filters": ["기간 선택", "카드 선택", "정렬"],
"tableColumns": ["체크박스", "카드명", "사용일시", "가맹점명", "사용금액", "적요", "사용유형"],
"periodButtons": ["당해년도", "전전월", "전월", "당월", "어제", "오늘"]
}
},
{
"id": "step-3",
"name": "2년 기간 설정 (2024-01-15 ~ 2026-01-15)",
"description": "현재일자에서 2년 전까지 날짜 범위 설정",
"actions": [
{
"type": "clear",
"target": "시작일 입력 필드"
},
{
"type": "type",
"target": "시작일 입력 필드",
"value": "2024-01-15"
},
{
"type": "clear",
"target": "종료일 입력 필드"
},
{
"type": "type",
"target": "종료일 입력 필드",
"value": "2026-01-15"
},
{
"type": "click",
"target": "새로고침 버튼"
}
],
"expected": {
"startDate": "2024-01-15",
"endDate": "2026-01-15",
"dataLoaded": true,
"tableHasData": "데이터 존재 여부 확인"
}
},
{
"id": "step-4",
"name": "테이블 데이터 존재 확인",
"description": "2년 기간 내 카드거래 데이터가 테이블에 표시되는지 확인",
"actions": [
{
"type": "verify",
"target": "테이블 데이터"
}
],
"expected": {
"tableRows": "> 0",
"statisticsUpdated": true,
"noEmptyMessage": "검색 결과가 없습니다 메시지 없음"
}
},
{
"id": "step-5",
"name": "계정과목명 드롭다운 옵션 확인",
"description": "계정과목명(사용유형) 드롭다운의 옵션 목록 확인",
"actions": [
{
"type": "click",
"target": "계정과목명 드롭다운"
},
{
"type": "verify",
"target": "드롭다운 옵션"
}
],
"expected": {
"options": ["미설정", "접대비", "복리후생비", "차량유지비", "소모품비", "통신비", "교통비", "광고선전비", "기타"]
}
},
{
"id": "step-6",
"name": "체크박스 선택 (일괄변경용)",
"description": "테이블에서 1개 이상의 행 체크박스 선택",
"actions": [
{
"type": "click",
"target": "첫 번째 행 체크박스"
},
{
"type": "verify",
"target": "선택 상태"
}
],
"expected": {
"checkboxSelected": true,
"selectedCount": 1
}
},
{
"id": "step-7",
"name": "계정과목명 일괄변경 실행",
"description": "선택된 행에 대해 계정과목명을 변경하고 저장",
"actions": [
{
"type": "click",
"target": "계정과목명 드롭다운"
},
{
"type": "select",
"target": "옵션",
"value": "접대비"
},
{
"type": "click",
"target": "저장 버튼"
},
{
"type": "wait",
"target": "확인 다이얼로그"
},
{
"type": "click",
"target": "확인 버튼"
}
],
"expected": {
"confirmDialog": "N개의 사용 유형을 접대비(으)로 모두 변경하시겠습니까?",
"apiCall": "POST /accounting/card-transactions",
"apiResponse": "200 OK",
"dataChanged": "미설정 → 접대비"
}
},
{
"id": "step-8",
"name": "일괄변경 결과 확인",
"description": "계정과목명 변경 후 테이블 및 통계 카드 업데이트 확인",
"actions": [
{
"type": "verify",
"target": "변경된 사용유형"
},
{
"type": "verify",
"target": "통계 카드 (사용유형 미설정 건수)"
}
],
"expected": {
"usageTypeChanged": "접대비",
"unsetCountDecreased": true,
"successToast": "변경 완료"
}
},
{
"id": "step-9",
"name": "행 클릭하여 모달창 열기",
"description": "테이블의 특정 행을 클릭하여 상세 모달창 표시",
"actions": [
{
"type": "click",
"target": "테이블 첫 번째 행"
},
{
"type": "wait",
"target": "모달창 표시"
}
],
"expected": {
"modalOpened": true,
"modalTitle": "카드거래 상세",
"modalFields": ["카드명", "사용일시", "가맹점명", "사용금액", "적요", "사용유형"]
}
},
{
"id": "step-10",
"name": "모달창 필드 상태 확인",
"description": "모달창 내 각 필드의 읽기전용/편집가능 상태 확인",
"actions": [
{
"type": "verify",
"target": "모달 필드 상태"
}
],
"expected": {
"readOnlyFields": ["카드명", "사용일시", "가맹점명", "사용금액"],
"editableFields": ["적요", "사용유형"],
"buttons": ["취소", "저장"]
}
},
{
"id": "step-11",
"name": "모달창에서 적요 수정",
"description": "적요 필드 값을 변경",
"actions": [
{
"type": "clear",
"target": "적요 입력 필드"
},
{
"type": "type",
"target": "적요 입력 필드",
"value": "테스트 적요 수정"
}
],
"expected": {
"fieldValue": "테스트 적요 수정"
}
},
{
"id": "step-12",
"name": "모달창에서 사용유형 수정",
"description": "사용유형 드롭다운에서 다른 옵션 선택",
"actions": [
{
"type": "click",
"target": "사용유형 드롭다운"
},
{
"type": "select",
"target": "옵션",
"value": "복리후생비"
}
],
"expected": {
"selectedOption": "복리후생비"
}
},
{
"id": "step-13",
"name": "모달창 저장 버튼 클릭",
"description": "수정된 내용 저장",
"actions": [
{
"type": "click",
"target": "저장 버튼"
},
{
"type": "wait",
"target": "저장 처리 완료"
}
],
"expected": {
"apiCall": "PUT/PATCH /accounting/card-transactions/{id}",
"apiResponse": "200 OK",
"modalClosed": true,
"successToast": "저장 완료"
}
},
{
"id": "step-14",
"name": "수정 데이터 반영 확인",
"description": "모달에서 수정한 내용이 테이블에 반영되었는지 확인",
"actions": [
{
"type": "verify",
"target": "테이블 해당 행"
}
],
"expected": {
"updatedMemo": "테스트 적요 수정",
"updatedUsageType": "복리후생비"
}
},
{
"id": "step-15",
"name": "모달창 취소 버튼 동작 확인",
"description": "다른 행 클릭 후 취소 버튼으로 모달 닫기",
"actions": [
{
"type": "click",
"target": "다른 행"
},
{
"type": "wait",
"target": "모달창"
},
{
"type": "click",
"target": "취소 버튼"
}
],
"expected": {
"modalClosed": true,
"dataUnchanged": true
}
}
],
"cleanup": {
"description": "테스트 후 변경된 데이터 원복 (필요시)",
"actions": []
},
"notes": [
"기존 입금관리, 출금관리, 매출관리에서 계정과목명 일괄변경 시 데이터 미반영 버그 발견됨 (BUG-DEPOSIT-20260115-001 등)",
"카드거래에서도 동일 패턴 버그 발생 가능성 있음",
"모달창 저장 시 URL 변경 및 에러 페이지 이동 여부 반드시 확인 필요"
]
}