feat: E2E 시나리오 36개 추가 - 전체 메뉴 커버리지 확장

새 시나리오:
- 품질관리: quality-inspection, quality-certification
- 품목관리: item-master
- 인사관리: hr-employee, hr-department, hr-card, hr-attendance-status, hr-attendance-admin, hr-salary, hr-vacation
- 리포트: report-analysis
- 고객센터: customer-notice
- 설정: settings-account, settings-permission, settings-rank, settings-popup, settings-company, settings-subscription
- 판매관리: sales-quotation, sales-order, sales-pricing, sales-client
- 구매관리: purchase-client, purchase-order, purchase-status
- 생산관리: production-item, production-work-result
- 자재관리: material-stock, material-receiving
- 출고관리: shipment-management
- 차량관리: vehicle-management
- 회계관리: accounting-client, accounting-ledger, accounting-deposit, accounting-withdrawal, accounting-payment

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-03 08:02:00 +09:00
parent 6c1f2da8d9
commit 88dbc00075
36 changed files with 2806 additions and 231 deletions

116
accounting-client.json Normal file
View File

@@ -0,0 +1,116 @@
{
"id": "accounting-client",
"name": "회계거래처관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "회계관리 > 거래처관리 메뉴의 거래처 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "회계관리",
"level2": "거래처관리",
"expectedUrl": "/accounting/vendors"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 회계관리 > 거래처관리",
"action": "menu_navigate",
"level1": "회계관리",
"level2": "거래처관리",
"expected": {
"url_contains": "/accounting/vendors",
"visible": ["거래처관리", "거래처"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"거래처 목록 표시",
"거래처 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "통계 카드 확인",
"action": "verify_elements",
"checks": [
"전체 거래처 카드",
"매출 거래처 카드",
"매입 거래처 카드"
],
"expected": "통계 카드 표시"
},
{
"id": 4,
"name": "거래처 테이블 확인",
"action": "verify_table",
"checks": [
"구분 컬럼",
"거래처명 컬럼",
"신용등급 컬럼",
"거래등급 컬럼"
],
"expected": "거래처 테이블 표시"
},
{
"id": 5,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "가우스",
"expected": "검색어 입력됨"
},
{
"id": 6,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
},
{
"id": 7,
"name": "테이블 행 클릭 - 상세 페이지",
"action": "click",
"target": "table tbody tr:first-child",
"expected": "상세 페이지로 이동"
},
{
"id": 8,
"name": "상세 페이지 확인",
"action": "verify_url",
"expected": {
"url_contains": "/accounting/vendors/"
}
},
{
"id": 9,
"name": "목록으로 돌아가기",
"action": "click",
"target": "목록",
"expected": "목록 페이지로 복귀"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [5, 6],
"criteria": "검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "거래처 목록, 통계 카드 확인"
}
]
}

71
accounting-deposit.json Normal file
View File

@@ -0,0 +1,71 @@
{
"id": "accounting-deposit",
"name": "입금관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "회계관리 > 입금관리 메뉴의 입금 조회/등록 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "회계관리",
"level2": "입금관리",
"expectedUrl": "/accounting/deposits"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 회계관리 > 입금관리",
"action": "menu_navigate",
"level1": "회계관리",
"level2": "입금관리",
"expected": {
"url_contains": "/accounting/deposits",
"visible": ["입금관리", "입금"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"입금 목록 표시",
"입금 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "입금 테이블 확인",
"action": "verify_table",
"checks": [
"입금일 컬럼",
"거래처 컬럼",
"금액 컬럼",
"입금방법 컬럼"
],
"expected": "입금 테이블 표시"
},
{
"id": 4,
"name": "입금 등록 버튼 확인",
"action": "verify_elements",
"checks": [
"입금 등록 버튼 존재"
],
"expected": "등록 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "입금 목록, 등록 버튼 확인"
}
]
}

73
accounting-ledger.json Normal file
View File

@@ -0,0 +1,73 @@
{
"id": "accounting-ledger",
"name": "거래처원장 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "회계관리 > 거래처원장 메뉴의 거래처별 원장 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "회계관리",
"level2": "거래처원장",
"expectedUrl": "/accounting/vendor-ledger"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 회계관리 > 거래처원장",
"action": "menu_navigate",
"level1": "회계관리",
"level2": "거래처원장",
"expected": {
"url_contains": "/accounting/vendor-ledger",
"visible": ["거래처원장"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"원장 목록 표시",
"거래처 선택 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "원장 테이블 확인",
"action": "verify_table",
"checks": [
"날짜 컬럼",
"거래내역 컬럼",
"차변 컬럼",
"대변 컬럼",
"잔액 컬럼"
],
"expected": "원장 테이블 표시"
},
{
"id": 4,
"name": "기간 필터 확인",
"action": "verify_elements",
"checks": [
"시작일 선택",
"종료일 선택"
],
"expected": "기간 필터 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "원장 목록 확인"
}
]
}

61
accounting-payment.json Normal file
View File

@@ -0,0 +1,61 @@
{
"id": "accounting-payment",
"name": "결제내역 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "회계관리 > 결제내역 메뉴의 결제 내역 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "회계관리",
"level2": "결제내역",
"expectedUrl": "/payment-history"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 회계관리 > 결제내역",
"action": "menu_navigate",
"level1": "회계관리",
"level2": "결제내역",
"expected": {
"url_contains": "/payment",
"visible": ["결제내역", "결제"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"결제 내역 목록 표시"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "결제 테이블 확인",
"action": "verify_table",
"checks": [
"결제일 컬럼",
"결제금액 컬럼",
"결제방법 컬럼",
"상태 컬럼"
],
"expected": "결제 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "결제 내역 확인"
}
]
}

View File

