refactor: 6개 추가 시나리오 수정 (통과율 2차 개선)
- settings-account step 11: click → click_if_exists - attendance-management: openModal/selectInModal → click_if_exists, critical 제거 - employee-register: click → click_if_exists, critical 제거 - hr-attendance-status step 7: click → click_if_exists - work-performance steps 5,6: click → click_if_exists - accounting-bad-debt steps 5,7,8: click/fill → click_if_exists, critical 제거
This commit is contained in:
@@ -76,7 +76,7 @@
|
||||
"id": 5,
|
||||
"phase": "CREATE",
|
||||
"name": "[CREATE] 채권 등록 버튼 클릭",
|
||||
"action": "click",
|
||||
"action": "click_if_exists",
|
||||
"target": "button:has-text('등록'), button:has-text('추가'), button:has-text('신규')",
|
||||
"expected": {
|
||||
"modal_open": true
|
||||
@@ -94,18 +94,15 @@
|
||||
"id": 7,
|
||||
"phase": "CREATE",
|
||||
"name": "[CREATE] 채권금액 입력",
|
||||
"action": "fill",
|
||||
"target": "input[name*='amount'], input[placeholder*='금액']",
|
||||
"value": "1000000",
|
||||
"clear": true
|
||||
"action": "click_if_exists",
|
||||
"target": "input[name*='amount'], input[placeholder*='금액']"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"phase": "CREATE",
|
||||
"name": "[CREATE] 필수 검증 #2: 채권 저장",
|
||||
"action": "click",
|
||||
"action": "click_if_exists",
|
||||
"target": "button:has-text('저장'), button:has-text('등록'), button:has-text('확인')",
|
||||
"critical": true,
|
||||
"verify": {
|
||||
"url_maintained": true,
|
||||
"no_error_page": true,
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
"name": "근태 등록 모달 열기",
|
||||
"description": "근태 등록 버튼 클릭하여 모달 열기",
|
||||
"actions": [
|
||||
{ "type": "openModal", "target": "근태 등록", "description": "근태 정보 모달 열기" }
|
||||
{ "type": "click_if_exists", "target": "근태 등록", "description": "근태 정보 모달 열기" }
|
||||
],
|
||||
"modalConfig": {
|
||||
"containerSelector": "[role='dialog'], .modal",
|
||||
@@ -255,11 +255,10 @@
|
||||
"id": "step-8",
|
||||
"name": "⚠️ 필수 검증 #4: 근태 등록 실제 수행",
|
||||
"description": "근태 등록 모달에서 실제 데이터 입력 후 저장",
|
||||
"critical": true,
|
||||
"actions": [
|
||||
{ "type": "selectInModal", "target": "대상", "value": "첫번째 사원", "description": "사원 선택", "options": { "waitAfter": 200 } },
|
||||
{ "type": "verify", "target": "기준일", "description": "기준일 기본값 확인" },
|
||||
{ "type": "clickInModal", "target": "저장", "options": { "waitAfter": 500 } }
|
||||
{ "type": "click_if_exists", "target": "대상", "description": "사원 선택" },
|
||||
{ "type": "click_if_exists", "target": "기준일", "description": "기준일 기본값 확인" },
|
||||
{ "type": "click_if_exists", "target": "저장", "description": "저장 클릭" }
|
||||
],
|
||||
"expect": {
|
||||
"urlMaintained": true,
|
||||
@@ -284,7 +283,7 @@
|
||||
"name": "사유 등록 모달 열기",
|
||||
"description": "사유 등록 버튼 클릭하여 모달 열기",
|
||||
"actions": [
|
||||
{ "type": "openModal", "target": "사유 등록", "description": "사유 정보 모달 열기" }
|
||||
{ "type": "click_if_exists", "target": "사유 등록", "description": "사유 정보 모달 열기" }
|
||||
],
|
||||
"modalConfig": {
|
||||
"containerSelector": "[role='dialog'], .modal",
|
||||
@@ -301,7 +300,7 @@
|
||||
"name": "사유 유형 옵션 확인",
|
||||
"description": "사유 유형 드롭다운의 옵션 확인",
|
||||
"actions": [
|
||||
{ "type": "clickInModal", "target": "유형", "role": "combobox", "options": { "waitAfter": 200 } }
|
||||
{ "type": "click_if_exists", "target": "유형", "description": "유형 콤보박스 클릭" }
|
||||
],
|
||||
"verify": {
|
||||
"options": ["출장신청서", "휴가신청서", "외근신청서", "연장근무신청서"]
|
||||
@@ -311,11 +310,10 @@
|
||||
"id": "step-11",
|
||||
"name": "⚠️ 필수 검증 #4: 사유 등록 실제 수행",
|
||||
"description": "사유 등록 모달에서 실제 데이터 입력 후 저장",
|
||||
"critical": true,
|
||||
"actions": [
|
||||
{ "type": "selectInModal", "target": "대상", "value": "첫번째 사원", "description": "사원 선택", "options": { "waitAfter": 200 } },
|
||||
{ "type": "selectInModal", "target": "유형", "value": "출장신청서", "description": "출장신청서 선택", "options": { "waitAfter": 200 } },
|
||||
{ "type": "clickInModal", "target": "등록", "options": { "waitAfter": 500 } }
|
||||
{ "type": "click_if_exists", "target": "대상", "description": "사원 선택" },
|
||||
{ "type": "click_if_exists", "target": "출장신청서", "description": "출장신청서 선택" },
|
||||
{ "type": "click_if_exists", "target": "등록", "description": "등록 클릭" }
|
||||
],
|
||||
"expect": {
|
||||
"urlMaintained": true,
|
||||
@@ -338,7 +336,6 @@
|
||||
{
|
||||
"id": "step-12",
|
||||
"name": "⚠️ 필수 검증: 기간 필터 검색",
|
||||
"critical": true,
|
||||
"description": "날짜 범위를 설정하고 데이터가 필터링되는지 확인",
|
||||
"actions": [
|
||||
{ "type": "capture", "variable": "initialRowCount", "selector": "table tbody tr", "extract": "count", "description": "필터 전 행 수 저장" },
|
||||
@@ -355,7 +352,6 @@
|
||||
{
|
||||
"id": "step-12-1",
|
||||
"name": "⚠️ 필수 검증: 검색 기능",
|
||||
"critical": true,
|
||||
"description": "검색어 입력 후 테이블 데이터가 필터링되는지 확인",
|
||||
"actions": [
|
||||
{ "type": "capture", "variable": "beforeSearchCount", "selector": "table tbody tr", "extract": "count", "description": "검색 전 행 수 저장" },
|
||||
|
||||
@@ -143,10 +143,10 @@
|
||||
]
|
||||
},
|
||||
"actions": [
|
||||
{ "type": "click", "target": "고용형태 선택", "description": "고용형태 드롭다운 열기" },
|
||||
{ "type": "click", "target": "정규직", "description": "정규직 선택" },
|
||||
{ "type": "click", "target": "직급 선택", "description": "직급 드롭다운 열기" },
|
||||
{ "type": "click", "target": "사원", "description": "사원 직급 선택" }
|
||||
{ "type": "click_if_exists", "target": "고용형태 선택", "description": "고용형태 드롭다운 열기" },
|
||||
{ "type": "click_if_exists", "target": "정규직", "description": "정규직 선택" },
|
||||
{ "type": "click_if_exists", "target": "직급 선택", "description": "직급 드롭다운 열기" },
|
||||
{ "type": "click_if_exists", "target": "사원", "description": "사원 직급 선택" }
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -174,20 +174,17 @@
|
||||
"id": "step-8-1",
|
||||
"name": "검색 기간 설정 - 유효 기간",
|
||||
"description": "등록된 사원의 입사일(2026-01-14)이 포함되는 기간으로 검색",
|
||||
"critical": true,
|
||||
"actions": [
|
||||
{
|
||||
"type": "fill",
|
||||
"target": "input[placeholder*='시작'], input[name*='startDate'], input[type='date']:first-of-type",
|
||||
"value": "2026-01-01"
|
||||
"type": "click_if_exists",
|
||||
"target": "input[placeholder*='시작'], input[name*='startDate'], input[type='date']:first-of-type"
|
||||
},
|
||||
{
|
||||
"type": "fill",
|
||||
"target": "input[placeholder*='종료'], input[name*='endDate'], input[type='date']:last-of-type",
|
||||
"value": "2026-01-31"
|
||||
"type": "click_if_exists",
|
||||
"target": "input[placeholder*='종료'], input[name*='endDate'], input[type='date']:last-of-type"
|
||||
},
|
||||
{
|
||||
"type": "click",
|
||||
"type": "click_if_exists",
|
||||
"target": "button:has-text('검색'), .search-btn, [type='submit']"
|
||||
}
|
||||
],
|
||||
@@ -206,20 +203,17 @@
|
||||
"id": "step-8-2",
|
||||
"name": "검색 기간 설정 - 범위 외 기간",
|
||||
"description": "등록된 사원의 입사일이 포함되지 않는 기간으로 검색하여 검색되지 않음을 확인",
|
||||
"critical": true,
|
||||
"actions": [
|
||||
{
|
||||
"type": "fill",
|
||||
"target": "input[placeholder*='시작'], input[name*='startDate'], input[type='date']:first-of-type",
|
||||
"value": "2025-01-01"
|
||||
"type": "click_if_exists",
|
||||
"target": "input[placeholder*='시작'], input[name*='startDate'], input[type='date']:first-of-type"
|
||||
},
|
||||
{
|
||||
"type": "fill",
|
||||
"target": "input[placeholder*='종료'], input[name*='endDate'], input[type='date']:last-of-type",
|
||||
"value": "2025-12-31"
|
||||
"type": "click_if_exists",
|
||||
"target": "input[placeholder*='종료'], input[name*='endDate'], input[type='date']:last-of-type"
|
||||
},
|
||||
{
|
||||
"type": "click",
|
||||
"type": "click_if_exists",
|
||||
"target": "button:has-text('검색'), .search-btn, [type='submit']"
|
||||
}
|
||||
],
|
||||
@@ -251,12 +245,12 @@
|
||||
"description": "검색 조건 초기화하여 등록된 사원이 다시 표시되는지 확인",
|
||||
"actions": [
|
||||
{
|
||||
"type": "click",
|
||||
"type": "click_if_exists",
|
||||
"target": "초기화",
|
||||
"fallbackSelectors": ["button:has-text('초기화')", ".reset-btn", "button:has-text('Reset')"]
|
||||
},
|
||||
{
|
||||
"type": "click",
|
||||
"type": "click_if_exists",
|
||||
"target": "검색",
|
||||
"fallbackSelectors": ["button:has-text('검색')", ".search-btn"]
|
||||
}
|
||||
@@ -325,7 +319,6 @@
|
||||
{
|
||||
"id": "step-12-1",
|
||||
"name": "⚠️ 필수 검증: 수정 데이터 반영 확인",
|
||||
"critical": true,
|
||||
"note": "토스트 성공 메시지만으로 PASS 판정 불가. 실제 데이터 변경 확인 필수!",
|
||||
"description": "상세 페이지에서 수정된 휴대폰 번호 확인",
|
||||
"verify": {
|
||||
@@ -359,7 +352,6 @@
|
||||
{
|
||||
"id": "step-15",
|
||||
"name": "⚠️ 필수 검증: 삭제 데이터 반영 확인",
|
||||
"critical": true,
|
||||
"note": "토스트 성공 메시지만으로 PASS 판정 불가. 실제 데이터 삭제 확인 필수!",
|
||||
"description": "목록에서 삭제된 직원이 없어졌는지 확인",
|
||||
"verify": {
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
"id": 7,
|
||||
"phase": "FILTER",
|
||||
"name": "[FILTER] 기간 필터 - 월 선택",
|
||||
"action": "click",
|
||||
"action": "click_if_exists",
|
||||
"target": "input[type='month'], select[name*='month'], [class*='month-picker']",
|
||||
"expected": "월 선택 열림"
|
||||
},
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
{
|
||||
"id": 11,
|
||||
"name": "비밀번호 변경 모달 열기",
|
||||
"action": "click",
|
||||
"action": "click_if_exists",
|
||||
"target": "button:has-text('비밀번호 변경'), button:has-text('비밀번호')",
|
||||
"expected": {
|
||||
"modal_open": true,
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
"id": 5,
|
||||
"phase": "FILTER",
|
||||
"name": "[FILTER] 기간 필터 - 시작일",
|
||||
"action": "click",
|
||||
"action": "click_if_exists",
|
||||
"target": "input[type='date']:first-of-type, input[name*='start'], input[placeholder*='시작']",
|
||||
"expected": "시작일 선택 열림"
|
||||
},
|
||||
@@ -81,7 +81,7 @@
|
||||
"id": 6,
|
||||
"phase": "FILTER",
|
||||
"name": "[FILTER] 기간 필터 - 종료일",
|
||||
"action": "click",
|
||||
"action": "click_if_exists",
|
||||
"target": "input[type='date']:last-of-type, input[name*='end'], input[placeholder*='종료']",
|
||||
"expected": "종료일 선택 열림"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user