# ❌ E2E 테스트 실패: 거래처 CRUD 삭제 기능 테스트 **테스트 ID**: crud-delete-vendor | **실행**: 2026-03-07_21-13-12 | **결과**: FAIL **소요 시간**: 75.8초 | **중단 사유**: critical_failure ## 테스트 요약 | 전체 | 성공 | 실패 | 경고 | 성공률 | |------|------|------|------|--------| | 13 | 4 | 8 | 1 | 31% | ## 실패 스텝 | # | 스텝 | Phase | 에러 | |---|------|-------|------| | step-2 | 📝 [CREATE] 등록 모달 - 필수 정보 입력 | CREATE | Input not found: 거래처명 [context: btn:35,input:22,text:found-on-page]; Select not found: 거래처 유형 [conte | | step-3-modal-close | 📝 [CREATE] 모달 닫기 확인 | CREATE | Timeout waiting for modal | | step-4 | 📝 [CREATE] 등록 결과 확인 | CREATE | Failed to execute 'querySelectorAll' on 'Document': 'table tbody tr:has-text('E2E테스트_삭제용')' is not a | | step-5 | ✏️ [UPDATE] 생성된 거래처 상세 페이지 진입 | UPDATE | Element not found: table tbody tr:has-text('E2E테스트_삭제용') [context: btn:35,input:22,text:not-on-page] | | step-6 | ✏️ [UPDATE] 수정 모드 진입 | UPDATE | Element not found: button:has-text('수정') [context: btn:35,input:22,text:not-on-page] | | step-8 | ✏️ [UPDATE] 수정 저장 | UPDATE | Element not found: button:has-text('저장') [context: btn:35,input:22,text:not-on-page]; Element not fo | | step-8-modal-close | ✏️ [UPDATE] 다이얼로그 닫기 확인 | UPDATE | Timeout waiting for modal | | step-10 | 🗑️ [DELETE] 삭제 버튼 클릭 | DELETE | Element not found: button:has-text('삭제') [context: btn:35,input:22,text:not-on-page] | ## 전체 스텝 결과 | # | 스텝 | Phase | 상태 | 소요시간 | 비고 | |---|------|-------|------|---------|------| | step-0 | 사이드바 메뉴 탐색 | - | ⚠️ | 10439ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 300ms / Clicked: 회계 | | step-1 | 📝 [CREATE] 거래처 등록 버튼 클릭 | CREATE | ✅ | 1410ms | Captured count: 20 / Clicked: button:has-text('등록'), button:has-text('추가'), [cla | | step-2 | 📝 [CREATE] 등록 모달 - 필수 정보 입력 | CREATE | ❌ | 3869ms | Generated timestamp: 20260307_211214 / Input not found: 거래처명 [context: btn:35,in | | step-3 | 📝 [CREATE] 등록 모달 - 등록 버튼 클릭 | CREATE | ✅ | 2427ms | Clicked: button:has-text('등록'), button:has-text('저장') / Waited 2000ms | | step-3-modal-close | 📝 [CREATE] 모달 닫기 확인 | CREATE | ❌ | 17469ms | Timeout waiting for modal / Modal closed / Waited 500ms | | step-4 | 📝 [CREATE] 등록 결과 확인 | CREATE | ❌ | 1928ms | Filled "검색" with "E2E테스트_삭제용" / Pressed key: Enter / Waited 1500ms / Failed to e | | step-5 | ✏️ [UPDATE] 생성된 거래처 상세 페이지 진입 | UPDATE | ❌ | 3529ms | Element not found: table tbody tr:has-text('E2E테스트_삭제용') [context: btn:35,input: | | step-6 | ✏️ [UPDATE] 수정 모드 진입 | UPDATE | ❌ | 2514ms | Element not found: button:has-text('수정') [context: btn:35,input:22,text:not-on-p | | step-7 | ✏️ [UPDATE] 거래처명 수정 | UPDATE | ✅ | 646ms | Cleared: 거래처명 / Filled "거래처명" with "E2E테스트_수정완료_20260307_211214" / Filled "대표자명" | | step-8 | ✏️ [UPDATE] 수정 저장 | UPDATE | ❌ | 5554ms | Element not found: button:has-text('저장') [context: btn:35,input:22,text:not-on-p | | step-8-modal-close | ✏️ [UPDATE] 다이얼로그 닫기 확인 | UPDATE | ❌ | 16945ms | Timeout waiting for modal / Modal closed | | step-9 | ✏️ [UPDATE] 수정 결과 확인 | UPDATE | ✅ | 1002ms | Waited 1000ms / Captured text: 2 | | step-10 | 🗑️ [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 2009ms | Element not found: button:has-text('삭제') [context: btn:35,input:22,text:not-on-p | ## API 요약 | 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | |---------|------|------|----------|--------------| | 5 | 5 | 0 | 97ms | 0 | ## 페이지 건강 검사 | 항목 | 결과 | |------|------| | 상태 | ✅ 정상 | | URL | https://dev.codebridge-x.com/accounting/vendors | ## 자동 진단 | 항목 | 내용 | |------|------| | 근본 원인 | **empty_data** | | 스크린샷 | diag_crud-delete-vendor_2026-03-07_21-13-12.png | ### 권장 조치 1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 ### 페이지 상태 | 항목 | 값 | |------|----| | DOM 노드 | 525 | | 테이블 행 | 0 | | API 호출 수 | 5 | | 로딩 스피너 | No |