@@ -0,0 +1,71 @@
{
"id": "accounting-withdrawal",
"name": "출금관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "회계관리 > 출금관리 메뉴의 출금 조회/등록 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "회계관리",
"level2": "출금관리",
"expectedUrl": "/accounting/withdrawals"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 회계관리 > 출금관리",
"action": "menu_navigate",
"level1": "회계관리",
"level2": "출금관리",
"expected": {
"url_contains": "/accounting/withdrawals",
"visible": ["출금관리", "출금"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"출금 목록 표시",
"출금 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "출금 테이블 확인",
"action": "verify_table",
"checks": [
"출금일 컬럼",
"거래처 컬럼",
"금액 컬럼",
"출금방법 컬럼"
],
"expected": "출금 테이블 표시"
},
{
"id": 4,
"name": "출금 등록 버튼 확인",
"action": "verify_elements",
"checks": [
"출금 등록 버튼 존재"
],
"expected": "등록 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "출금 목록, 등록 버튼 확인"
}
]
}

69
customer-notice.json Normal file
View File

@@ -0,0 +1,69 @@
{
"id": "customer-notice",
"name": "공지사항 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "고객센터 > 공지사항 메뉴의 공지사항 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "고객센터",
"level2": "공지사항",
"expectedUrl": "/support/notice"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 고객센터 > 공지사항",
"action": "menu_navigate",
"level1": "고객센터",
"level2": "공지사항",
"expected": {
"url_contains": "/support",
"visible": ["공지사항"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"공지사항 목록 표시",
"검색 기능 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "공지사항 목록 확인",
"action": "verify_table",
"checks": [
"번호 컬럼",
"제목 컬럼",
"작성자 컬럼",
"작성일 컬럼"
],
"expected": "공지사항 목록 표시"
},
{
"id": 4,
"name": "공지사항 상세 보기",
"action": "click",
"target": "table tbody tr:first-child",
"expected": "공지사항 상세 페이지로 이동"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "공지사항 목록 확인"
}
]
}

92
hr-attendance-admin.json Normal file
View File

@@ -0,0 +1,92 @@
{
"id": "hr-attendance-admin",
"name": "근태관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 근태관리 메뉴의 관리자용 근태 관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "근태관리",
"expectedUrl": "/hr/attendance-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 근태관리",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "근태관리",
"expected": {
"url_contains": "/hr/attendance-management",
"visible": ["근태관리"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"사원별 근태 목록 표시",
"날짜 필터 존재",
"검색 기능 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "근태 테이블 확인",
"action": "verify_table",
"checks": [
"사원명 컬럼",
"날짜 컬럼",
"출근시간 컬럼",
"퇴근시간 컬럼",
"상태 컬럼"
],
"expected": "근태 테이블 표시"
},
{
"id": 4,
"name": "날짜 필터 테스트",
"action": "click",
"target": "input[type='date']",
"expected": "날짜 선택 가능"
},
{
"id": 5,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "홍길동",
"expected": "검색어 입력됨"
},
{
"id": 6,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5, 6],
"criteria": "날짜 필터 및 검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "근태 목록, 필터, 검색 확인"
}
]
}

72
hr-attendance-status.json Normal file
View File

@@ -0,0 +1,72 @@
{
"id": "hr-attendance-status",
"name": "근태현황 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 근태현황 메뉴의 출퇴근 현황 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "근태현황",
"expectedUrl": "/hr/attendance"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 근태현황",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "근태현황",
"expected": {
"url_contains": "/hr/attendance",
"visible": ["근태현황", "출근", "퇴근"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"출퇴근 현황 표시",
"날짜 선택 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "출퇴근 버튼 확인",
"action": "verify_elements",
"checks": [
"출근 버튼 존재",
"퇴근 버튼 존재"
],
"expected": "출퇴근 버튼 표시"
},
{
"id": 4,
"name": "근태 현황 테이블 확인",
"action": "verify_table",
"checks": [
"날짜 컬럼",
"출근시간 컬럼",
"퇴근시간 컬럼",
"근무시간 컬럼"
],
"expected": "근태 현황 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "출퇴근 현황, 동작 버튼 확인"
}
]
}

70
hr-card.json Normal file
View File

@@ -0,0 +1,70 @@
{
"id": "hr-card",
"name": "카드관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 카드관리 메뉴의 목록 조회, 카드 등록/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "카드관리",
"expectedUrl": "/hr/card-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 카드관리",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "카드관리",
"expected": {
"url_contains": "/hr/card",
"visible": ["카드관리", "카드"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"카드 목록 표시",
"카드 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "카드 목록 확인",
"action": "verify_table",
"checks": [
"카드명 컬럼",
"카드번호 컬럼",
"사용자 컬럼"
],
"expected": "카드 목록 표시"
},
{
"id": 4,
"name": "카드 등록 버튼 확인",
"action": "verify_elements",
"checks": [
"카드 등록 버튼 존재"
],
"expected": "등록 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "카드 목록, 동작 버튼 확인"
}
]
}

85
hr-department.json Normal file
View File

@@ -0,0 +1,85 @@
{
"id": "hr-department",
"name": "부서관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 부서관리 메뉴의 목록 조회, 부서 추가/수정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "부서관리",
"expectedUrl": "/hr/department-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 부서관리",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "부서관리",
"expected": {
"url_contains": "/hr/department",
"visible": ["부서관리", "부서"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"부서 목록 또는 트리 표시",
"부서 추가 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "부서 목록 확인",
"action": "verify_elements",
"checks": [
"부서 트리 또는 테이블 표시",
"부서명 표시"
],
"expected": "부서 목록 정상 표시"
},
{
"id": 4,
"name": "부서 추가 버튼 클릭",
"action": "click",
"target": "부서 추가",
"expected": "부서 추가 모달 열림"
},
{
"id": 5,
"name": "부서 추가 모달 확인",
"action": "verify_elements",
"checks": [
"부서명 입력 필드",
"상위 부서 선택",
"저장/취소 버튼"
],
"expected": "부서 추가 모달 표시"
},
{
"id": 6,
"name": "모달 닫기",
"action": "click",
"target": "취소",
"expected": "모달 닫힘"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "부서 목록, 동작 버튼 확인"
}
]
}

155
hr-employee.json Normal file
View File

