refactor: 초정밀 시나리오 강화 (1060→1381 steps, 68/68 PASS)

This commit is contained in:
김보곤
2026-02-09 15:05:03 +09:00
parent 15ad1d9758
commit f5dffe2ee7
135 changed files with 23040 additions and 1652 deletions

View File

@@ -63,7 +63,7 @@
},
"steps": [
{
"id": 0,
"id": 1,
"name": "사이드바 메뉴 전체 펼치기",
"description": "모두 펼치기 버튼을 클릭하여 전체 메뉴를 펼친 후 메뉴 탐색 준비",
"actions": [
@@ -87,14 +87,14 @@
"expected": "사이드바 전체 메뉴가 펼쳐짐"
},
{
"id": 1,
"id": 2,
"name": "로그인",
"action": "click_if_exists",
"target": "form, [role=\"dialog\"], .modal",
"expected": "로그인 성공 후 메인 페이지 이동"
},
{
"id": 2,
"id": 3,
"name": "2단계 메뉴 진입: 회계관리 > 매출관리",
"description": "스크롤하며 회계관리 메뉴를 찾아 클릭 후 매출관리 진입",
"navigationPattern": "scrollAndFind",
@@ -155,7 +155,7 @@
}
},
{
"id": 3,
"id": 4,
"name": "필수 검증 #5: 목업 페이지 감지",
"action": "verify_not_mockup",
"checks": [
@@ -167,7 +167,7 @@
"expected": "정상 페이지 (목업 아님)"
},
{
"id": 4,
"id": 5,
"name": "목록 페이지 - 테이블 구조 확인",
"action": "verify_table",
"checks": [
@@ -186,7 +186,7 @@
"expected": "테이블 컬럼 구조 정상 표시"
},
{
"id": 5,
"id": 6,
"name": "계정과목명 드롭박스 확인",
"action": "verify_elements",
"checks": [
@@ -197,7 +197,7 @@
"expected": "계정과목 선택 UI 정상 표시"
},
{
"id": 6,
"id": 7,
"name": "계정과목명 드롭박스 옵션 확인",
"action": "click_if_exists",
"target": "accountSubject",
@@ -210,14 +210,14 @@
"expected": "계정과목 옵션 목록 표시"
},
{
"id": 7,
"id": 8,
"name": "체크박스 선택 (계정과목 저장용)",
"action": "click_if_exists",
"target": "first_row",
"expected": "첫 번째 행 체크박스 선택됨"
},
{
"id": 8,
"id": 9,
"name": "계정과목 변경 - 제품매출 선택",
"action": "click_if_exists",
"target": "accountSubject",
@@ -225,7 +225,7 @@
"expected": "계정과목이 '제품매출'로 변경됨"
},
{
"id": 9,
"id": 10,
"name": "필수 검증 #2: 계정과목 저장 버튼 클릭",
"action": "click_if_exists",
"target": "저장",
@@ -237,7 +237,7 @@
"expected": "저장 확인 다이얼로그 표시"
},
{
"id": 10,
"id": 11,
"name": "저장 확인 다이얼로그 - 확인 클릭",
"action": "click_if_exists",
"checks": [
@@ -248,7 +248,7 @@
"expected": "계정과목 저장 성공"
},
{
"id": "10-1",
"id": 12,
"name": "⚠️ 필수 검증: 계정과목명 변경 데이터 반영 확인",
"action": "verify_data_update",
"target": "first_row",
@@ -262,21 +262,21 @@
"note": "토스트 성공 메시지만으로 PASS 판정 불가. 실제 데이터 변경 확인 필수!"
},
{
"id": 11,
"id": 13,
"name": "매출 등록 버튼 클릭",
"action": "click_if_exists",
"target": "매출 등록",
"expected": "매출 등록 페이지로 이동 (/ko/accounting/sales?mode=new)"
},
{
"id": 12,
"id": 14,
"name": "매출 등록 페이지 - URL 확인",
"action": "verify_url",
"target": "/ko/accounting/sales?mode=new",
"expected": "매출 등록 페이지 URL 정상"
},
{
"id": 13,
"id": 15,
"name": "매출 등록 페이지 - 기본정보 섹션 확인",
"action": "verify_elements",
"checks": [
@@ -288,7 +288,7 @@
"expected": "기본정보 섹션 정상 표시"
},
{
"id": 14,
"id": 16,
"name": "매출번호 자동생성 확인",
"action": "verify_field",
"target": "salesNo",
@@ -299,14 +299,14 @@
"expected": "매출번호 자동생성 확인"
},
{
"id": 15,
"id": 17,
"name": "거래처명 드롭박스 클릭",
"action": "click_if_exists",
"target": "vendorId",
"expected": "거래처 목록 표시"
},
{
"id": 16,
"id": 18,
"name": "거래처명 선택",
"action": "click_if_exists",
"target": "vendorId",
@@ -314,7 +314,7 @@
"expected": "거래처가 선택됨"
},
{
"id": 17,
"id": 19,
"name": "매출유형 드롭박스 확인",
"action": "click_if_exists",
"target": "salesType",
@@ -330,7 +330,7 @@
"expected": "매출유형 옵션 목록 표시"
},
{
"id": 18,
"id": 20,
"name": "매출유형 선택 - 제품매출",
"action": "click_if_exists",
"target": "salesType",
@@ -338,7 +338,7 @@
"expected": "매출유형이 '제품매출'로 선택됨"
},
{
"id": 19,
"id": 21,
"name": "품목정보 섹션 확인",
"action": "verify_elements",
"checks": [
@@ -350,35 +350,35 @@
"expected": "품목정보 섹션 정상 표시"
},
{
"id": 20,
"id": 22,
"name": "품목 동적 추가 - 추가 버튼 클릭",
"action": "click_if_exists",
"target": "품목 추가",
"expected": "새로운 품목 행 추가됨"
},
{
"id": 21,
"id": 23,
"name": "품목 행 개수 확인 (2개)",
"action": "verify_row_count",
"target": "items_table",
"expected": "품목 행이 2개로 증가"
},
{
"id": 22,
"id": 24,
"name": "품목 동적 삭제 - 두 번째 행 삭제",
"action": "click_if_exists",
"target": "remove_item_row_2",
"expected": "두 번째 품목 행 삭제됨"
},
{
"id": 23,
"id": 25,
"name": "품목 행 개수 확인 (1개)",
"action": "verify_row_count",
"target": "items_table",
"expected": "품목 행이 1개로 감소"
},
{
"id": 24,
"id": 26,
"name": "품목명 입력",
"action": "click_if_exists",
"target": "items[0].itemName",
@@ -386,7 +386,7 @@
"expected": "품목명 입력됨"
},
{
"id": 25,
"id": 27,
"name": "수량 입력",
"action": "click_if_exists",
"target": "items[0].quantity",
@@ -394,7 +394,7 @@
"expected": "수량 입력됨"
},
{
"id": 26,
"id": 28,
"name": "단가 입력",
"action": "click_if_exists",
"target": "items[0].unitPrice",
@@ -402,7 +402,7 @@
"expected": "단가 입력됨"
},
{
"id": 27,
"id": 29,
"name": "자동계산 검증 - 공급가액",
"action": "verify_calculated_value",
"target": "items[0].supplyAmount",
@@ -415,7 +415,7 @@
"expected": "공급가액이 500,000원으로 자동 계산됨"
},
{
"id": 28,
"id": 30,
"name": "자동계산 검증 - 부가세",
"action": "verify_calculated_value",
"target": "items[0].vat",
@@ -428,7 +428,7 @@
"expected": "부가세가 50,000원으로 자동 계산됨"
},
{
"id": 29,
"id": 31,
"name": "적요 입력 (선택사항)",
"action": "click_if_exists",
"target": "items[0].note",
@@ -436,7 +436,7 @@
"expected": "적요 입력됨"
},
{
"id": 30,
"id": 32,
"name": "세금계산서 발행 Switch 확인",
"action": "verify_elements",
"target": "taxInvoice_section",
@@ -448,7 +448,7 @@
"expected": "세금계산서 발행 Switch 정상 표시"
},
{
"id": 31,
"id": 33,
"name": "세금계산서 발행 Switch ON",
"action": "click_if_exists",
"target": "taxInvoiceSwitch",
@@ -456,7 +456,7 @@
"expected": "세금계산서 발행 Switch가 ON으로 변경됨"
},
{
"id": 32,
"id": 34,
"name": "세금계산서 발행 Switch OFF",
"action": "click_if_exists",
"target": "taxInvoiceSwitch",
@@ -464,7 +464,7 @@
"expected": "세금계산서 발행 Switch가 OFF로 변경됨"
},
{
"id": 33,
"id": 35,
"name": "거래명세서 발행 Switch 확인",
"action": "verify_elements",
"target": "transactionStatement_section",
@@ -476,7 +476,7 @@
"expected": "거래명세서 발행 Switch 정상 표시"
},
{
"id": 34,
"id": 36,
"name": "거래명세서 발행 Switch ON",
"action": "click_if_exists",
"target": "transactionStatementSwitch",
@@ -484,7 +484,7 @@
"expected": "거래명세서 발행 Switch가 ON으로 변경됨"
},
{
"id": 35,
"id": 37,
"name": "거래명세서 발행 Switch OFF",
"action": "click_if_exists",
"target": "transactionStatementSwitch",
@@ -492,7 +492,7 @@
"expected": "거래명세서 발행 Switch가 OFF로 변경됨"
},
{
"id": 36,
"id": 38,
"name": "합계 금액 확인",
"action": "verify_totals",
"checks": [
@@ -503,28 +503,28 @@
"expected": "합계 금액 정상 표시"
},
{
"id": 37,
"id": 39,
"name": "취소 버튼 동작 테스트",
"action": "click_if_exists",
"target": "취소",
"expected": "취소 확인 다이얼로그 또는 목록 페이지로 이동"
},
{
"id": 38,
"id": 40,
"name": "취소 확인 - 목록 페이지 복귀",
"action": "verify_url",
"target": "/ko/accounting/sales",
"expected": "매출 목록 페이지로 복귀"
},
{
"id": 39,
"id": 41,
"name": "다시 매출 등록 페이지 진입",
"action": "click_if_exists",
"target": "매출 등록",
"expected": "매출 등록 페이지로 이동"
},
{
"id": 40,
"id": 42,
"name": "등록 테스트용 데이터 입력 - 거래처 선택",
"action": "click_if_exists",
"target": "vendorId",
@@ -532,7 +532,7 @@
"expected": "거래처 선택됨"
},
{
"id": 41,
"id": 43,
"name": "등록 테스트용 데이터 입력 - 매출유형",
"action": "click_if_exists",
"target": "salesType",
@@ -540,7 +540,7 @@
"expected": "매출유형 선택됨"
},
{
"id": 42,
"id": 44,
"name": "등록 테스트용 데이터 입력 - 품목명",
"action": "click_if_exists",
"target": "items[0].itemName",
@@ -548,7 +548,7 @@
"expected": "품목명 입력됨"
},
{
"id": 43,
"id": 45,
"name": "등록 테스트용 데이터 입력 - 수량",
"action": "click_if_exists",
"target": "items[0].quantity",
@@ -556,7 +556,7 @@
"expected": "수량 입력됨"
},
{
"id": 44,
"id": 46,
"name": "등록 테스트용 데이터 입력 - 단가",
"action": "click_if_exists",
"target": "items[0].unitPrice",
@@ -564,7 +564,7 @@
"expected": "단가 입력됨"
},
{
"id": 45,
"id": 47,
"name": "필수 검증 #2: 등록 버튼 클릭",
"action": "click_if_exists",
"target": "등록",
@@ -577,21 +577,21 @@
"expected": "매출 등록 완료"
},
{
"id": 46,
"id": 48,
"name": "등록 성공 확인 - 토스트 메시지",
"action": "verify_toast",
"target": "매출이 등록되었습니다",
"expected": "성공 토스트 메시지 표시"
},
{
"id": 47,
"id": 49,
"name": "등록 성공 확인 - 목록 페이지 이동",
"action": "verify_url",
"target": "/ko/accounting/sales",
"expected": "매출 목록 페이지로 이동"
},
{
"id": 48,
"id": 50,
"name": "등록된 매출 목록 확인",
"action": "verify_table_data",
"checks": [
@@ -602,26 +602,32 @@
"expected": "등록된 매출이 목록에 표시됨"
},
{
"id": 49,
"id": 51,
"name": "거래처 미선택 시 유효성 검증 테스트",
"action": "navigate",
"target": "/ko/accounting/sales?mode=new",
"expected": "매출 등록 페이지 이동"
},
{
"id": 50,
"id": 52,
"name": "거래처 미선택 상태에서 등록 시도",
"action": "click_if_exists",
"target": "등록",
"expected": "유효성 검증 실패 - 경고 메시지"
},
{
"id": 51,
"id": 53,
"name": "유효성 검증 메시지 확인",
"action": "verify_toast",
"target": "거래처를 선택해주세요",
"type": "warning",
"expected": "거래처 선택 요청 경고 메시지 표시"
},
{
"id": 54,
"name": "콘솔 에러 확인",
"action": "verify_element",
"target": "body"
}
],
"requiredVerifications": [
@@ -723,4 +729,4 @@
"reason": "사용자 요청에 따라 삭제 테스트 제외"
}
]
}
}