- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음) - Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification) - Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등) - Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝) - 16개 disabled 시나리오 enabled 전환 - 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
529 lines
19 KiB
JSON
529 lines
19 KiB
JSON
{
|
|
"enabled": true,
|
|
"id": "withdrawal-management",
|
|
"name": "출금관리 테스트",
|
|
"screenshotPolicy": {
|
|
"onErrorOnly": true,
|
|
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
|
|
},
|
|
"description": "출금관리 목록 조회, 계정과목명 일괄변경, 상세 수정 기능 E2E 테스트",
|
|
"baseUrl": "https://dev.codebridge-x.com",
|
|
"url": "/ko/accounting/withdrawals",
|
|
"navigation": {
|
|
"targetUrl": "/accounting/withdrawals",
|
|
"urlPattern": "/accounting/withdrawals|/ko/accounting/withdrawals",
|
|
"menuHints": ["출금관리", "출금 관리", "회계관리"]
|
|
},
|
|
"menuNavigation": {
|
|
"level1": "회계관리",
|
|
"level2": "출금관리",
|
|
"expectedUrl": "/ko/accounting/withdrawals",
|
|
"searchWithinParent": true,
|
|
"closeOtherMenus": true
|
|
},
|
|
"menuNavigationEnhanced": {
|
|
"strategy": "scroll-and-search",
|
|
"sidebarSelector": ".sidebar-scroll, [data-sidebar], nav[role='navigation']",
|
|
"scrollBehavior": {
|
|
"direction": "down",
|
|
"step": 200,
|
|
"maxScrolls": 10,
|
|
"waitAfterScroll": 300
|
|
},
|
|
"level1": {
|
|
"text": "회계관리",
|
|
"expandable": true,
|
|
"waitAfterClick": 500
|
|
},
|
|
"level2": {
|
|
"text": "출금관리",
|
|
"waitAfterClick": 300
|
|
},
|
|
"fallbackUrl": "/ko/accounting/withdrawals",
|
|
"verification": {
|
|
"urlContains": "/accounting/withdrawals",
|
|
"timeout": 5000
|
|
}
|
|
},
|
|
"timeout": 60000,
|
|
"tags": ["accounting", "withdrawal", "crud"],
|
|
|
|
"auth": {
|
|
"username": "TestUser5",
|
|
"password": "password123!"
|
|
},
|
|
|
|
"steps": [
|
|
{
|
|
"id": "step-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 }
|
|
],
|
|
"expect": {
|
|
"sidebarReady": true
|
|
}
|
|
},
|
|
{
|
|
"id": "step-1",
|
|
"name": "출금관리 메뉴 진입",
|
|
"description": "회계관리 > 출금관리 메뉴로 이동 (scrollAndFind 패턴 사용)",
|
|
"menuNavigation": {
|
|
"useEnhanced": true,
|
|
"scrollAndFind": {
|
|
"level1": {
|
|
"text": "회계관리",
|
|
"scrollUntilVisible": true,
|
|
"clickToExpand": true,
|
|
"waitAfterClick": 500
|
|
},
|
|
"level2": {
|
|
"text": "출금관리",
|
|
"scrollUntilVisible": true,
|
|
"waitAfterClick": 300
|
|
}
|
|
},
|
|
"fallback": {
|
|
"useDirectUrl": true,
|
|
"url": "/ko/accounting/withdrawals"
|
|
}
|
|
},
|
|
"expect": {
|
|
"url": "/accounting/withdrawals",
|
|
"visible": ["출금관리", "총 출금"]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-2",
|
|
"name": "목록 페이지 구조 확인",
|
|
"description": "테이블 및 필터 요소 확인",
|
|
"expect": {
|
|
"visible": ["출금일", "출금계좌", "받는분", "출금금액", "거래처", "적요", "출금유형"],
|
|
"elements": {
|
|
"statisticsCards": ["총 출금", "당월 출금", "거래처 미설정", "출금유형 미설정"],
|
|
"filters": ["계정과목명", "저장", "새로고침"],
|
|
"pagination": true
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "step-3",
|
|
"name": "계정과목명 드롭다운 옵션 확인",
|
|
"description": "계정과목명 일괄변경 드롭다운 옵션 검증",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "계정과목명 드롭다운", "description": "드롭다운 열기" }
|
|
],
|
|
"expect": {
|
|
"options": ["미설정", "매입대금", "급여", "임차료", "수도광열비", "통신비", "소모품비", "운반비", "차량유지비", "보험료", "세금과공과", "이자비용", "수수료", "기타"]
|
|
},
|
|
"note": "출금유형 옵션은 비용 계정 기준이므로 입금관리와 다름"
|
|
},
|
|
{
|
|
"id": "step-4",
|
|
"name": "체크박스 선택 후 계정과목명 일괄변경",
|
|
"description": "테이블 행 선택 후 계정과목명 일괄변경 저장",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "첫 번째 행 체크박스", "description": "행 선택" },
|
|
{ "type": "click_if_exists", "target": "계정과목명 드롭다운", "description": "드롭다운 열기" },
|
|
{ "type": "click_if_exists", "target": "매입대금", "description": "매입대금 선택" },
|
|
{ "type": "click_if_exists", "target": "저장", "description": "저장 버튼 클릭" }
|
|
],
|
|
"expect": {
|
|
"dialog": "확인 다이얼로그 표시",
|
|
"dialogMessage": "1개의 출금 유형을 매입대금(으)로 모두 변경하시겠습니까?",
|
|
"toast": "변경 완료 메시지"
|
|
},
|
|
"checks": [
|
|
"API 호출 확인 (PUT /api/v1/withdrawals/batch-update-account)",
|
|
"성공 토스트 메시지",
|
|
"URL 유지 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-4-1",
|
|
"name": "⚠️ 필수 검증: 계정과목명 변경 데이터 반영 확인",
|
|
"note": "토스트 성공 메시지만으로 PASS 판정 불가. 실제 데이터 변경 확인 필수!",
|
|
"description": "저장 후 테이블에서 변경된 출금유형 값 확인",
|
|
"expect": {
|
|
"tableCell": {
|
|
"row": 1,
|
|
"column": "출금유형",
|
|
"value": "매입대금"
|
|
}
|
|
},
|
|
"checks": [
|
|
"선택한 행의 출금유형 컬럼 값 확인",
|
|
"변경 전 값과 비교 (예: 미설정 → 매입대금)",
|
|
"페이지 새로고침 후에도 변경된 값 유지 확인",
|
|
"API 응답과 UI 표시값 일치 확인"
|
|
],
|
|
"knownBugReference": "BUG-DEPOSIT-20260115-001 (입금관리 동일 버그 확인 필요)"
|
|
},
|
|
{
|
|
"id": "step-5",
|
|
"name": "출금 상세 페이지 이동",
|
|
"description": "테이블 행 클릭하여 상세 페이지로 이동",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "테이블 첫 번째 행", "description": "행 클릭 (체크박스 제외 영역)" }
|
|
],
|
|
"expect": {
|
|
"url": "/accounting/withdrawals/{id}",
|
|
"visible": ["출금 상세", "기본 정보", "목록", "삭제", "수정"]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-6",
|
|
"name": "상세 페이지 읽기 모드 필드 확인",
|
|
"description": "수정 전 필드들이 비활성화 상태인지 확인",
|
|
"expect": {
|
|
"fields": [
|
|
{ "name": "출금일", "disabled": true },
|
|
{ "name": "출금계좌", "disabled": true },
|
|
{ "name": "받는분", "disabled": true },
|
|
{ "name": "출금금액", "disabled": true },
|
|
{ "name": "적요", "disabled": true },
|
|
{ "name": "거래처", "disabled": true },
|
|
{ "name": "출금 유형", "disabled": true }
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-7",
|
|
"name": "수정 모드 전환",
|
|
"description": "수정 버튼 클릭하여 편집 모드로 전환",
|
|
"click": "수정",
|
|
"expect": {
|
|
"url": "/accounting/withdrawals/{id}?mode=edit",
|
|
"visible": ["출금 수정", "취소", "저장"],
|
|
"notVisible": ["목록", "삭제", "수정"]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-8",
|
|
"name": "수정 모드 필드 활성화 검증",
|
|
"description": "수정 가능한 필드와 불가능한 필드 확인",
|
|
"expect": {
|
|
"fields": [
|
|
{ "name": "출금일", "disabled": true, "note": "은행데이터 - 수정 불가" },
|
|
{ "name": "출금계좌", "disabled": true, "note": "은행데이터 - 수정 불가" },
|
|
{ "name": "받는분", "disabled": true, "note": "은행데이터 - 수정 불가" },
|
|
{ "name": "출금금액", "disabled": true, "note": "은행데이터 - 수정 불가" },
|
|
{ "name": "적요", "disabled": false, "editable": true },
|
|
{ "name": "거래처", "disabled": false, "type": "combobox", "editable": true },
|
|
{ "name": "출금 유형", "disabled": false, "type": "combobox", "editable": true }
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-9",
|
|
"name": "거래처 드롭다운 옵션 확인",
|
|
"description": "거래처 선택 드롭다운 옵션 검증",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "거래처 드롭다운", "description": "드롭다운 열기" }
|
|
],
|
|
"expect": {
|
|
"options": ["거래처테스트", "아크더레드", "코브라브릿지", "가우스전자", "아크아크"],
|
|
"note": "거래처 옵션은 시스템 공통 데이터"
|
|
}
|
|
},
|
|
{
|
|
"id": "step-10",
|
|
"name": "출금 유형 드롭다운 옵션 확인",
|
|
"description": "출금 유형 선택 드롭다운 옵션 검증",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "출금 유형 드롭다운", "description": "드롭다운 열기" }
|
|
],
|
|
"expect": {
|
|
"options": ["미설정", "매입대금", "급여", "임차료", "수도광열비", "통신비", "소모품비", "운반비", "차량유지비", "보험료", "세금과공과", "이자비용", "수수료", "기타"]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-11",
|
|
"name": "수정 데이터 입력",
|
|
"description": "수정 가능한 필드에 테스트 데이터 입력",
|
|
"form": {
|
|
"fields": [
|
|
{ "name": "적요", "type": "text", "value": "테스트 적요 수정" }
|
|
]
|
|
},
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "거래처 드롭다운", "description": "거래처 드롭다운 열기" },
|
|
{ "type": "click_if_exists", "target": "거래처테스트", "description": "거래처 선택" },
|
|
{ "type": "click_if_exists", "target": "출금 유형 드롭다운", "description": "출금 유형 드롭다운 열기" },
|
|
{ "type": "click_if_exists", "target": "매입대금", "description": "매입대금 선택" }
|
|
]
|
|
},
|
|
{
|
|
"id": "step-12",
|
|
"name": "저장 및 결과 확인",
|
|
"description": "저장 버튼 클릭 후 데이터 반영 확인",
|
|
"click": "저장",
|
|
"expect": {
|
|
"toast": "저장 완료 메시지",
|
|
"url": "/accounting/withdrawals/{id}",
|
|
"mode": "view"
|
|
},
|
|
"checks": [
|
|
"API 호출 확인 (PUT /api/v1/withdrawals/{id})",
|
|
"성공 토스트 메시지",
|
|
"URL 유지 확인 (에러 페이지 이동 금지)"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-12-1",
|
|
"name": "⚠️ 필수 검증: 수정 데이터 반영 확인",
|
|
"note": "토스트 성공 메시지만으로 PASS 판정 불가. 실제 데이터 변경 확인 필수!",
|
|
"description": "저장 후 상세 페이지에서 변경된 값 확인",
|
|
"expect": {
|
|
"fields": [
|
|
{ "name": "적요", "value": "테스트 적요 수정" },
|
|
{ "name": "거래처", "value": "거래처테스트" },
|
|
{ "name": "출금 유형", "value": "매입대금" }
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-13",
|
|
"name": "취소 버튼 동작 확인",
|
|
"description": "수정 모드에서 취소 버튼 동작 검증",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "수정", "description": "수정 모드 진입" },
|
|
{ "type": "click_if_exists", "target": "취소", "description": "취소 버튼 클릭" }
|
|
],
|
|
"expect": {
|
|
"url": "/accounting/withdrawals/{id}",
|
|
"mode": "view",
|
|
"visible": ["출금 상세", "목록", "삭제", "수정"]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-14",
|
|
"name": "목록 버튼 동작 확인",
|
|
"description": "목록 버튼 클릭하여 목록 페이지로 이동",
|
|
"click": "목록",
|
|
"expect": {
|
|
"url": "/accounting/withdrawals",
|
|
"visible": ["출금관리", "총 출금"]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-15",
|
|
"name": "필터 드롭다운 검증",
|
|
"description": "목록 페이지 필터 드롭다운 옵션 확인",
|
|
"note": "3개의 필터 드롭다운 존재 (거래처, 출금유형, 정렬)",
|
|
"expect": {
|
|
"filters": [
|
|
{ "name": "거래처 필터", "default": "전체" },
|
|
{ "name": "출금유형 필터", "default": "전체" },
|
|
{ "name": "정렬", "default": "최신순", "options": ["최신순", "등록순", "금액 높은순", "금액 낮은순"] }
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "step-16",
|
|
"name": "날짜 필터 검증",
|
|
"description": "날짜 필터 버튼 동작 확인",
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "당해년도", "description": "당해년도 버튼 클릭" }
|
|
],
|
|
"expect": {
|
|
"dateRange": {
|
|
"start": "2026-01-01",
|
|
"end": "2026-12-31"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "step-17",
|
|
"name": "페이지네이션 동작 확인",
|
|
"description": "페이지네이션 버튼 동작 검증 (데이터 존재 시)",
|
|
"condition": "데이터가 20건 이상인 경우에만 실행",
|
|
"expect": {
|
|
"pagination": {
|
|
"itemsPerPage": 20,
|
|
"currentPage": 1
|
|
}
|
|
},
|
|
"actions": [
|
|
{ "type": "click_if_exists", "target": "다음", "description": "다음 페이지로 이동" }
|
|
],
|
|
"expectAfterAction": {
|
|
"currentPage": 2
|
|
}
|
|
}
|
|
],
|
|
|
|
"skipTests": [
|
|
{
|
|
"id": "delete-button",
|
|
"name": "삭제 버튼 테스트",
|
|
"reason": "사용자 요청에 따라 테스트 제외"
|
|
}
|
|
],
|
|
|
|
"knownBugs": [
|
|
{
|
|
"id": "BUG-DEPOSIT-20260115-001",
|
|
"description": "계정과목명 일괄변경 시 API 오류 발생 (입금관리)",
|
|
"errorMessage": "존재하지 않는 URI 또는 데이터",
|
|
"relatedSteps": ["step-4-1"],
|
|
"note": "출금관리에서도 동일한 버그가 존재할 수 있으므로 step-4-1에서 검증 필수"
|
|
},
|
|
{
|
|
"id": "BUG-SALES-20260115-001",
|
|
"description": "계정과목명 일괄변경 시 토스트 성공 표시되나 실제 데이터 미변경 (매출관리)",
|
|
"relatedSteps": ["step-4-1"],
|
|
"note": "유사한 UI 패턴이므로 동일 버그 가능성 있음"
|
|
}
|
|
],
|
|
|
|
"criticalValidationChecklist": [
|
|
{
|
|
"id": 1,
|
|
"name": "파일 다운로드 검증",
|
|
"trigger": "다운로드, Export 버튼 발견 시",
|
|
"checks": ["Network API 호출", "실제 파일 다운로드"],
|
|
"note": "Console LOG만으로 PASS 판정 금지"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"name": "등록/저장 버튼 검증",
|
|
"trigger": "등록, 저장, 제출 버튼 클릭 시",
|
|
"checks": ["URL 유지 확인", "에러 페이지 없음", "성공 토스트"],
|
|
"note": "에러 페이지 이동 감지 필수"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"name": "일괄변경 데이터 반영 검증",
|
|
"trigger": "계정과목명 저장 후",
|
|
"checks": ["테이블 데이터 변경 확인", "새로고침 후 유지 확인"],
|
|
"note": "토스트만 확인하면 불충분"
|
|
},
|
|
{
|
|
"id": 4,
|
|
"name": "목업 페이지 감지",
|
|
"trigger": "페이지 로드 시",
|
|
"checks": ["입력 필드 존재", "동작하는 버튼 존재", "API 호출 여부"],
|
|
"note": "버튼만 있고 동작 안하면 목업"
|
|
}
|
|
],
|
|
|
|
"testData": {
|
|
"sampleWithdrawal": {
|
|
"date": "2025-12-28",
|
|
"account": "운영계좌",
|
|
"recipient": "홍길동",
|
|
"amount": "1,500,000",
|
|
"vendor": "",
|
|
"description": "급여 지급",
|
|
"withdrawalType": "미설정"
|
|
},
|
|
"modifiedData": {
|
|
"description": "테스트 적요 수정",
|
|
"vendor": "거래처테스트",
|
|
"withdrawalType": "매입대금"
|
|
}
|
|
},
|
|
|
|
"pageStructure": {
|
|
"listPage": {
|
|
"url": "/accounting/withdrawals",
|
|
"title": "출금관리",
|
|
"statistics": ["총 출금", "당월 출금", "거래처 미설정", "출금유형 미설정"],
|
|
"tableColumns": ["checkbox", "출금일", "출금계좌", "받는분", "출금금액", "거래처", "적요", "출금유형", "action"],
|
|
"batchUpdate": {
|
|
"label": "계정과목명",
|
|
"saveButton": "저장"
|
|
},
|
|
"filters": ["거래처", "출금유형", "정렬"],
|
|
"dateFilters": ["당해년도", "전전월", "전월", "당월", "어제", "오늘"]
|
|
},
|
|
"detailPage": {
|
|
"url": "/accounting/withdrawals/{id}",
|
|
"title": "출금 상세",
|
|
"buttons": ["목록", "삭제", "수정"],
|
|
"fields": {
|
|
"readOnly": ["출금일", "출금계좌", "받는분", "출금금액"],
|
|
"editable": ["적요", "거래처", "출금 유형"]
|
|
}
|
|
},
|
|
"editPage": {
|
|
"url": "/accounting/withdrawals/{id}?mode=edit",
|
|
"title": "출금 수정",
|
|
"buttons": ["취소", "저장"]
|
|
}
|
|
},
|
|
|
|
"dropdownOptions": {
|
|
"accountSubject": {
|
|
"label": "계정과목명",
|
|
"options": ["미설정", "매입대금", "급여", "임차료", "수도광열비", "통신비", "소모품비", "운반비", "차량유지비", "보험료", "세금과공과", "이자비용", "수수료", "기타"],
|
|
"note": "출금유형은 비용 계정 기준 (입금유형과 다름)"
|
|
},
|
|
"withdrawalType": {
|
|
"label": "출금 유형",
|
|
"options": ["미설정", "매입대금", "급여", "임차료", "수도광열비", "통신비", "소모품비", "운반비", "차량유지비", "보험료", "세금과공과", "이자비용", "수수료", "기타"]
|
|
},
|
|
"vendor": {
|
|
"label": "거래처",
|
|
"options": ["거래처테스트", "아크더레드", "코브라브릿지", "가우스전자", "아크아크"]
|
|
},
|
|
"sortOrder": {
|
|
"label": "정렬",
|
|
"options": ["최신순", "등록순", "금액 높은순", "금액 낮은순"]
|
|
}
|
|
},
|
|
|
|
"comparisonWithDeposit": {
|
|
"differences": [
|
|
{
|
|
"field": "계정과목/유형 옵션",
|
|
"deposit": "매출대금, 선수금, 가수금, 임대수익, 이자수익, 보증금 반환, 차입금, 자본금, 부가세 환급, 기타 (수입 계정)",
|
|
"withdrawal": "매입대금, 급여, 임차료, 수도광열비, 통신비, 소모품비, 운반비, 차량유지비, 보험료, 세금과공과, 이자비용, 수수료, 기타 (비용 계정)"
|
|
},
|
|
{
|
|
"field": "테이블 컬럼명",
|
|
"deposit": "입금일, 입금계좌, 입금자명, 입금금액, 입금유형",
|
|
"withdrawal": "출금일, 출금계좌, 받는분, 출금금액, 출금유형"
|
|
},
|
|
{
|
|
"field": "통계 카드",
|
|
"deposit": "총 입금, 당월 입금, 입금유형 미설정",
|
|
"withdrawal": "총 출금, 당월 출금, 출금유형 미설정"
|
|
}
|
|
],
|
|
"similarities": [
|
|
"페이지 구조 (목록 → 상세 → 수정)",
|
|
"계정과목명 일괄변경 기능",
|
|
"거래처 드롭다운 옵션 (공통 데이터)",
|
|
"날짜 필터 버튼 (당해년도, 전전월, 전월, 당월, 어제, 오늘)",
|
|
"정렬 옵션 (최신순, 등록순, 금액 높은순, 금액 낮은순)",
|
|
"은행 데이터 필드 수정 불가 (날짜, 계좌, 금액 등)"
|
|
]
|
|
},
|
|
|
|
"assertions": [
|
|
{
|
|
"type": "url",
|
|
"expected": "/accounting/withdrawals",
|
|
"message": "목록 페이지 URL 확인"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"target": "body",
|
|
"expected": "출금관리",
|
|
"message": "페이지 타이틀 확인"
|
|
}
|
|
]
|
|
}
|