@@ -0,0 +1,155 @@
{
"id": "hr-employee",
"name": "사원관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 사원관리 메뉴의 목록 조회, 검색, CRUD 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "사원관리",
"expectedUrl": "/hr/employee-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 사원관리",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "사원관리",
"expected": {
"url_contains": "/hr/employee",
"visible": ["사원관리", "사원"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"검색 입력 필드 존재",
"테이블 데이터 표시",
"사원 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "테이블 구조 확인",
"action": "verify_table",
"checks": [
"사원명 컬럼",
"부서 컬럼",
"직급 컬럼",
"입사일 컬럼"
],
"expected": "주요 컬럼 존재"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "홍길동",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 결과 확인",
"action": "wait",
"duration": 500,
"expected": "검색 결과 표시"
},
{
"id": 6,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
},
{
"id": 7,
"name": "사원 등록 버튼 클릭",
"action": "click",
"target": "사원 등록",
"expected": "등록 폼/모달 열림"
},
{
"id": 8,
"name": "등록 폼 확인",
"action": "verify_elements",
"checks": [
"이름 입력 필드",
"이메일 입력 필드",
"아이디 입력 필드",
"비밀번호 입력 필드",
"입사일 입력 필드"
],
"expected": "등록 폼 표시"
},
{
"id": 9,
"name": "등록 폼 닫기",
"action": "click",
"target": "취소",
"expected": "등록 폼 닫힘"
},
{
"id": 10,
"name": "테이블 행 클릭 - 상세 페이지",
"action": "click",
"target": "table tbody tr:first-child",
"expected": "상세 페이지로 이동"
},
{
"id": 11,
"name": "상세 페이지 요소 확인",
"action": "verify_elements",
"checks": [
"사원 정보 표시",
"목록 버튼 존재",
"수정 버튼 존재"
],
"expected": "상세 정보 정상 표시"
},
{
"id": 12,
"name": "목록으로 돌아가기",
"action": "click",
"target": "목록",
"expected": "목록 페이지로 복귀"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5, 6],
"criteria": "검색 시 데이터 변화 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "입력 필드, 동작 버튼, 테이블 데이터 확인"
}
],
"expectedAPIs": [
{
"method": "GET",
"endpoint": "/api/v1/employees",
"description": "사원 목록 조회"
},
{
"method": "POST",
"endpoint": "/api/v1/employees",
"description": "사원 등록"
}
]
}

73
hr-salary.json Normal file
View File

@@ -0,0 +1,73 @@
{
"id": "hr-salary",
"name": "급여관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 급여관리 메뉴의 급여 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "급여관리",
"expectedUrl": "/hr/salary-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 급여관리",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "급여관리",
"expected": {
"url_contains": "/hr/salary",
"visible": ["급여관리", "급여"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"급여 목록 표시",
"월/년도 선택 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "급여 테이블 확인",
"action": "verify_table",
"checks": [
"사원명 컬럼",
"기본급 컬럼",
"수당 컬럼",
"공제 컬럼",
"실수령액 컬럼"
],
"expected": "급여 테이블 표시"
},
{
"id": 4,
"name": "월 선택 필터 확인",
"action": "verify_elements",
"checks": [
"년도 선택",
"월 선택"
],
"expected": "날짜 필터 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "급여 목록, 필터 확인"
}
]
}

82
hr-vacation.json Normal file
View File

@@ -0,0 +1,82 @@
{
"id": "hr-vacation",
"name": "휴가관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "인사관리 > 휴가관리 메뉴의 휴가 신청/조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "인사관리",
"level2": "휴가관리",
"expectedUrl": "/hr/vacation-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 인사관리 > 휴가관리",
"action": "menu_navigate",
"level1": "인사관리",
"level2": "휴가관리",
"expected": {
"url_contains": "/hr/vacation",
"visible": ["휴가관리", "휴가"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"휴가 목록 표시",
"휴가 신청 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "휴가 현황 카드 확인",
"action": "verify_elements",
"checks": [
"잔여 연차 표시",
"사용 연차 표시",
"총 연차 표시"
],
"expected": "휴가 현황 카드 표시"
},
{
"id": 4,
"name": "휴가 테이블 확인",
"action": "verify_table",
"checks": [
"휴가 유형 컬럼",
"시작일 컬럼",
"종료일 컬럼",
"상태 컬럼"
],
"expected": "휴가 테이블 표시"
},
{
"id": 5,
"name": "휴가 신청 버튼 확인",
"action": "verify_elements",
"checks": [
"휴가 신청 버튼 존재"
],
"expected": "신청 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "휴가 목록, 신청 버튼 확인"
}
]
}

115
item-master.json Normal file
View File

@@ -0,0 +1,115 @@
{
"id": "item-master",
"name": "품목기준관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "품목관리 > 품목기준관리 메뉴의 목록 조회, 검색, 상세 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "품목관리",
"level2": "품목기준관리",
"expectedUrl": "/master-data/item-master-data-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 품목관리 > 품목기준관리",
"action": "menu_navigate",
"level1": "품목관리",
"level2": "품목기준관리",
"expected": {
"url_contains": "/master-data",
"visible": ["품목기준관리", "품목"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"검색 입력 필드 존재",
"테이블 또는 목록 표시",
"등록/추가 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "테이블 구조 확인",
"action": "verify_table",
"checks": [
"품목코드 컬럼",
"품목명 컬럼",
"규격 컬럼",
"단위 컬럼"
],
"expected": "주요 컬럼 존재"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "테스트",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 결과 확인",
"action": "wait",
"duration": 500,
"expected": "검색 결과 표시"
},
{
"id": 6,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
},
{
"id": 7,
"name": "테이블 행 클릭 - 상세 페이지",
"action": "click",
"target": "table tbody tr:first-child",
"expected": "상세 페이지로 이동"
},
{
"id": 8,
"name": "상세 페이지 요소 확인",
"action": "verify_elements",
"checks": [
"품목 정보 표시",
"목록 버튼 존재"
],
"expected": "상세 정보 정상 표시"
},
{
"id": 9,
"name": "목록으로 돌아가기",
"action": "click",
"target": "목록",
"expected": "목록 페이지로 복귀"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5, 6],
"criteria": "검색 시 데이터 변화 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "입력 필드, 동작 버튼, 테이블 데이터 확인"
}
]
}

