{ "id": "inspection-management", "name": "제품검사관리 CRUD 테스트", "screenshotPolicy": { "onErrorOnly": true, "captureOn": ["error", "fail", "timeout", "404", "500", "blocked"] }, "description": "품질관리 > 제품검사관리 페이지의 검사 등록/조회/수정/삭제 기능을 테스트하는 E2E 테스트", "baseUrl": "https://dev.codebridge-x.com", "menuNavigation": { "level1": "품질관리", "level2": "제품검사관리", "expectedUrl": "/quality/inspections", "searchWithinParent": true, "closeOtherMenus": true }, "auth": { "username": "TestUser5", "password": "password123!" }, "timeout": 90000, "tags": ["quality", "inspection", "crud"], "testData": { "inspection": { "quantity": "100", "worker": "홍킬동", "note": "E2E 테스트 특이사항", "height": "50.5", "length": "120.3" } }, "steps": [ { "id": 1, "name": "메뉴 진입: 품질관리 > 제품검사관리", "action": "menu_navigate", "level1": "품질관리", "level2": "제품검사관리", "expected": { "url_contains": "/quality/inspections" } }, { "id": 2, "name": "페이지 로드 대기", "action": "wait", "timeout": 3000 }, { "id": 3, "name": "URL 검증", "action": "verify_url", "expected": { "url_contains": "/quality/inspections" } }, { "id": 4, "name": "목업 감지", "action": "verify_not_mockup", "checks": ["검사 목록 표시", "등록 버튼 존재"] }, { "id": 5, "name": "테이블 로드 대기", "action": "wait_for_table", "timeout": 5000 }, { "id": 6, "name": "페이지 구조 확인", "action": "verify_element", "target": "table" }, { "id": 7, "name": "탭 필터 - 전체", "action": "click", "target": "전체", "role": "tab" }, { "id": 8, "name": "탭 대기", "action": "wait", "timeout": 500 }, { "id": 9, "phase": "CREATE", "name": "[CREATE] 검사 등록 버튼 클릭", "action": "click_button", "target": "검사 등록", "alternatives": ["등록", "신규"], "expected": { "modal": true } }, { "id": 10, "phase": "CREATE", "name": "[CREATE] 수량 입력", "action": "fill", "target": "input[name*='quantity'], input[placeholder*='수량']", "value": "100" }, { "id": 11, "phase": "CREATE", "name": "[CREATE] 작업자 선택", "action": "select_dropdown", "target": "작업자", "value": "홍킬동" }, { "id": 12, "phase": "CREATE", "name": "[CREATE] 특이사항 입력", "action": "fill", "target": "textarea, input[name*='note'], input[placeholder*='특이']", "value": "E2E 테스트 특이사항" }, { "id": 13, "phase": "CREATE", "name": "[CREATE] 등록 저장", "action": "click_button", "target": "등록", "alternatives": ["저장", "확인"], "expected": { "toast": true } }, { "id": 14, "phase": "CREATE", "name": "[CREATE] 모달 닫기 확인", "action": "close_modal_if_open" }, { "id": 15, "phase": "CREATE", "name": "[CREATE] 등록 데이터 반영 확인", "action": "verify_text", "target": "table", "contains": "홍킬동", "critical": true }, { "id": 16, "phase": "READ", "name": "[READ] 등록된 검사 행 클릭", "action": "click_row", "target": "홍킬동", "expected": { "detail_view": true } }, { "id": 17, "phase": "UPDATE", "name": "[UPDATE] 수정 버튼 클릭", "action": "click_button", "target": "수정" }, { "id": 18, "phase": "UPDATE", "name": "[UPDATE] 특이사항 수정", "action": "fill", "target": "textarea, input[name*='note'], input[placeholder*='특이']", "value": "E2E 테스트 수정됨" }, { "id": 19, "phase": "UPDATE", "name": "[UPDATE] 수정 저장", "action": "click_button", "target": "저장", "expected": { "toast": true } }, { "id": 20, "phase": "UPDATE", "name": "[UPDATE] 모달 닫기 확인", "action": "close_modal_if_open" }, { "id": 21, "phase": "UPDATE", "name": "[UPDATE] 수정 데이터 반영 확인", "action": "verify_text", "target": "body", "contains": "수정됨", "critical": true }, { "id": 22, "phase": "DELETE", "name": "[DELETE] 삭제할 검사 행 클릭", "action": "click_row", "target": "홍킬동", "expected": { "detail_view": true } }, { "id": 23, "phase": "DELETE", "name": "[DELETE] 삭제 버튼 클릭", "action": "click_button", "target": "삭제", "expected": { "dialog": true } }, { "id": 24, "phase": "DELETE", "name": "[DELETE] 삭제 확인", "action": "click_dialog_confirm", "expected": { "toast": true } }, { "id": 25, "phase": "DELETE", "name": "[DELETE] 모달 닫기 확인", "action": "close_modal_if_open" }, { "id": 26, "phase": "DELETE", "name": "[DELETE] 삭제 데이터 반영 확인", "action": "verify_text", "target": "table", "not_contains": "E2E 테스트", "critical": true } ], "expectedAPIs": [ { "method": "GET", "endpoint": "/api/quality/inspections", "description": "검사 목록 조회" }, { "method": "POST", "endpoint": "/api/quality/inspections", "description": "검사 등록" }, { "method": "PUT", "endpoint": "/api/quality/inspections/{id}", "description": "검사 수정" }, { "method": "DELETE", "endpoint": "/api/quality/inspections/{id}", "description": "검사 삭제" } ], "cleanup": { "enabled": true, "description": "테스트 중 생성된 검사 데이터 삭제 (step 24에서 처리)" } }