From 88dbc00075f1dbc6287f5e6845722c7f67601aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Tue, 3 Feb 2026 08:02:00 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20E2E=20=EC=8B=9C=EB=82=98=EB=A6=AC?= =?UTF-8?q?=EC=98=A4=2036=EA=B0=9C=20=EC=B6=94=EA=B0=80=20-=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EB=A9=94=EB=89=B4=20=EC=BB=A4=EB=B2=84=EB=A6=AC?= =?UTF-8?q?=EC=A7=80=20=ED=99=95=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 새 시나리오: - 품질관리: 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 --- accounting-client.json | 116 ++++++++++++++++ accounting-deposit.json | 71 ++++++++++ accounting-ledger.json | 73 ++++++++++ accounting-payment.json | 61 ++++++++ accounting-withdrawal.json | 71 ++++++++++ customer-notice.json | 69 +++++++++ hr-attendance-admin.json | 92 ++++++++++++ hr-attendance-status.json | 72 ++++++++++ hr-card.json | 70 ++++++++++ hr-department.json | 85 ++++++++++++ hr-employee.json | 155 +++++++++++++++++++++ hr-salary.json | 73 ++++++++++ hr-vacation.json | 82 +++++++++++ item-master.json | 115 +++++++++++++++ material-receiving.json | 62 +++++++++ material-stock.json | 82 +++++++++++ production-item.json | 61 ++++++++ production-work-result.json | 62 +++++++++ purchase-client.json | 60 ++++++++ purchase-order.json | 62 +++++++++ purchase-status.json | 60 ++++++++ quality-certification.json | 60 ++++++++ quality-inspection.json | 181 ++++++++++++++++++++++++ report-analysis.json | 70 ++++++++++ sales-client.json | 82 +++++++++++ sales-order.json | 84 +++++++++++ sales-pricing.json | 82 +++++++++++ sales-quotation.json | 93 +++++++++++++ settings-account.json | 70 ++++++++++ settings-company.json | 71 ++++++++++ settings-permission.json | 60 ++++++++ settings-popup.json | 70 ++++++++++ settings-rank.json | 69 +++++++++ settings-subscription.json | 61 ++++++++ shipment-management.json | 269 +++++------------------------------- vehicle-management.json | 61 ++++++++ 36 files changed, 2806 insertions(+), 231 deletions(-) create mode 100644 accounting-client.json create mode 100644 accounting-deposit.json create mode 100644 accounting-ledger.json create mode 100644 accounting-payment.json create mode 100644 accounting-withdrawal.json create mode 100644 customer-notice.json create mode 100644 hr-attendance-admin.json create mode 100644 hr-attendance-status.json create mode 100644 hr-card.json create mode 100644 hr-department.json create mode 100644 hr-employee.json create mode 100644 hr-salary.json create mode 100644 hr-vacation.json create mode 100644 item-master.json create mode 100644 material-receiving.json create mode 100644 material-stock.json create mode 100644 production-item.json create mode 100644 production-work-result.json create mode 100644 purchase-client.json create mode 100644 purchase-order.json create mode 100644 purchase-status.json create mode 100644 quality-certification.json create mode 100644 quality-inspection.json create mode 100644 report-analysis.json create mode 100644 sales-client.json create mode 100644 sales-order.json create mode 100644 sales-pricing.json create mode 100644 sales-quotation.json create mode 100644 settings-account.json create mode 100644 settings-company.json create mode 100644 settings-permission.json create mode 100644 settings-popup.json create mode 100644 settings-rank.json create mode 100644 settings-subscription.json create mode 100644 vehicle-management.json diff --git a/accounting-client.json b/accounting-client.json new file mode 100644 index 0000000..545792d --- /dev/null +++ b/accounting-client.json @@ -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": "거래처 목록, 통계 카드 확인" + } + ] +} diff --git a/accounting-deposit.json b/accounting-deposit.json new file mode 100644 index 0000000..92a18ab --- /dev/null +++ b/accounting-deposit.json @@ -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": "입금 목록, 등록 버튼 확인" + } + ] +} diff --git a/accounting-ledger.json b/accounting-ledger.json new file mode 100644 index 0000000..3ad3dbf --- /dev/null +++ b/accounting-ledger.json @@ -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": "원장 목록 확인" + } + ] +} diff --git a/accounting-payment.json b/accounting-payment.json new file mode 100644 index 0000000..2ab1ac5 --- /dev/null +++ b/accounting-payment.json @@ -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": "결제 내역 확인" + } + ] +} diff --git a/accounting-withdrawal.json b/accounting-withdrawal.json new file mode 100644 index 0000000..4e9e8dd --- /dev/null +++ b/accounting-withdrawal.json @@ -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": "출금 목록, 등록 버튼 확인" + } + ] +} diff --git a/customer-notice.json b/customer-notice.json new file mode 100644 index 0000000..64ac1d0 --- /dev/null +++ b/customer-notice.json @@ -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": "공지사항 목록 확인" + } + ] +} diff --git a/hr-attendance-admin.json b/hr-attendance-admin.json new file mode 100644 index 0000000..3a9bfdb --- /dev/null +++ b/hr-attendance-admin.json @@ -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": "근태 목록, 필터, 검색 확인" + } + ] +} diff --git a/hr-attendance-status.json b/hr-attendance-status.json new file mode 100644 index 0000000..84b2adf --- /dev/null +++ b/hr-attendance-status.json @@ -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": "출퇴근 현황, 동작 버튼 확인" + } + ] +} diff --git a/hr-card.json b/hr-card.json new file mode 100644 index 0000000..d39beae --- /dev/null +++ b/hr-card.json @@ -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": "카드 목록, 동작 버튼 확인" + } + ] +} diff --git a/hr-department.json b/hr-department.json new file mode 100644 index 0000000..33d9e90 --- /dev/null +++ b/hr-department.json @@ -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": "부서 목록, 동작 버튼 확인" + } + ] +} diff --git a/hr-employee.json b/hr-employee.json new file mode 100644 index 0000000..ba1527c --- /dev/null +++ b/hr-employee.json @@ -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": "사원 등록" + } + ] +} diff --git a/hr-salary.json b/hr-salary.json new file mode 100644 index 0000000..c1fba16 --- /dev/null +++ b/hr-salary.json @@ -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": "급여 목록, 필터 확인" + } + ] +} diff --git a/hr-vacation.json b/hr-vacation.json new file mode 100644 index 0000000..08bddfc --- /dev/null +++ b/hr-vacation.json @@ -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": "휴가 목록, 신청 버튼 확인" + } + ] +} diff --git a/item-master.json b/item-master.json new file mode 100644 index 0000000..2330b9f --- /dev/null +++ b/item-master.json @@ -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": "입력 필드, 동작 버튼, 테이블 데이터 확인" + } + ] +} diff --git a/material-receiving.json b/material-receiving.json new file mode 100644 index 0000000..a1a3845 --- /dev/null +++ b/material-receiving.json @@ -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": "입고 목록 확인" + } + ] +} diff --git a/material-stock.json b/material-stock.json new file mode 100644 index 0000000..e9f7d2f --- /dev/null +++ b/material-stock.json @@ -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": "재고 목록 확인" + } + ] +} diff --git a/production-item.json b/production-item.json new file mode 100644 index 0000000..71a6890 --- /dev/null +++ b/production-item.json @@ -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": "품목 목록 확인" + } + ] +} diff --git a/production-work-result.json b/production-work-result.json new file mode 100644 index 0000000..c16e32b --- /dev/null +++ b/production-work-result.json @@ -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": "작업실적 목록 확인" + } + ] +} diff --git a/purchase-client.json b/purchase-client.json new file mode 100644 index 0000000..be73623 --- /dev/null +++ b/purchase-client.json @@ -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": "거래처 목록 확인" + } + ] +} diff --git a/purchase-order.json b/purchase-order.json new file mode 100644 index 0000000..6e264cc --- /dev/null +++ b/purchase-order.json @@ -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": "발주 목록 확인" + } + ] +} diff --git a/purchase-status.json b/purchase-status.json new file mode 100644 index 0000000..8dd2881 --- /dev/null +++ b/purchase-status.json @@ -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": "구매 현황 확인" + } + ] +} diff --git a/quality-certification.json b/quality-certification.json new file mode 100644 index 0000000..e6f97f9 --- /dev/null +++ b/quality-certification.json @@ -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": "페이지 콘텐츠 확인" + } + ] +} diff --git a/quality-inspection.json b/quality-inspection.json new file mode 100644 index 0000000..e752b41 --- /dev/null +++ b/quality-inspection.json @@ -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": "제품검사 상세 조회" + } + ] +} diff --git a/report-analysis.json b/report-analysis.json new file mode 100644 index 0000000..ca0a513 --- /dev/null +++ b/report-analysis.json @@ -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": "분석 차트, 데이터 확인" + } + ] +} diff --git a/sales-client.json b/sales-client.json new file mode 100644 index 0000000..5eacb0b --- /dev/null +++ b/sales-client.json @@ -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": "거래처 목록, 등록 버튼 확인" + } + ] +} diff --git a/sales-order.json b/sales-order.json new file mode 100644 index 0000000..fabdc6d --- /dev/null +++ b/sales-order.json @@ -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": "수주 목록, 등록 버튼 확인" + } + ] +} diff --git a/sales-pricing.json b/sales-pricing.json new file mode 100644 index 0000000..ede9bc5 --- /dev/null +++ b/sales-pricing.json @@ -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": "단가 목록 확인" + } + ] +} diff --git a/sales-quotation.json b/sales-quotation.json new file mode 100644 index 0000000..3c0e578 --- /dev/null +++ b/sales-quotation.json @@ -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": "견적 목록, 등록 버튼 확인" + } + ] +} diff --git a/settings-account.json b/settings-account.json new file mode 100644 index 0000000..3325f4e --- /dev/null +++ b/settings-account.json @@ -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": "계정 정보, 수정 기능 확인" + } + ] +} diff --git a/settings-company.json b/settings-company.json new file mode 100644 index 0000000..d533ad6 --- /dev/null +++ b/settings-company.json @@ -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": "회사 정보, 수정 기능 확인" + } + ] +} diff --git a/settings-permission.json b/settings-permission.json new file mode 100644 index 0000000..9e5b2f6 --- /dev/null +++ b/settings-permission.json @@ -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": "권한 목록, 설정 기능 확인" + } + ] +} diff --git a/settings-popup.json b/settings-popup.json new file mode 100644 index 0000000..0960048 --- /dev/null +++ b/settings-popup.json @@ -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": "팝업 목록, 등록 기능 확인" + } + ] +} diff --git a/settings-rank.json b/settings-rank.json new file mode 100644 index 0000000..fecf381 --- /dev/null +++ b/settings-rank.json @@ -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": "직급 목록, 추가 기능 확인" + } + ] +} diff --git a/settings-subscription.json b/settings-subscription.json new file mode 100644 index 0000000..e30e0b4 --- /dev/null +++ b/settings-subscription.json @@ -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": "구독 정보 확인" + } + ] +} diff --git a/shipment-management.json b/shipment-management.json index f0b1bf5..7710140 100644 --- a/shipment-management.json +++ b/shipment-management.json @@ -1,255 +1,62 @@ { "id": "shipment-management", - "name": "출하관리 테스트", + "name": "출고관리 테스트", "screenshotPolicy": { "onErrorOnly": true, "captureOn": ["error", "fail", "timeout", "404", "500", "blocked"] }, - "description": "출고관리 > 출하관리 페이지의 출하 등록/조회/수정 기능을 테스트하는 E2E 테스트", + "description": "출고관리 > 출고관리 메뉴의 출고 조회/관리 기능 테스트", "baseUrl": "https://dev.codebridge-x.com", - "url": "/shipping/shipment", - "navigation": { - "targetUrl": "/shipping/shipment", - "urlPattern": "/shipping/shipment|/ko/shipping/shipment", - "menuHints": ["출하관리", "출하 관리", "출고관리"] - }, "menuNavigation": { "level1": "출고관리", - "level2": "출하관리", - "expectedUrl": "/shipping/shipment" + "level2": "출고관리", + "expectedUrl": "/shipment/management" }, - "menuNavigationEnhanced": { - "strategy": "scroll-and-search", - "sidebar": { - "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" + "auth": { + "username": "TestUser5", + "password": "password123!" }, - "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": [ { - "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 } - ] + "id": 1, + "name": "메뉴 진입: 출고관리 > 출고관리", + "action": "menu_navigate", + "level1": "출고관리", + "level2": "출고관리", + "expected": { + "url_contains": "/shipment", + "visible": ["출고관리", "출고"] + } }, { - "id": "step-1", - "name": "출고관리 메뉴 진입", - "description": "출고관리 > 출하관리 메뉴로 이동", - "actions": [ - { - "type": "scrollAndFind", - "container": ".sidebar-scroll", - "target": "출고관리", - "scrollStep": 200, - "maxAttempts": 5 - }, - { "type": "click", "target": "출고관리" }, - { "type": "wait", "duration": 500 }, - { "type": "click", "target": "출하관리" } + "id": 2, + "name": "필수 검증 #5: 목업 페이지 감지", + "action": "verify_not_mockup", + "checks": [ + "출고 목록 표시", + "출고 등록 버튼 존재" ], - "expect": { - "url": "/shipping/shipment", - "visible": ["출하 목록", "출하 등록"] - }, - "fallback": { - "type": "navigate", - "url": "/shipping/shipment" - } + "expected": "정상 페이지 (목업 아님)" }, { - "id": "step-2", - "name": "페이지 구조 확인", - "description": "통계 카드와 테이블 구조 확인", - "verify": { - "visible": ["당일 출하", "출고 대기", "배송중", "긴급 출하"], - "tableColumns": ["번호", "출고번호", "로트번호", "출고예정일", "상태", "출하가능", "배송", "발주처", "현장명", "담당", "납기"] - } - }, - { - "id": "step-3", - "name": "필수 검증 #3: 상태 탭 필터 - 출고예정", - "description": "출고예정 탭 클릭하여 필터링 확인", - "actions": [ - { "type": "click", "target": "출고예정", "role": "tab" }, - { "type": "wait", "duration": 300 } + "id": 3, + "name": "출고 테이블 확인", + "action": "verify_table", + "checks": [ + "출고일 컬럼", + "거래처 컬럼", + "품목 컬럼", + "수량 컬럼" ], - "expect": { - "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 } - ] + "expected": "출고 테이블 표시" } ], - - "assertions": [ + "requiredVerifications": [ { - "type": "url", - "expected": "/shipping/shipment", - "message": "출하관리 페이지에 머물러야 함" - }, - { - "type": "elementExists", - "selector": "button:has-text('출하 등록')", - "message": "출하 등록 버튼이 표시되어야 함" + "id": 5, + "name": "목업 페이지 감지", + "steps": [2], + "criteria": "출고 목록 확인" } - ], - - "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": "로그인된 사용자, 수주확정된 데이터 존재 시 출하 등록 가능" - } + ] } diff --git a/vehicle-management.json b/vehicle-management.json new file mode 100644 index 0000000..33e0187 --- /dev/null +++ b/vehicle-management.json @@ -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": "차량 목록 확인" + } + ] +}