62
material-receiving.json Normal file
View File

@@ -0,0 +1,62 @@
{
"id": "material-receiving",
"name": "입고관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "자재관리 > 입고관리 메뉴의 입고 조회/등록 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "자재관리",
"level2": "입고관리",
"expectedUrl": "/material/receiving-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 자재관리 > 입고관리",
"action": "menu_navigate",
"level1": "자재관리",
"level2": "입고관리",
"expected": {
"url_contains": "/material/receiving",
"visible": ["입고관리", "입고"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"입고 목록 표시",
"입고 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "입고 테이블 확인",
"action": "verify_table",
"checks": [
"입고일 컬럼",
"품목 컬럼",
"수량 컬럼",
"거래처 컬럼"
],
"expected": "입고 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "입고 목록 확인"
}
]
}

82
material-stock.json Normal file
View File

@@ -0,0 +1,82 @@
{
"id": "material-stock",
"name": "재고현황 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "자재관리 > 재고현황 메뉴의 재고 현황 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "자재관리",
"level2": "재고현황",
"expectedUrl": "/material/stock-status"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 자재관리 > 재고현황",
"action": "menu_navigate",
"level1": "자재관리",
"level2": "재고현황",
"expected": {
"url_contains": "/material/stock",
"visible": ["재고현황", "재고"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"재고 목록 표시",
"검색 기능 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "재고 테이블 확인",
"action": "verify_table",
"checks": [
"품목 컬럼",
"현재고 컬럼",
"안전재고 컬럼"
],
"expected": "재고 테이블 표시"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "테스트",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5],
"criteria": "검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "재고 목록 확인"
}
]
}

61
production-item.json Normal file
View File

@@ -0,0 +1,61 @@
{
"id": "production-item",
"name": "생산품목관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "생산관리 > 품목관리 메뉴의 생산 품목 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "생산관리",
"level2": "품목관리",
"expectedUrl": "/production/items"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 생산관리 > 품목관리",
"action": "menu_navigate",
"level1": "생산관리",
"level2": "품목관리",
"expected": {
"url_contains": "/production",
"visible": ["품목관리", "품목"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"품목 목록 표시",
"품목 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "품목 테이블 확인",
"action": "verify_table",
"checks": [
"품목코드 컬럼",
"품목명 컬럼",
"규격 컬럼"
],
"expected": "품목 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "품목 목록 확인"
}
]
}

View File

@@ -0,0 +1,62 @@
{
"id": "production-work-result",
"name": "작업실적 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "생산관리 > 작업실적 메뉴의 작업 실적 조회/등록 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "생산관리",
"level2": "작업실적",
"expectedUrl": "/production/work-results"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 생산관리 > 작업실적",
"action": "menu_navigate",
"level1": "생산관리",
"level2": "작업실적",
"expected": {
"url_contains": "/production/work",
"visible": ["작업실적"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"작업실적 목록 표시",
"실적 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "작업실적 테이블 확인",
"action": "verify_table",
"checks": [
"작업일 컬럼",
"품목 컬럼",
"수량 컬럼",
"작업자 컬럼"
],
"expected": "작업실적 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "작업실적 목록 확인"
}
]
}

60
purchase-client.json Normal file
View File

@@ -0,0 +1,60 @@
{
"id": "purchase-client",
"name": "구매거래처관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "구매관리 > 거래처관리 메뉴의 구매 거래처 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "구매관리",
"level2": "거래처관리",
"expectedUrl": "/purchase/client"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 구매관리 > 거래처관리",
"action": "menu_navigate",
"level1": "구매관리",
"level2": "거래처관리",
"expected": {
"url_contains": "/purchase",
"visible": ["거래처관리", "거래처"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"거래처 목록 표시",
"거래처 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "거래처 테이블 확인",
"action": "verify_table",
"checks": [
"거래처명 컬럼",
"사업자번호 컬럼"
],
"expected": "거래처 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "거래처 목록 확인"
}
]
}

62
purchase-order.json Normal file
View File

@@ -0,0 +1,62 @@
{
"id": "purchase-order",
"name": "발주관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "구매관리 > 발주관리 메뉴의 발주 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "구매관리",
"level2": "발주관리",
"expectedUrl": "/purchase/orders"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 구매관리 > 발주관리",
"action": "menu_navigate",
"level1": "구매관리",
"level2": "발주관리",
"expected": {
"url_contains": "/purchase",
"visible": ["발주관리", "발주"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"발주 목록 표시",
"발주 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "발주 테이블 확인",
"action": "verify_table",
"checks": [
"발주번호 컬럼",
"거래처 컬럼",
"품목 컬럼",
"상태 컬럼"
],
"expected": "발주 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "발주 목록 확인"
}
]
}

60
purchase-status.json Normal file
View File

@@ -0,0 +1,60 @@
{
"id": "purchase-status",
"name": "구매현황 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "구매관리 > 구매현황 메뉴의 구매 현황 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "구매관리",
"level2": "구매현황",
"expectedUrl": "/purchase/status"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 구매관리 > 구매현황",
"action": "menu_navigate",
"level1": "구매관리",
"level2": "구매현황",
"expected": {
"url_contains": "/purchase",
"visible": ["구매현황", "구매"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"구매 현황 표시",
"필터 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "구매 현황 확인",
"action": "verify_elements",
"checks": [
"구매 통계 카드",
"구매 목록 테이블"
],
"expected": "구매 현황 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "구매 현황 확인"
}
]
}

View File

@@ -0,0 +1,60 @@
{
"id": "quality-certification",
"name": "품질인정심사 시스템 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "품질관리 > 품질인정심사 시스템 메뉴의 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "품질관리",
"level2": "품질인정심사 시스템",
"expectedUrl": "/quality/certification"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 품질관리 > 품질인정심사 시스템",
"action": "menu_navigate",
"level1": "품질관리",
"level2": "품질인정심사 시스템",
"expected": {
"url_contains": "/quality",
"visible": ["품질인정심사"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"페이지 콘텐츠 로드",
"주요 기능 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "페이지 요소 확인",
"action": "verify_elements",
"checks": [
"페이지 타이틀 표시",
"주요 콘텐츠 영역 존재"
],
"expected": "페이지 정상 로드"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "페이지 콘텐츠 확인"
}
]
}

181
quality-inspection.json Normal file
View File

@@ -0,0 +1,181 @@
{
"id": "quality-inspection",
"name": "제품검사관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "품질관리 > 제품검사관리 메뉴의 목록 조회, 필터, 검색, 등록, 상세 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "품질관리",
"level2": "제품검사관리",
"expectedUrl": "/quality/inspections"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 품질관리 > 제품검사관리",
"action": "menu_navigate",
"level1": "품질관리",
"level2": "제품검사관리",
"expected": {
"url_contains": "/quality/inspections",
"visible": ["제품검사 목록", "제품검사 등록"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"검색 입력 필드 존재 및 입력 가능",
"날짜 필터 존재",
"테이블 데이터 표시",
"제품검사 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "상태 카드 확인",
"action": "verify_elements",
"checks": [
"접수 카드 표시",
"진행중 카드 표시",
"완료 카드 표시"
],
"expected": "3개 상태 카드 모두 표시"
},
{
"id": 4,
"name": "테이블 구조 확인",
"action": "verify_table",
"checks": [
"No. 컬럼",
"품질관리서 번호 컬럼",
"현장명 컬럼",
"수주처 컬럼",
"개소 컬럼",
"필수정보 컬럼",
"검사기간 컬럼",
"검사자 컬럼",
"상태 컬럼",
"작성자 컬럼",
"접수일 컬럼"
],
"expected": "11개 컬럼 존재"
},
{
"id": 5,
"name": "날짜 필터 테스트 - 당월",
"action": "click",
"target": "당월",
"expected": "당월 데이터로 필터링"
},
{
"id": 6,
"name": "날짜 필터 테스트 - 당해년도",
"action": "click",
"target": "당해년도",
"expected": "당해년도 데이터로 필터링"
},
{
"id": 7,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "현장명",
"expected": "검색어 입력됨"
},
{
"id": 8,
"name": "검색 결과 확인",
"action": "wait",
"duration": 500,
"verify": {
"tableContains": "현장명"
},
"expected": "검색 결과 표시"
},
{
"id": 9,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
},
{
"id": 10,
"name": "테이블 행 클릭 - 상세 페이지",
"action": "click",
"target": "table tbody tr:first-child",
"expected": "상세 페이지로 이동"
},
{
"id": 11,
"name": "상세 페이지 확인",
"action": "verify_url",
"expected": {
"url_contains": "/quality/inspections/"
}
},
{
"id": 12,
"name": "상세 페이지 요소 확인",
"action": "verify_elements",
"checks": [
"품질관리서 정보 표시",
"목록 버튼 존재",
"수정 버튼 존재"
],
"expected": "상세 정보 정상 표시"
},
{
"id": 13,
"name": "목록으로 돌아가기",
"action": "click",
"target": "목록",
"expected": "목록 페이지로 복귀"
},
{
"id": 14,
"name": "목록 페이지 복귀 확인",
"action": "verify_url",
"expected": {
"url_contains": "/quality/inspections",
"url_not_contains": "/quality/inspections/"
}
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [5, 6, 7, 8, 9],
"criteria": "날짜 필터 및 검색 시 데이터 변화 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "입력 필드, 동작 버튼, 테이블 데이터 확인"
}
],
"expectedAPIs": [
{
"method": "GET",
"endpoint": "/api/v1/quality/inspections",
"description": "제품검사 목록 조회"
},
{
"method": "GET",
"endpoint": "/api/v1/quality/inspections/{id}",
"description": "제품검사 상세 조회"
}
]
}

70
report-analysis.json Normal file
View File

@@ -0,0 +1,70 @@
{
"id": "report-analysis",
"name": "종합분석 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "리포트 > 종합분석 메뉴의 분석 대시보드 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "리포트",
"level2": "종합분석",
"expectedUrl": "/reports/comprehensive-analysis"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 리포트 > 종합분석",
"action": "menu_navigate",
"level1": "리포트",
"level2": "종합분석",
"expected": {
"url_contains": "/reports/comprehensive",
"visible": ["종합분석", "분석"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"분석 차트 표시",
"데이터 요약 카드 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "분석 대시보드 확인",
"action": "verify_elements",
"checks": [
"매출 차트 또는 데이터",
"비용 차트 또는 데이터",
"요약 통계"
],
"expected": "분석 대시보드 표시"
},
{
"id": 4,
"name": "기간 선택 필터 확인",
"action": "verify_elements",
"checks": [
"기간 선택 가능"
],
"expected": "기간 필터 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "분석 차트, 데이터 확인"
}
]
}

82
sales-client.json Normal file
View File

@@ -0,0 +1,82 @@
{
"id": "sales-client",
"name": "판매거래처관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "판매관리 > 거래처관리 메뉴의 판매 거래처 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "판매관리",
"level2": "거래처관리",
"expectedUrl": "/sales/client-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 판매관리 > 거래처관리",
"action": "menu_navigate",
"level1": "판매관리",
"level2": "거래처관리",
"expected": {
"url_contains": "/sales/client",
"visible": ["거래처관리", "거래처"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"거래처 목록 표시",
"거래처 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "거래처 테이블 확인",
"action": "verify_table",
"checks": [
"거래처명 컬럼",
"사업자번호 컬럼",
"연락처 컬럼"
],
"expected": "거래처 테이블 표시"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "가우스",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5],
"criteria": "검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "거래처 목록, 등록 버튼 확인"
}
]
}

84
sales-order.json Normal file
View File

@@ -0,0 +1,84 @@
{
"id": "sales-order",
"name": "수주관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "판매관리 > 수주관리 메뉴의 수주 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "판매관리",
"level2": "수주관리",
"expectedUrl": "/sales/orders"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 판매관리 > 수주관리",
"action": "menu_navigate",
"level1": "판매관리",
"level2": "수주관리",
"expected": {
"url_contains": "/sales",
"visible": ["수주관리", "수주"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"수주 목록 표시",
"수주 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "수주 테이블 확인",
"action": "verify_table",
"checks": [
"수주번호 컬럼",
"거래처 컬럼",
"품목 컬럼",
"금액 컬럼",
"상태 컬럼"
],
"expected": "수주 테이블 표시"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "테스트",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5],
"criteria": "검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "수주 목록, 등록 버튼 확인"
}
]
}

82
sales-pricing.json Normal file
View File

@@ -0,0 +1,82 @@
{
"id": "sales-pricing",
"name": "단가관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "판매관리 > 단가관리 메뉴의 단가 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "판매관리",
"level2": "단가관리",
"expectedUrl": "/sales/pricing-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 판매관리 > 단가관리",
"action": "menu_navigate",
"level1": "판매관리",
"level2": "단가관리",
"expected": {
"url_contains": "/sales/pricing",
"visible": ["단가관리", "단가"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"단가 목록 표시",
"단가 등록 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "단가 테이블 확인",
"action": "verify_table",
"checks": [
"품목 컬럼",
"단가 컬럼",
"적용일 컬럼"
],
"expected": "단가 테이블 표시"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "테스트",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5],
"criteria": "검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "단가 목록 확인"
}
]
}

93
sales-quotation.json Normal file
View File

@@ -0,0 +1,93 @@
{
"id": "sales-quotation",
"name": "견적관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "판매관리 > 견적관리 메뉴의 견적서 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "판매관리",
"level2": "견적관리",
"expectedUrl": "/sales/quotation"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 판매관리 > 견적관리",
"action": "menu_navigate",
"level1": "판매관리",
"level2": "견적관리",
"expected": {
"url_contains": "/sales",
"visible": ["견적관리", "견적"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"견적 목록 표시",
"견적 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "견적 테이블 확인",
"action": "verify_table",
"checks": [
"견적번호 컬럼",
"거래처 컬럼",
"금액 컬럼",
"상태 컬럼",
"작성일 컬럼"
],
"expected": "견적 테이블 표시"
},
{
"id": 4,
"name": "검색 기능 테스트",
"action": "fill",
"target": "input[placeholder*='검색']",
"value": "테스트",
"expected": "검색어 입력됨"
},
{
"id": 5,
"name": "검색 초기화",
"action": "clear",
"target": "input[placeholder*='검색']",
"expected": "검색어 삭제"
},
{
"id": 6,
"name": "견적 등록 버튼 확인",
"action": "verify_elements",
"checks": [
"견적 등록 버튼 존재"
],
"expected": "등록 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 3,
"name": "검색/필터",
"steps": [4, 5],
"criteria": "검색 기능 확인"
},
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "견적 목록, 등록 버튼 확인"
}
]
}

70
settings-account.json Normal file
View File

@@ -0,0 +1,70 @@
{
"id": "settings-account",
"name": "계정정보 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "설정 > 계정정보 메뉴의 계정 정보 조회/수정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "설정",
"level2": "계정정보",
"expectedUrl": "/settings/account"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 설정 > 계정정보",
"action": "menu_navigate",
"level1": "설정",
"level2": "계정정보",
"expected": {
"url_contains": "/settings",
"visible": ["계정정보", "프로필"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"계정 정보 표시",
"수정 기능 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "계정 정보 확인",
"action": "verify_elements",
"checks": [
"사용자명 표시",
"이메일 표시",
"프로필 이미지"
],
"expected": "계정 정보 표시"
},
{
"id": 4,
"name": "비밀번호 변경 버튼 확인",
"action": "verify_elements",
"checks": [
"비밀번호 변경 버튼 존재"
],
"expected": "비밀번호 변경 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "계정 정보, 수정 기능 확인"
}
]
}

71
settings-company.json Normal file
View File

@@ -0,0 +1,71 @@
{
"id": "settings-company",
"name": "회사정보 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "설정 > 회사정보 메뉴의 회사 정보 조회/수정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "설정",
"level2": "회사정보",
"expectedUrl": "/company-info"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 설정 > 회사정보",
"action": "menu_navigate",
"level1": "설정",
"level2": "회사정보",
"expected": {
"url_contains": "/company",
"visible": ["회사정보", "회사"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"회사 정보 표시",
"수정 기능 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "회사 정보 확인",
"action": "verify_elements",
"checks": [
"회사명 표시",
"사업자등록번호 표시",
"주소 표시",
"대표자명 표시"
],
"expected": "회사 정보 표시"
},
{
"id": 4,
"name": "수정 버튼 확인",
"action": "verify_elements",
"checks": [
"수정 버튼 존재"
],
"expected": "수정 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "회사 정보, 수정 기능 확인"
}
]
}

60
settings-permission.json Normal file
View File

@@ -0,0 +1,60 @@
{
"id": "settings-permission",
"name": "권한관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "설정 > 권한관리 메뉴의 권한 설정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "설정",
"level2": "권한관리",
"expectedUrl": "/settings/permissions"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 설정 > 권한관리",
"action": "menu_navigate",
"level1": "설정",
"level2": "권한관리",
"expected": {
"url_contains": "/settings/permissions",
"visible": ["권한관리", "권한"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"권한 목록 표시",
"권한 설정 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "권한 그룹 목록 확인",
"action": "verify_elements",
"checks": [
"권한 그룹 목록",
"권한 추가 버튼"
],
"expected": "권한 목록 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "권한 목록, 설정 기능 확인"
}
]
}

70
settings-popup.json Normal file
View File

@@ -0,0 +1,70 @@
{
"id": "settings-popup",
"name": "팝업관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "설정 > 팝업관리 메뉴의 팝업 설정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "설정",
"level2": "팝업관리",
"expectedUrl": "/settings/popup-management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 설정 > 팝업관리",
"action": "menu_navigate",
"level1": "설정",
"level2": "팝업관리",
"expected": {
"url_contains": "/settings/popup",
"visible": ["팝업관리", "팝업"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"팝업 목록 표시",
"팝업 등록 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "팝업 목록 확인",
"action": "verify_table",
"checks": [
"팝업 제목 컬럼",
"상태 컬럼",
"기간 컬럼"
],
"expected": "팝업 목록 표시"
},
{
"id": 4,
"name": "팝업 등록 버튼 확인",
"action": "verify_elements",
"checks": [
"팝업 등록 버튼 존재"
],
"expected": "등록 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "팝업 목록, 등록 기능 확인"
}
]
}

69
settings-rank.json Normal file
View File

@@ -0,0 +1,69 @@
{
"id": "settings-rank",
"name": "직급관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "설정 > 직급관리 메뉴의 직급 설정 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "설정",
"level2": "직급관리",
"expectedUrl": "/settings/ranks"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 설정 > 직급관리",
"action": "menu_navigate",
"level1": "설정",
"level2": "직급관리",
"expected": {
"url_contains": "/settings/ranks",
"visible": ["직급관리", "직급"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"직급 목록 표시",
"직급 추가 가능"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "직급 목록 확인",
"action": "verify_table",
"checks": [
"직급명 컬럼",
"순서 컬럼"
],
"expected": "직급 목록 표시"
},
{
"id": 4,
"name": "직급 추가 버튼 확인",
"action": "verify_elements",
"checks": [
"직급 추가 버튼 존재"
],
"expected": "추가 버튼 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "직급 목록, 추가 기능 확인"
}
]
}

View File

@@ -0,0 +1,61 @@
{
"id": "settings-subscription",
"name": "구독관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "설정 > 구독관리 메뉴의 구독 정보 조회 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "설정",
"level2": "구독관리",
"expectedUrl": "/subscription"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 설정 > 구독관리",
"action": "menu_navigate",
"level1": "설정",
"level2": "구독관리",
"expected": {
"url_contains": "/subscription",
"visible": ["구독관리", "구독"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"구독 정보 표시",
"플랜 정보 표시"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "구독 정보 확인",
"action": "verify_elements",
"checks": [
"현재 플랜 표시",
"구독 기간 표시",
"결제 정보 표시"
],
"expected": "구독 정보 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "구독 정보 확인"
}
]
}

View File

@@ -1,255 +1,62 @@
{ {
"id": "shipment-management", "id": "shipment-management",
"name": "출관리 테스트", "name": "출관리 테스트",
"screenshotPolicy": { "screenshotPolicy": {
"onErrorOnly": true, "onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"] "captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
}, },
"description": "출고관리 > 출관리 페이지의 출하 등록/조회/수정 기능을 테스트하는 E2E 테스트", "description": "출고관리 > 출관리 메뉴의 출고 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com", "baseUrl": "https://dev.codebridge-x.com",
"url": "/shipping/shipment",
"navigation": {
"targetUrl": "/shipping/shipment",
"urlPattern": "/shipping/shipment|/ko/shipping/shipment",
"menuHints": ["출하관리", "출하 관리", "출고관리"]
},
"menuNavigation": { "menuNavigation": {
"level1": "출고관리", "level1": "출고관리",
"level2": "출관리", "level2": "출관리",
"expectedUrl": "/shipping/shipment" "expectedUrl": "/shipment/management"
}, },
"menuNavigationEnhanced": { "auth": {
"strategy": "scroll-and-search", "username": "TestUser5",
"sidebar": { "password": "password123!"
"scrollContainer": ".sidebar-scroll",
"scrollStep": 200,
"maxScrollAttempts": 5,
"waitAfterScroll": 300
},
"level1": {
"text": "출고관리",
"expandable": true,
"waitAfterClick": 500
},
"level2": {
"text": "출하관리",
"waitAfterClick": 300
},
"fallbackUrl": "/shipping/shipment",
"expectedUrl": "/shipping/shipment"
}, },
"timeout": 90000,
"tags": ["shipping", "shipment", "crud"],
"login": {
"url": "https://dev.codebridge-x.com/login",
"credentials": {
"id": "TestUser5",
"password": "password123!"
},
"successIndicator": "대시보드"
},
"testData": {
"shipment": {
"deliveryMethod": "택배",
"note": "E2E 테스트 출하입니다"
}
},
"steps": [ "steps": [
{ {
"id": "step-0", "id": 1,
"name": "사이드바 메뉴 전체 펼치기", "name": "메뉴 진입: 출고관리 > 출고관리",
"description": "모두 펼치기 버튼을 클릭하여 전체 메뉴를 펼친 후 메뉴 탐색 준비", "action": "menu_navigate",
"actions": [ "level1": "출고관리",
{ "level2": "출고관리",
"type": "evaluate", "expected": {
"script": "document.querySelector('.sidebar-scroll')?.scrollTo({top:0,behavior:'instant'})" "url_contains": "/shipment",
}, "visible": ["출고관리", "출고"]
{ "type": "wait", "duration": 300 }, }
{
"type": "evaluate",
"script": "Array.from(document.querySelectorAll('button')).find(b => b.innerText?.includes('모두 펼치기'))?.click()"
},
{ "type": "wait", "duration": 2000 }
]
}, },
{ {
"id": "step-1", "id": 2,
"name": "출고관리 메뉴 진입", "name": "필수 검증 #5: 목업 페이지 감지",
"description": "출고관리 > 출하관리 메뉴로 이동", "action": "verify_not_mockup",
"actions": [ "checks": [
{ "출고 목록 표시",
"type": "scrollAndFind", "출고 등록 버튼 존재"
"container": ".sidebar-scroll",
"target": "출고관리",
"scrollStep": 200,
"maxAttempts": 5
},
{ "type": "click", "target": "출고관리" },
{ "type": "wait", "duration": 500 },
{ "type": "click", "target": "출하관리" }
], ],
"expect": { "expected": "정상 페이지 (목업 아님)"
"url": "/shipping/shipment",
"visible": ["출하 목록", "출하 등록"]
},
"fallback": {
"type": "navigate",
"url": "/shipping/shipment"
}
}, },
{ {
"id": "step-2", "id": 3,
"name": "페이지 구조 확인", "name": "출고 테이블 확인",
"description": "통계 카드와 테이블 구조 확인", "action": "verify_table",
"verify": { "checks": [
"visible": ["당일 출하", "출고 대기", "배송중", "긴급 출하"], "출고일 컬럼",
"tableColumns": ["번호", "출고번호", "로트번호", "출고예정일", "상태", "출하가능", "배송", "발주처", "현장명", "담당", "납기"] "거래처 컬럼",
} "품목 컬럼",
}, "수량 컬럼"
{
"id": "step-3",
"name": "필수 검증 #3: 상태 탭 필터 - 출고예정",
"description": "출고예정 탭 클릭하여 필터링 확인",
"actions": [
{ "type": "click", "target": "출고예정", "role": "tab" },
{ "type": "wait", "duration": 300 }
], ],
"expect": { "expected": "출고 테이블 표시"
"tabActive": "출고예정",
"dataFiltered": true
}
},
{
"id": "step-4",
"name": "필수 검증 #3: 상태 탭 필터 - 배송완료",
"description": "배송완료 탭 클릭하여 필터링 확인",
"actions": [
{ "type": "click", "target": "배송완료", "role": "tab" },
{ "type": "wait", "duration": 300 }
],
"expect": {
"tabActive": "배송완료",
"dataFiltered": true
}
},
{
"id": "step-5",
"name": "전체 탭으로 복귀",
"description": "전체 탭 클릭하여 모든 출하 표시",
"actions": [
{ "type": "click", "target": "전체", "role": "tab" },
{ "type": "wait", "duration": 300 }
],
"expect": {
"tabActive": "전체",
"allDataShown": true
}
},
{
"id": "step-6",
"name": "필수 검증 #2: 출하 등록 모달/페이지 열기",
"description": "출하 등록 버튼 클릭하여 등록 화면 열기",
"actions": [
{ "type": "click", "target": "출하 등록" }
],
"expect": {
"pageOrModal": "출하 등록",
"visible": ["수주", "출고예정일", "배송방식"]
}
},
{
"id": "step-7",
"name": "출하 등록 폼 확인",
"description": "출하 등록 폼 필드 확인",
"verify": {
"formFields": ["수주", "출고예정일", "배송방식", "담당자"]
}
},
{
"id": "step-8",
"name": "출하 등록 취소",
"description": "취소 버튼 또는 ESC로 등록 취소",
"actions": [
{ "type": "press", "key": "Escape" },
{ "type": "wait", "duration": 300 }
]
},
{
"id": "step-9",
"name": "출하 상세 열기",
"description": "출하 항목 클릭하여 상세 보기",
"actions": [
{
"type": "evaluate",
"script": "document.querySelector('tbody tr')?.click()"
}
],
"expect": {
"pageOrModal": "출하 상세",
"visible": ["출고번호", "상태", "발주처", "현장명"]
}
},
{
"id": "step-10",
"name": "출하 상세 정보 확인",
"description": "출하 상세 정보 표시 확인",
"verify": {
"visible": ["출고번호", "출고예정일", "상태", "배송방식", "발주처", "현장명"]
}
},
{
"id": "step-11",
"name": "상세 닫기",
"description": "ESC 키로 상세 닫기",
"actions": [
{ "type": "press", "key": "Escape" },
{ "type": "wait", "duration": 300 }
]
} }
], ],
"requiredVerifications": [
"assertions": [
{ {
"type": "url", "id": 5,
"expected": "/shipping/shipment", "name": "목업 페이지 감지",
"message": "출하관리 페이지에 머물러야 함" "steps": [2],
}, "criteria": "출고 목록 확인"
{
"type": "elementExists",
"selector": "button:has-text('출하 등록')",
"message": "출하 등록 버튼이 표시되어야 함"
} }
], ]
"mandatoryVerifications": {
"description": "E2E_TEST_CONFIG.md 기준 필수 검증 항목",
"items": [
{
"id": 2,
"name": "등록/저장 버튼",
"trigger": "출하 등록 버튼",
"verification": "URL 유지 + 에러 페이지 없음 + 성공 토스트",
"failCondition": "404/500 에러 페이지 이동"
},
{
"id": 3,
"name": "검색/필터",
"trigger": "상태 탭 필터",
"verification": "데이터 변화 확인",
"failCondition": "필터 적용 후 데이터 무변화"
}
]
},
"notes": {
"testScope": "출하 등록 → 조회 → 상태 필터링 테스트",
"statsCards": ["당일 출하", "출고 대기", "배송중", "긴급 출하"],
"statusTabs": ["전체", "출고예정", "출하대기", "배송중", "배송완료"],
"tableColumns": ["번호", "출고번호", "로트번호", "출고예정일", "상태", "출하가능", "배송", "발주처", "현장명", "담당", "납기"],
"workflow": "수주확정 → 출고예정 → 출하대기 → 배송중 → 배송완료",
"prerequisites": "로그인된 사용자, 수주확정된 데이터 존재 시 출하 등록 가능"
}
} }

61
vehicle-management.json Normal file
View File

@@ -0,0 +1,61 @@
{
"id": "vehicle-management",
"name": "차량관리 테스트",
"screenshotPolicy": {
"onErrorOnly": true,
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
},
"description": "차량관리 > 차량관리 메뉴의 차량 조회/관리 기능 테스트",
"baseUrl": "https://dev.codebridge-x.com",
"menuNavigation": {
"level1": "차량관리",
"level2": "차량관리",
"expectedUrl": "/vehicle/management"
},
"auth": {
"username": "TestUser5",
"password": "password123!"
},
"steps": [
{
"id": 1,
"name": "메뉴 진입: 차량관리 > 차량관리",
"action": "menu_navigate",
"level1": "차량관리",
"level2": "차량관리",
"expected": {
"url_contains": "/vehicle",
"visible": ["차량관리", "차량"]
}
},
{
"id": 2,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
"차량 목록 표시",
"차량 등록 버튼 존재"
],
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 3,
"name": "차량 테이블 확인",
"action": "verify_table",
"checks": [
"차량번호 컬럼",
"차종 컬럼",
"담당자 컬럼"
],
"expected": "차량 테이블 표시"
}
],
"requiredVerifications": [
{
"id": 5,
"name": "목업 페이지 감지",
"steps": [2],
"criteria": "차량 목록 확인"
}
]
}