diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_21-40-23.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_21-40-23.md new file mode 100644 index 0000000..2912d9c --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_21-40-23.md @@ -0,0 +1,558 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_21-40-23 +**총 소요 시간**: 36.8분 +**전체 시나리오**: 67개 | **성공**: 4개 | **실패**: 63개 + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 67 | 4 | 63 | 6% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 계정정보 테스트 | ❌ | 11 | 10 | 1 | 11.0 | +| 2 | 공지사항 테스트 | ❌ | 9 | 8 | 1 | 11.3 | +| 3 | 결재함 E2E 테스트 | ❌ | 9 | 0 | 1 | 31.9 | +| 4 | 근태현황 출퇴근 테스트 | ❌ | 15 | 9 | 1 | 23.6 | +| 5 | 근태관리 테스트 | ❌ | 10 | 8 | 2 | 27.4 | +| 6 | 설정 - 근태설정 | ❌ | 11 | 3 | 1 | 21.4 | +| 7 | 대손채권회수 테스트 | ❌ | 51 | 1 | 32 | 140.4 | +| 8 | 계좌관리 테스트 | ❌ | 14 | 8 | 6 | 38.1 | +| 9 | 은행거래 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 10 | 어음관리 테스트 | ❌ | 14 | 12 | 2 | 20.4 | +| 11 | undefined | ❌ | 8 | 2 | 2 | 16.3 | +| 12 | 게시판 테스트 E2E 테스트 | ❌ | 78 | 56 | 5 | 37.9 | +| 13 | 카드 등록 테스트 (랜덤 데이터) | ❌ | 0 | 0 | 0 | 13.5 | +| 14 | 카드거래 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 15 | 설정 - 회사정보 | ❌ | 30 | 8 | 5 | 56.5 | +| 16 | 종합분석 테스트 | ❌ | 0 | 0 | 0 | 10.5 | +| 17 | 자유게시판 CRUD 삭제 기능 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 18 | 거래처 CRUD 삭제 기능 테스트 | ❌ | 13 | 4 | 8 | 75.8 | +| 19 | 고객센터 - 1:1 문의 | ❌ | 33 | 13 | 11 | 26.1 | +| 20 | 일일리포트 테스트 | ❌ | 51 | 0 | 6 | 117.9 | +| 21 | 부서 추가 테스트 (랜덤 + 하위부서) | ❌ | 21 | 15 | 6 | 35.7 | +| 22 | 입금관리 테스트 | ❌ | 20 | 12 | 7 | 44.9 | +| 23 | 기안함 테스트 | ❌ | 33 | 2 | 14 | 80.7 | +| 24 | 직원 등록 테스트 | ❌ | 10 | 8 | 2 | 13.5 | +| 25 | 이벤트 게시판 테스트 | ❌ | 8 | 7 | 1 | 11.3 | +| 26 | 예상비용 관리 테스트 | ❌ | 43 | 1 | 33 | 142.8 | +| 27 | FAQ 테스트 | ❌ | 8 | 7 | 1 | 12.3 | +| 28 | 자유게시판 E2E 테스트 | ❌ | 25 | 19 | 3 | 30.9 | +| 29 | 검사관리 테스트 | ❌ | 15 | 9 | 6 | 45.7 | +| 30 | 재고현황 테스트 | ❌ | 11 | 7 | 4 | 18.9 | +| 31 | undefined | ❌ | 11 | 1 | 1 | 39.7 | +| 32 | 품목기준관리 테스트 | ❌ | 0 | 0 | 0 | 13.4 | +| 33 | 설정 - 휴가정책 | ❌ | 13 | 2 | 1 | 24.5 | +| 34 | 로그인 테스트 (끝판왕) | ❌ | 23 | 10 | 12 | 32.4 | +| 35 | 설정 - 알림설정 | ❌ | 91 | 9 | 13 | 135.1 | +| 36 | 수주관리 테스트 | ❌ | 17 | 11 | 6 | 30.1 | +| 37 | 결제내역 테스트 | ✅ | 10 | 3 | 0 | 33.8 | +| 38 | PDF 다운로드 전체 검사 | ✅ | 5 | 5 | 0 | 1.1 | +| 39 | 설정 - 권한관리 | ❌ | 15 | 4 | 10 | 40.4 | +| 40 | 설정 - 팝업관리 | ❌ | 89 | 5 | 19 | 138.8 | +| 41 | 직책관리 테스트 | ❌ | 13 | 8 | 3 | 30.9 | +| 42 | 단가관리 테스트 | ❌ | 15 | 11 | 4 | 20.3 | +| 43 | 공정관리 테스트 | ❌ | 16 | 8 | 8 | 48.2 | +| 44 | undefined | ❌ | 81 | 13 | 6 | 24.5 | +| 45 | 품질인정심사 시스템 테스트 | ❌ | 12 | 8 | 3 | 15.5 | +| 46 | 설정 - 직급관리 | ❌ | 10 | 5 | 4 | 31.2 | +| 47 | 미수금현황 테스트 | ❌ | 9 | 0 | 3 | 39.3 | +| 48 | 입고관리 테스트 | ❌ | 8 | 7 | 1 | 11.4 | +| 49 | undefined | ❌ | 8 | 1 | 1 | 27.7 | +| 50 | 급여관리 테스트 | ❌ | 7 | 6 | 1 | 11.9 | +| 51 | 매출관리 테스트 | ❌ | 53 | 24 | 24 | 69.5 | +| 52 | 출하관리 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 53 | 구독관리 테스트 | ✅ | 8 | 8 | 0 | 9.4 | +| 54 | TC 근태관리 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 55 | TC 대시보드 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 56 | TC 부서관리 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 57 | TC 기안함 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 58 | TC 사원관리 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 59 | TC 재고관리 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 60 | TC 공지사항/게시판 전체 테스트 | ❌ | 0 | 0 | 0 | 0.0 | +| 61 | 휴가관리 테스트 | ❌ | 6 | 5 | 1 | 11.7 | +| 62 | 거래처원장 테스트 | ❌ | 10 | 5 | 4 | 17.2 | +| 63 | 거래처관리 테스트 | ❌ | 34 | 13 | 12 | 60.0 | +| 64 | 출금관리 테스트 | ❌ | 20 | 13 | 7 | 24.2 | +| 65 | undefined | ❌ | 81 | 7 | 13 | 44.8 | +| 66 | 작업실적 테스트 | ✅ | 6 | 6 | 0 | 9.4 | +| 67 | 작업자 화면 테스트 | ❌ | 7 | 6 | 1 | 10.2 | + +## 실패 시나리오 상세 + +### ❌ 계정정보 테스트 (account-info) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-6 (필수 검증 #2: 수정 버튼 클릭): Element not found: 수정 [context: btn:52,input:0,text:not-on-page] + +### ❌ 공지사항 테스트 (announcement-board) +- Step step-7 (목록으로 돌아가기): Element not found: 목록으로 [context: btn:36,input:1,text:not-on-page] + +### ❌ 결재함 E2E 테스트 (approval-box) +- Step 8 (⚠️ 필수 검증: 결재 문서 상세 보기): Element not found: 미결재 탭 [context: btn:54,input:1,text:not-on-page]; Element not found: 첫 번째 결재 문서 행 [context: btn:54,input:1,text:not-on-page] + +### ❌ 근태현황 출퇴근 테스트 (attendance-checkin) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-9 (출근하기 (미출근 상태인 경우)): Element not found: 출근하기 [context: btn:43,input:0,text:not-on-page] + +### ❌ 근태관리 테스트 (attendance-management) +- **진단**: element_timeout → 요소 대기 타임아웃. 페이지 로드 지연 또는 셀렉터 불일치 +- Step step-6 (근태 등록 모달 열기): Timeout waiting for modal [context: btn:84,input:1,text:found-on-page] +- Step step-8 (⚠️ 필수 검증 #4: 근태 등록 실제 수행): Dropdown trigger not found: 대상 [context: btn:84,input:1,text:not-on-page] + +### ❌ 설정 - 근태설정 (attendance-settings) +- Step 10 (GPS 출퇴근 활성화): Element not found: GPS 출퇴근 체크박스 [context: btn:27,input:0,text:not-on-page] + +### ❌ 대손채권회수 테스트 (bad-debt-collection) +- Step step-1 (2단계 메뉴 진입: 회계관리 > 악성채권추심관리): Element not found: 악성채권추심관리 [context: btn:60,input:1,text:not-on-page] +- Step step-3 (필터 및 검색 기능 테스트): Select not found: 상태 필터 [context: btn:60,input:1,text:not-on-page] +- Step step-5 (첫 번째 행 체크박스 선택): Element not found: 첫 번째 행 체크박스 [context: btn:60,input:1,text:not-on-page] +- Step step-7 (수정 버튼 클릭): Element not found: 수정 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-11 (기본 정보 섹션 - 거래처명 입력): Input not found: 거래처명 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 거래처명 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-12 (기본 정보 섹션 - 대표자명 입력): Input not found: 대표자명 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 대표자명 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-13 (기본 정보 섹션 - 악성채권 등록 토글): Element not found: 악성채권 등록 Switch [context: btn:60,input:1,text:not-on-page] +- Step step-14 (기본 정보 섹션 - 업태/업종 입력): Input not found: 업태 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 업태 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 업종 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 업종 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-15 (연락처 정보 섹션 - 우편번호 찾기 버튼): Element not found: 우편번호 찾기 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-16 (연락처 정보 섹션 - 주소 입력): Input not found: 상세주소 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 상세주소 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-17 (연락처 정보 섹션 - 전화번호 입력): Input not found: 전화번호 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 전화번호 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-18 (연락처 정보 섹션 - 모바일 입력): Input not found: 모바일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 모바일 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-19 (연락처 정보 섹션 - 팩스 입력): Input not found: 팩스 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 팩스 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-20 (연락처 정보 섹션 - 이메일 입력): Input not found: 이메일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 이메일 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-21 (담당자 정보 섹션 - 담당자명 입력): Input not found: 담당자명 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 담당자명 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-22 (담당자 정보 섹션 - 담당자 전화 입력): Input not found: 담당자 전화 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 담당자 전화 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-26 (악성 채권 정보 섹션 - 미수금 입력): Input not found: 미수금 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 미수금 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-27 (악성 채권 정보 섹션 - 상태 선택): Element not found: 상태 드롭다운 [context: btn:60,input:1,text:not-on-page]; Select not found: 상태 옵션 [context: btn:60,input:1,text:not-on-page] +- Step step-28 (악성 채권 정보 섹션 - 연체일수 입력): Input not found: 연체일수 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 연체일수 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-29 (악성 채권 정보 섹션 - 본사 담당자 선택): Element not found: 본사 담당자 드롭다운 [context: btn:60,input:1,text:not-on-page]; Select not found: 담당자 옵션 [context: btn:60,input:1,text:not-on-page] +- Step step-30 (악성 채권 정보 섹션 - 악성채권 발생일 입력): Input not found: 악성채권 발생일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 악성채권 발생일 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-31 (악성 채권 정보 섹션 - 악성채권 종료일 입력): Input not found: 악성채권 종료일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 악성채권 종료일 입력 필드 [context: btn:60,input:1,text:not-on-page] +- Step step-33 (이동 버튼 - 수취 어음 현황 클릭): Element not found: 수취 어음 현황 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-36 (이동 버튼 - 거래처 미수금 현황 클릭): Element not found: 거래처 미수금 현황 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-40 (메모 섹션 - 메모 입력): Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page]; Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page] +- Step step-41 (메모 섹션 - 메모 추가 버튼 클릭): Element not found: 메모 추가 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-43 (메모 섹션 - 추가 메모 입력): Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page]; Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page]; Element not found: 메모 추가 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-45 (메모 섹션 - 메모 삭제): Element not found: 첫 번째 메모 삭제 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-46 (저장 버튼 클릭): Element not found: 저장 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-47 (저장 확인 다이얼로그 - 취소 버튼): Element not found: 다이얼로그 취소 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-48 (저장 버튼 재클릭 및 확인): Element not found: 저장 버튼 [context: btn:60,input:1,text:not-on-page]; Element not found: 다이얼로그 저장 버튼 [context: btn:60,input:1,text:not-on-page] +- Step step-50 (목록으로 돌아가기): Element not found: 뒤로가기 버튼 [context: btn:60,input:1,text:not-on-page] + +### ❌ 계좌관리 테스트 (bank-account-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-1 (설정 메뉴 진입): Element not found: 계좌관리 [context: btn:34,input:1,text:not-on-page] +- Step step-3 (필수 검증 #2: 계좌 등록 모달 열기): Timeout waiting for modal [context: btn:34,input:1,text:found-on-page] +- Step step-4 (계좌 등록 폼 입력): Dropdown option "{testData.bankAccount.bank}" not found [context: btn:34,input:1,text:found-on-page]; Input not found: 예금주 [context: btn:34,input:1,text:not-on-page] +- Step step-7 (계좌 상세 열기): Row with "undefined" not found +- Step step-8 (계좌 정보 수정): Element not found: 수정 [context: btn:29,input:7,text:not-on-page] +- Step step-10 (계좌 삭제 준비): Row with "undefined" not found + +### ❌ 은행거래 테스트 (bank-transactions) +- **에러**: Menu navigation failed: 회계관리 > 입출금계좌조회 + +### ❌ 어음관리 테스트 (bill-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-7 (필수 검증 #2: 어음 등록 모달/페이지 열기): Element not found: 어음 등록 [context: btn:74,input:5,text:not-on-page] +- Step step-8 (어음 등록 폼 입력): Element not found: {testData.bill.vendor} [context: btn:120,input:1]; Input not found: 금액 [context: btn:120,input:1,text:not-on-page]; Input not found: 발행일 [context: btn:120,input:1,text:not-on-page]; Input not found: 만기일 [context: btn:120,input:1,text:not-on-page] + +### ❌ undefined (board-management) +- Step 1 (2단계 메뉴 진입: 게시판 > 게시판관리): Element not found: 게시판 관리 [context: btn:39,input:1,text:not-on-page] +- Step 7 (⚠️ 필수 검증: 검색 기능 테스트 - 게시판명): Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] + +### ❌ 게시판 테스트 E2E 테스트 (board-test) +- Step 12 (상태 필터 클릭 테스트): Element not found: [role='combobox']:first [context: btn:69,input:1] +- Step 42 (댓글 내용 수정): Input not found: textarea:first [context: btn:30,input:2] +- Step 62 (게시글 클릭하여 상세 페이지 재진입): Element not found: row:has-text('E2E 테스트 게시글 (수정됨)') [context: btn:75,input:1,text:not-on-page] +- Step 63 (삭제 버튼 클릭): Element not found: button:has-text('삭제'):first [context: btn:75,input:1,text:not-on-page] +- Step 65 (삭제 확인 버튼 클릭): Element not found: button:has-text('삭제'):last [context: btn:75,input:1,text:not-on-page] + +### ❌ 카드 등록 테스트 (랜덤 데이터) (card-add) +- **에러**: Menu navigation failed: 인사관리 > 카드관리 + +### ❌ 카드거래 테스트 (card-transactions) +- **에러**: Menu navigation failed: 회계관리 > 카드내역조회 + +### ❌ 설정 - 회사정보 (company-info) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 15 (수정 버튼 클릭): Element not found: button[text='수정'] [context: btn:55,input:15,text:found-on-page] +- Step 17 (취소 버튼 클릭): Element not found: button[text='취소'] [context: btn:55,input:15,text:not-on-page] +- Step 18 (회사 추가 버튼 클릭): Element not found: button[text='회사 추가'] [context: btn:55,input:15,text:found-on-page] +- Step 20 (다이얼로그 닫기): Element not found: dialog button[text='취소'] [context: btn:55,input:15,text:not-on-page] +- Step 29 (원복: 업태 필드 원래 값으로 복구): Element not found: 수정 [context: btn:62,input:15,text:not-on-page] + +### ❌ 종합분석 테스트 (comprehensive-analysis) +- **에러**: Menu navigation failed: 리포트 > 종합분석 + +### ❌ 자유게시판 CRUD 삭제 기능 테스트 (crud-delete-freeboard) +- **에러**: Menu navigation failed: 고객센터 > 자유게시판 + +### ❌ 거래처 CRUD 삭제 기능 테스트 (crud-delete-vendor) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-2 (📝 [CREATE] 등록 모달 - 필수 정보 입력): Input not found: 거래처명 [context: btn:35,input:22,text:found-on-page]; Select not found: 거래처 유형 [context: btn:35,input:22,text:found-on-page] +- Step step-3-modal-close (📝 [CREATE] 모달 닫기 확인): Timeout waiting for modal +- Step step-4 (📝 [CREATE] 등록 결과 확인): Failed to execute 'querySelectorAll' on 'Document': 'table tbody tr:has-text('E2E테스트_삭제용')' is not a valid selector. +- Step step-5 (✏️ [UPDATE] 생성된 거래처 상세 페이지 진입): Element not found: table tbody tr:has-text('E2E테스트_삭제용') [context: btn:35,input:22,text:not-on-page] +- Step step-6 (✏️ [UPDATE] 수정 모드 진입): Element not found: button:has-text('수정') [context: btn:35,input:22,text:not-on-page] +- Step step-8 (✏️ [UPDATE] 수정 저장): Element not found: button:has-text('저장') [context: btn:35,input:22,text:not-on-page]; Element not found: button:has-text('확인') [context: btn:35,input:22,text:not-on-page] +- Step step-8-modal-close (✏️ [UPDATE] 다이얼로그 닫기 확인): Timeout waiting for modal +- Step step-10 (🗑️ [DELETE] 삭제 버튼 클릭): Element not found: button:has-text('삭제') [context: btn:35,input:22,text:not-on-page] + +### ❌ 고객센터 - 1:1 문의 (customer-inquiry) +- Step step-10 (문의 등록 버튼 클릭): Element not found: 문의 등록 버튼 [context: btn:46,input:1,text:not-on-page] +- Step step-13 (제목 입력): Input not found: 제목 입력 필드 [context: btn:46,input:1,text:not-on-page] +- Step step-14 (내용 입력): Input not found: 내용 에디터 [context: btn:46,input:1,text:not-on-page] +- Step step-16 (문의 저장 (등록)): Element not found: 저장 버튼 [context: btn:46,input:1,text:not-on-page] +- Step step-18 (등록한 문의 클릭 (상세 페이지 이동)): Element not found: 등록한 문의 행 [context: btn:46,input:1,text:not-on-page] +- Step step-22 (수정 버튼 클릭): Element not found: 수정 버튼 [context: btn:46,input:1,text:not-on-page] +- Step step-23 (제목 수정): Input not found: 제목 입력 필드 [context: btn:46,input:1,text:not-on-page] +- Step step-24 (문의 저장 (수정)): Element not found: 저장 버튼 [context: btn:46,input:1,text:not-on-page] +- Step step-26 (문의 다시 클릭 (삭제를 위해)): Element not found: 수정된 문의 행 [context: btn:46,input:1,text:not-on-page] +- Step step-27 (삭제 버튼 클릭): Element not found: 삭제 버튼 [context: btn:46,input:1,text:not-on-page] +- Step step-28 (삭제 확인): Element not found: 삭제 확인 버튼 [context: btn:46,input:1,text:not-on-page] + +### ❌ 일일리포트 테스트 (daily-report) +- Step step-1 (2단계 메뉴 진입: 회계관리 > 일일리포트): Element not found: 일일리포트 [context: btn:30,input:1,text:not-on-page] +- Step step-17 (날짜 변경 - 과거 날짜 선택): Input not found: date input [context: btn:30,input:1]; Input not found: date input [context: btn:30,input:1] +- Step step-22 (날짜를 오늘로 되돌리기): Input not found: date input [context: btn:30,input:1]; Input not found: date input [context: btn:30,input:1] +- Step step-24 (새로고침 버튼 클릭): Element not found: 새로고침 버튼 [context: btn:30,input:1,text:not-on-page] +- Step step-30 (엑셀 다운로드 버튼 클릭): Element not found: 엑셀 다운로드 버튼 [context: btn:30,input:1,text:not-on-page] +- Step step-50 (전체 페이지 기능 통합 테스트): Input not found: date input [context: btn:30,input:1]; Element not found: 새로고침 버튼 [context: btn:30,input:1,text:not-on-page]; Element not found: 엑셀 다운로드 버튼 [context: btn:30,input:1,text:not-on-page] + +### ❌ 부서 추가 테스트 (랜덤 + 하위부서) (department-add) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-3 (상위 부서 추가 모달 열기): Timeout waiting for modal [context: btn:45,input:1,text:found-on-page] +- Step step-7 (하위 부서 추가 버튼 클릭): Row with "undefined" not found +- Step step-10 (계층 구조 확인): Row with "undefined" not found +- Step step-11 (하위 부서 수정 모달 열기): Row with "undefined" not found +- Step step-14 (하위 부서 삭제): Row with "undefined" not found +- Step step-16 (상위 부서 삭제): Row with "undefined" not found + +### ❌ 입금관리 테스트 (deposit-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-3 (계정과목명 드롭다운 옵션 확인): Element not found: 계정과목명 드롭다운 [context: btn:89,input:1,text:not-on-page] +- Step step-4 (체크박스 선택 후 계정과목명 일괄변경): Element not found: 첫 번째 행 체크박스 [context: btn:89,input:1,text:not-on-page]; Element not found: 계정과목명 드롭다운 [context: btn:89,input:1,text:not-on-page]; Element not found: 매출대금 [context: btn:89,input:1,text:not-on-page] +- Step step-5 (입금 상세 페이지 이동): Element not found: 테이블 첫 번째 행 [context: btn:90,input:1,text:not-on-page] +- Step step-9 (거래처 드롭다운 옵션 확인): Element not found: 거래처 드롭다운 [context: btn:90,input:1,text:not-on-page] +- Step step-10 (입금 유형 드롭다운 옵션 확인): Element not found: 입금 유형 드롭다운 [context: btn:90,input:1,text:not-on-page] +- Step step-11 (수정 데이터 입력): Element not found: 거래처 드롭다운 [context: btn:90,input:1,text:not-on-page]; Element not found: 거래처테스트 [context: btn:90,input:1,text:not-on-page]; Element not found: 입금 유형 드롭다운 [context: btn:90,input:1,text:not-on-page]; Element not found: 매출대금 [context: btn:90,input:1,text:not-on-page] +- Step step-16 (날짜 필터 검증): Element not found: 당해년도 [context: btn:60,input:0,text:not-on-page] + +### ❌ 기안함 테스트 (draft-box) +- Step step-10 (검색 기능 테스트): Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] +- Step step-11 (검색어 초기화): Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] +- Step step-13 (필터 적용 테스트 (임시저장)): Select not found: 필터 셀렉트박스 [context: btn:39,input:1,text:not-on-page] +- Step step-14 (필터 초기화): Select not found: 필터 셀렉트박스 [context: btn:39,input:1,text:not-on-page] +- Step step-16 (정렬 변경 테스트 (제목 오름차순)): Select not found: 정렬 셀렉트박스 [context: btn:39,input:1,text:not-on-page] +- Step step-17 (정렬 초기화): Select not found: 정렬 셀렉트박스 [context: btn:39,input:1,text:not-on-page] +- Step step-18 (체크박스 선택 (단일)): Element not found: 첫 번째 행 체크박스 [context: btn:39,input:1,text:not-on-page] +- Step step-20 (체크박스 해제): Element not found: 첫 번째 행 체크박스 [context: btn:39,input:1,text:not-on-page] +- Step step-21 (전체 선택 체크박스 클릭): Element not found: 헤더 체크박스 (전체 선택) [context: btn:39,input:1,text:not-on-page] +- Step step-22 (전체 선택 해제): Element not found: 헤더 체크박스 (전체 선택) [context: btn:39,input:1,text:not-on-page] +- Step step-24 (문서 클릭 (임시저장)): Element not found: 임시저장 상태의 문서 행 [context: btn:39,input:1,text:not-on-page] +- Step step-26 (문서 클릭 (결재대기/진행중/완료)): Element not found: 결재대기/진행중/완료 상태의 문서 행 [context: btn:45,input:1,text:not-on-page] +- Step step-31 (모달 닫기): Element not found: 모달 외부 또는 닫기 버튼 [context: btn:45,input:1,text:not-on-page] +- Step step-31-pdf-1 (⚠️ 필수 검증: PDF 다운로드 전 모달 스크린샷): Element not found: 결재대기/진행중/완료 상태의 문서 행 [context: btn:45,input:1,text:not-on-page] + +### ❌ 직원 등록 테스트 (employee-register) +- Step step-6 (인사 정보 입력): Element not found: 고용형태 선택 [context: btn:102,input:1,text:not-on-page]; Element not found: 정규직 [context: btn:102,input:1,text:not-on-page]; Element not found: 직급 선택 [context: btn:102,input:1,text:not-on-page] +- Step step-8-1 (검색 기간 설정 - 유효 기간): Input not found: undefined + +### ❌ 이벤트 게시판 테스트 (event-board) +- Step step-1 (고객센터 메뉴 진입): Element not found: 이벤트 게시판 [context: btn:40,input:1,text:not-on-page] + +### ❌ 예상비용 관리 테스트 (expected-expenses) +- Step step-1 (2단계 메뉴 진입: 회계관리 > 예상비용): Element not found: 예상비용 [context: btn:79,input:1,text:not-on-page] +- Step step-3 (기간 설정 (2년)): Element not found: 기간 선택 버튼 [context: btn:79,input:1,text:not-on-page]; Element not found: 적용 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-5 (등록 버튼 클릭): Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-7 (예상 지급일 입력): Element not found: 예상 지급일 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-8 (결제일 입력): Element not found: 결제일 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-9 (거래유형 선택): Element not found: 거래유형 Select [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 목록 [context: btn:79,input:1,text:not-on-page] +- Step step-10 (거래처 입력): Element not found: 거래처 Combobox [context: btn:79,input:1,text:found-on-page]; Input not found: 거래처 입력 필드 [context: btn:79,input:1,text:not-on-page]; Select not found: 거래처 옵션 또는 직접 입력 [context: btn:79,input:1,text:not-on-page] +- Step step-11 (지출금액 입력): Element not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-12 (계좌 선택): Element not found: 계좌 Select [context: btn:79,input:1,text:found-on-page]; Select not found: 계좌 옵션 [context: btn:79,input:1,text:not-on-page] +- Step step-13 (계정과목 선택): Element not found: 계정과목 Select [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 목록 [context: btn:79,input:1,text:not-on-page] +- Step step-14 (적요 입력): Element not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-15 (등록 버튼 클릭 및 저장): Element not found: 등록 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] +- Step step-17 (수정 아이콘 클릭): Element not found: 신규 등록 행의 수정 아이콘 [context: btn:79,input:1,text:not-on-page] +- Step step-18 (지출금액 수정): Element not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-19 (적요 수정): Element not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-20 (수정 버튼 클릭 및 저장): Element not found: 수정 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] +- Step step-22 (체크박스 선택 (단일)): Element not found: 수정된 행의 체크박스 [context: btn:79,input:1,text:not-on-page] +- Step step-23 (예상 지급일 변경 버튼 클릭): Element not found: 예상 지급일 변경 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-24 (새로운 예상 지급일 선택): Element not found: 날짜 선택 필드 [context: btn:79,input:1,text:not-on-page] +- Step step-25 (예상 지급일 변경 확인): Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-27 (전자결재 버튼 클릭): Element not found: 전자결재 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-29 (추가 데이터 등록 (일괄삭제 테스트용)): Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page]; Element not found: 등록 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] +- Step step-30 (복수 체크박스 선택): Element not found: 첫 번째 테스트 데이터 체크박스 [context: btn:79,input:1,text:not-on-page]; Element not found: 두 번째 테스트 데이터 체크박스 [context: btn:79,input:1,text:not-on-page] +- Step step-31 (일괄삭제 버튼 클릭): Element not found: 일괄삭제 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-32 (일괄삭제 취소): Element not found: 취소 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-33 (일괄삭제 재시도): Element not found: 일괄삭제 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-34 (일괄삭제 확인): Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-36 (단일 삭제 테스트 준비): Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page]; Element not found: 등록 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] +- Step step-37 (단일 삭제 아이콘 클릭): Element not found: 신규 등록 행의 삭제 아이콘 [context: btn:79,input:1,text:not-on-page] +- Step step-38 (단일 삭제 확인): Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] +- Step step-40 (필터 기능 테스트 - 거래유형): Element not found: 거래유형 필터 [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 [context: btn:79,input:1,text:not-on-page] +- Step step-41 (필터 기능 테스트 - 지급상태): Element not found: 지급상태 필터 [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 [context: btn:79,input:1,text:not-on-page] +- Step step-42 (필터 초기화): Element not found: 거래유형 필터 [context: btn:79,input:1,text:not-on-page]; Dropdown option "undefined" not found [context: btn:79,input:1,text:found-on-page]; Element not found: 지급상태 필터 [context: btn:79,input:1,text:not-on-page]; Dropdown option "undefined" not found [context: btn:79,input:1,text:found-on-page] + +### ❌ FAQ 테스트 (faq) +- Step step-1 (고객센터 메뉴 진입): Element not found: FAQ [context: btn:29,input:1] + +### ❌ 자유게시판 E2E 테스트 (free-board) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 14 (정렬 복원 (최신순)): Dropdown option "최신순" not found [context: btn:70,input:1] +- Step 16 (게시글 작성 페이지 진입 확인): URL pattern mismatch: /ko/boards/free/create +- Step 24 (게시글 등록 완료 (URL 안정성 검증)): URL pattern mismatch: /ko/boards/free/\d+ + +### ❌ 검사관리 테스트 (inspection-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-1 (품질관리 메뉴 진입): Element not found: 검사관리 [context: btn:81,input:1,text:not-on-page] +- Step step-4 (필수 검증 #2: 검사 등록 모달 열기): Timeout waiting for modal [context: btn:81,input:1,text:found-on-page] +- Step step-5 (검사 등록 폼 입력): Dropdown option "{testData.inspection.worker}" not found [context: btn:81,input:1,text:not-on-page]; Input not found: 특이사항 [context: btn:81,input:1,text:not-on-page]; Element not found: 양호 [context: btn:81,input:1,text:not-on-page]; Input not found: 높이 측정값 [context: btn:81,input:1,text:not-on-page]; Input not found: 길이 측정값 [context: btn:81,input:1,text:not-on-page] +- Step step-8 (등록된 검사 상세 열기): Row with "undefined" not found +- Step step-9 (검사 정보 수정): Element not found: 수정 [context: btn:28,input:24,text:not-on-page]; Input not found: 특이사항 [context: btn:28,input:24,text:not-on-page] +- Step step-11 (검사 삭제 준비): Row with "undefined" not found + +### ❌ 재고현황 테스트 (inventory-status) +- Step step-1 (자재관리 메뉴 진입): Element not found: 재고현황 [context: btn:37,input:1,text:not-on-page] +- Step step-3 (필수 검증 #3: 품목유형 탭 필터 - 원자재): Element not found: 원자재 [context: btn:37,input:1,text:not-on-page] +- Step step-4 (필수 검증 #3: 품목유형 탭 필터 - 부자재): Element not found: 부자재 [context: btn:37,input:1,text:not-on-page] +- Step step-5 (필수 검증 #3: 품목유형 탭 필터 - 소모품): Element not found: 소모품 [context: btn:37,input:1,text:not-on-page] + +### ❌ undefined (item-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 10 (⚠️ 필수 검증: 검색 기능 테스트): Input not found: textbox:품목코드, 품목명, 규격 검색... [context: btn:46,input:0,text:not-on-page] + +### ❌ 품목기준관리 테스트 (item-standard-management) +- **에러**: Menu navigation failed: 기준정보 관리 > 품목기준관리 + +### ❌ 설정 - 휴가정책 (leave-policy) +- Step 12 (기준 셀렉트 클릭): Element not found: 기준 셀렉트 [context: btn:26,input:5,text:not-on-page] + +### ❌ 로그인 테스트 (끝판왕) (login-test) +- Step 5 (비밀번호 표시/숨김 토글 테스트): Element not found: passwordToggle [context: btn:46,input:0] +- Step 6 (비밀번호 숨김 복원): Element not found: passwordToggle [context: btn:46,input:0] +- Step 7 (로그인 실패 테스트 - 빈 필드): Element not found: loginButton [context: btn:46,input:0] +- Step 8 (아이디 입력): Input not found: usernameInput [context: btn:46,input:0] +- Step 9 (로그인 실패 테스트 - 잘못된 비밀번호): Input not found: passwordInput [context: btn:46,input:0] +- Step 10 (잘못된 비밀번호로 로그인 시도): Element not found: loginButton [context: btn:46,input:0] +- Step 11 (비밀번호 필드 초기화): Input not found: passwordInput [context: btn:46,input:0] +- Step 12 (올바른 비밀번호 입력): Input not found: passwordInput [context: btn:46,input:0] +- Step 13 (필수 검증 #2: 로그인 버튼 클릭): Element not found: loginButton [context: btn:46,input:0] +- Step 19 (로그아웃 버튼 클릭): Element not found: logoutButton [context: btn:46,input:0] +- Step 20 (로그아웃 후 로그인 페이지 확인): URL missing: /login +- Step 22 (재로그인 테스트): Input not found: usernameInput [context: btn:46,input:0]; Input not found: passwordInput [context: btn:46,input:0]; Element not found: loginButton [context: btn:46,input:0] + +### ❌ 설정 - 알림설정 (notification-settings) +- Step 40 (마스터 스위치 ON 테스트 - 수주/발주 알림 활성화): Element not found: heading:has-text('수주/발주 알림') + switch [context: btn:102,input:0,text:not-on-page] +- Step 43 (하위 알림 스위치 ON - 수주 등록 알림): Element not found: text='수주 등록 알림' >> .. >> switch [context: btn:102,input:0,text:found-on-page] +- Step 47 (알림 소리 선택 - combobox 클릭): Element not found: text='수주 등록 알림' >> .. >> combobox [context: btn:102,input:0,text:found-on-page] +- Step 51 (알림 소리 선택 - SAM 보이스): Element not found: option:has-text('SAM 보이스') [context: btn:102,input:0,text:found-on-page] +- Step 53 (이메일 알림 활성화): Element not found: text='수주 등록 알림' >> .. >> checkbox [context: btn:102,input:0,text:found-on-page] +- Step 55 (마스터 스위치 ON 테스트 - 전자결재 알림 활성화): Element not found: heading:has-text('전자결재 알림') + switch [context: btn:102,input:0,text:found-on-page] +- Step 60 (결재요청 알림 스위치 ON): Element not found: text='결재요청 알림' >> .. >> switch [context: btn:102,input:0,text:found-on-page] +- Step 61 (결재요청 알림 소리 변경 - combobox 클릭): Element not found: text='결재요청 알림' >> .. >> combobox [context: btn:102,input:0,text:found-on-page] +- Step 62 (결재요청 알림 소리 선택 - 무음): Element not found: option:has-text('무음') [context: btn:102,input:0,text:found-on-page] +- Step 63 (결재요청 알림 이메일 활성화): Element not found: text='결재요청 알림' >> .. >> checkbox [context: btn:102,input:0,text:found-on-page] +- Step 64 (마스터 스위치 ON 테스트 - 생산 알림 활성화): Element not found: heading:has-text('생산 알림') + switch [context: btn:102,input:0,text:found-on-page] +- Step 67 (안전재고 알림 스위치 ON): Element not found: text='안전재고 알림' >> .. >> switch [context: btn:102,input:0,text:found-on-page] +- Step 86 (마스터 스위치 OFF 테스트 - 수주/발주 알림 비활성화): Element not found: heading:has-text('수주/발주 알림') + switch [context: btn:132,input:0,text:not-on-page] + +### ❌ 수주관리 테스트 (order-management) +- Step step-1 (판매관리 메뉴 진입): Element not found: 수주관리 [context: btn:61,input:1,text:not-on-page] +- Step step-4 (필수 검증 #3: 수주확정 탭 필터): Element not found: 수주확정 [context: btn:61,input:1,text:not-on-page] +- Step step-7 (수주 등록 폼 입력): Element not found: 발주처 [context: btn:31,input:12,text:not-on-page]; Element not found: {testData.order.customer} [context: btn:31,input:12]; Input not found: 현장명 [context: btn:31,input:12,text:found-on-page]; Element not found: {testData.order.deliveryMethod} [context: btn:31,input:12] +- Step step-10 (수주 상세 열기): Row with "undefined" not found +- Step step-11 (수주 정보 수정): Element not found: 수정 [context: btn:31,input:12,text:not-on-page]; Element not found: 상차 [context: btn:31,input:12,text:not-on-page] +- Step step-13 (수주 삭제 준비): Row with "undefined" not found + +### ❌ 설정 - 권한관리 (permission-management) +- Step step-05 (탭 필터 테스트 - 공개): Element not found: 공개 탭 [context: btn:42,input:1,text:not-on-page] +- Step step-06 (탭 필터 테스트 - 숨김): Element not found: 숨김 탭 [context: btn:42,input:1,text:not-on-page] +- Step step-07 (탭 필터 테스트 - 전체): Element not found: 전체 탭 [context: btn:42,input:1,text:not-on-page] +- Step step-08 (검색 기능 테스트): Input not found: 검색 입력 필드 [context: btn:42,input:1,text:not-on-page] +- Step step-09 (검색 초기화): Input not found: 검색 입력 필드 [context: btn:42,input:1,text:not-on-page] +- Step step-10 (역할 등록 페이지 이동): Element not found: 역할 등록 버튼 [context: btn:42,input:1,text:not-on-page] +- Step step-11 (역할명 입력): Input not found: 권한명 입력 필드 [context: btn:42,input:1,text:not-on-page] +- Step step-12 (설명 입력): Input not found: 설명 입력 필드 (있는 경우) [context: btn:42,input:1,text:not-on-page] +- Step step-13 (상태 선택): Select not found: 상태 드롭다운 [context: btn:42,input:1,text:not-on-page] +- Step step-14 (역할 등록): Element not found: 등록 버튼 [context: btn:42,input:1,text:not-on-page] + +### ❌ 설정 - 팝업관리 (popup-management) +- Step 9 (검색 기능 - 제목으로 검색): Input not found: textbox '제목, 작성자로 검색...' [context: btn:45,input:1,text:not-on-page] +- Step 11 (검색어 초기화): Input not found: textbox '제목, 작성자로 검색...' [context: btn:45,input:1,text:not-on-page] +- Step 13 (팝업 등록 페이지 이동): Element not found: button '팝업 등록' [context: btn:45,input:1,text:found-on-page] +- Step 18 (대상 Combobox 클릭): Element not found: combobox (대상) [context: btn:45,input:1,text:found-on-page] +- Step 20 (대상 '부서별' 선택): Element not found: option '부서별' [context: btn:45,input:1,text:found-on-page] +- Step 24 (제목 입력): Input not found: textbox '제목 *' [context: btn:45,input:1,text:found-on-page] +- Step 27 (내용 입력): Input not found: editor content area [context: btn:45,input:1] +- Step 30 (상태 '사용함' 선택): Element not found: radio '사용함' [context: btn:45,input:1,text:found-on-page] +- Step 36 (등록 버튼 클릭): Element not found: button '등록' [context: btn:45,input:1,text:found-on-page] +- Step 41 (첫 번째 팝업 행 클릭): Element not found: row (첫 번째 팝업) [context: btn:45,input:1,text:not-on-page] +- Step 56 (수정 페이지 이동): Element not found: button '수정' [context: btn:45,input:1,text:not-on-page] +- Step 63 (제목 수정): Input not found: textbox '제목 *' [context: btn:45,input:1,text:found-on-page] +- Step 64 (내용 수정): Input not found: editor content area [context: btn:45,input:1] +- Step 65 (상태 변경 - 사용안함 선택): Element not found: radio '사용안함' [context: btn:45,input:1,text:found-on-page] +- Step 68 (저장 버튼 클릭): Element not found: button '저장' [context: btn:45,input:1,text:not-on-page] +- Step 75 (목록으로 이동): Element not found: button '목록으로' [context: btn:45,input:1,text:not-on-page] +- Step 80 (삭제 테스트 - 팝업 상세 페이지 이동): Element not found: row (수정한 팝업) [context: btn:75,input:1,text:not-on-page] +- Step 81 (삭제 버튼 클릭): Element not found: button '삭제' [context: btn:75,input:1,text:not-on-page] +- Step 83 (삭제 확인): Element not found: button '확인' (dialog) [context: btn:75,input:1,text:not-on-page] + +### ❌ 직책관리 테스트 (position-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-3 (필수 검증 #2: 직책 추가 모달 열기): Timeout waiting for modal [context: btn:136,input:1,text:found-on-page] +- Step step-4 (직책 추가 폼 입력): Input not found: 직책명 [context: btn:136,input:1,text:not-on-page] +- Step step-8 (직책 정보 수정): Input not found: 직책명 [context: btn:136,input:1,text:not-on-page]; Input not found: 직책명 [context: btn:136,input:1,text:not-on-page] + +### ❌ 단가관리 테스트 (price-management) +- Step step-1 (판매관리 메뉴 진입): Element not found: 단가관리 [context: btn:83,input:1,text:not-on-page] +- Step step-6 (미등록 품목 선택): Row with "undefined" not found +- Step step-10 (등록된 단가 품목 선택): Row with "undefined" not found +- Step step-11 (단가 정보 수정): Element not found: 수정 [context: btn:83,input:1,text:not-on-page] + +### ❌ 공정관리 테스트 (process-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-1 (기준정보 관리 메뉴 진입): Element not found: 공정관리 [context: btn:45,input:1,text:not-on-page] +- Step step-3 (탭 기능 확인): Element not found: 사용중 [context: btn:45,input:1,text:not-on-page] +- Step step-4 (필수 검증 #2: 공정 등록 모달 열기): Timeout waiting for modal [context: btn:128,input:0,text:not-on-page] +- Step step-5 (공정 등록 폼 입력): Input not found: 공정코드 [context: btn:128,input:0,text:not-on-page]; Dropdown option "{testData.process.type}" not found [context: btn:128,input:0,text:found-on-page]; Dropdown option "{testData.process.department}" not found [context: btn:128,input:0,text:found-on-page]; Input not found: 인원 [context: btn:128,input:0,text:not-on-page] +- Step step-8 (등록된 공정 상세 열기): Row with "undefined" not found +- Step step-9 (공정 정보 수정): Element not found: 수정 [context: btn:38,input:2,text:not-on-page]; Input not found: 공정명 [context: btn:38,input:2,text:not-on-page] +- Step step-11 (공정 삭제 준비): Row with "undefined" not found +- Step step-15 (날짜 필터 확인): Element not found: 당월 [context: btn:38,input:2,text:not-on-page] + +### ❌ undefined (production-dashboard) +- Step 25 (스크린 탭 클릭): Element not found: undefined +- Step 29 (전체 탭으로 복귀): Element not found: undefined +- Step 33 (지연 작업 카드 클릭): Element not found: undefined +- Step 55 (목록 버튼 클릭): Element not found: undefined +- Step 67 (작업자 화면 버튼 클릭): Element not found: undefined +- Step 72 (작업지시 목록 버튼 클릭): Element not found: undefined + +### ❌ 품질인정심사 시스템 테스트 (quality-certification) +- Step step-3 (필수 검증 #3: 년도 필터 기능): Element not found: 년도 [context: btn:52,input:1,text:not-on-page] +- Step step-7 (점검 항목 선택): Element not found: 수입검사 기준 확인 [context: btn:49,input:1,text:not-on-page] +- Step step-8 (필수 검증 #2: 체크 상태 변경): Element not found: 자재 보관 기준 확인 [context: btn:49,input:1,text:not-on-page] + +### ❌ 설정 - 직급관리 (rank-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-06 (직급 추가 - 빈 값 입력 시도): Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] +- Step step-07 (직급 추가 - 공백만 입력 시도): Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] +- Step step-08 (직급 추가 - 정상 입력): Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] +- Step step-09 (직급 추가 실행 (버튼 클릭)): Element not found: 추가 버튼 [context: btn:154,input:1,text:not-on-page] + +### ❌ 미수금현황 테스트 (receivables-status) +- Step step-6 (연도 선택 드롭다운 옵션 확인): Element not found: 연도 선택 드롭다운 [context: btn:272,input:1,text:not-on-page] +- Step step-7 (정렬 드롭다운 옵션 확인): Element not found: 정렬 드롭다운 [context: btn:272,input:1,text:not-on-page] +- Step step-8 (⚠️ 필수 검증: 거래처 검색 기능 테스트): Input not found: 검색 입력 필드 [context: btn:272,input:1,text:not-on-page]; Input not found: 검색 입력 필드 [context: btn:272,input:1,text:not-on-page] + +### ❌ 입고관리 테스트 (receiving-management) +- Step step-1 (자재관리 메뉴 진입): Element not found: 입고관리 [context: btn:51,input:1,text:not-on-page] + +### ❌ undefined (reference-box) +- Step 7 (⚠️ 필수 검증: 검색 기능 - 기안자 검색): Input not found: 검색창 [context: btn:43,input:1,text:not-on-page] + +### ❌ 급여관리 테스트 (salary-management) +- Step step-5-1 (⚠️ 필수 검증: 날짜 필터 검색): Input not found: 시작일 [context: btn:37,input:1,text:not-on-page]; Input not found: 종료일 [context: btn:37,input:1,text:not-on-page] + +### ❌ 매출관리 테스트 (sales-management) +- Step 1 (로그인): fill_form: no fields filled (0 not found) [context: btn:241,input:1] +- Step 6 (계정과목명 드롭박스 옵션 확인): Dropdown trigger not found: accountSubject [context: btn:205,input:1] +- Step 7 (체크박스 선택 (계정과목 저장용)): Checkbox not found: first_row [context: btn:205,input:1] +- Step 8 (계정과목 변경 - 제품매출 선택): Dropdown trigger not found: accountSubject [context: btn:205,input:1] +- Step 10 (저장 확인 다이얼로그 - 확인 클릭): No dialog found +- Step 15 (거래처명 드롭박스 클릭): Dropdown trigger not found: vendorId [context: btn:30,input:5] +- Step 16 (거래처명 선택): Dropdown trigger not found: vendorId [context: btn:30,input:5] +- Step 17 (매출유형 드롭박스 확인): Dropdown trigger not found: salesType [context: btn:30,input:5] +- Step 18 (매출유형 선택 - 제품매출): Dropdown trigger not found: salesType [context: btn:30,input:5] +- Step 20 (품목 동적 추가 - 추가 버튼 클릭): Button "품목 추가" not found [context: btn:30,input:5,text:not-on-page] +- Step 22 (품목 동적 삭제 - 두 번째 행 삭제): Button "remove_item_row_2" not found [context: btn:30,input:5] +- Step 24 (품목명 입력): Input not found: items[0].itemName [context: btn:30,input:5] +- Step 25 (수량 입력): Input not found: items[0].quantity [context: btn:30,input:5] +- Step 26 (단가 입력): Input not found: items[0].unitPrice [context: btn:30,input:5] +- Step 29 (적요 입력 (선택사항)): Input not found: items[0].note [context: btn:30,input:5] +- Step 31 (세금계산서 발행 Switch ON): Checkbox not found: taxInvoiceSwitch [context: btn:30,input:5] +- Step 32 (세금계산서 발행 Switch OFF): Checkbox not found: taxInvoiceSwitch [context: btn:30,input:5] +- Step 34 (거래명세서 발행 Switch ON): Checkbox not found: transactionStatementSwitch [context: btn:30,input:5] +- Step 35 (거래명세서 발행 Switch OFF): Checkbox not found: transactionStatementSwitch [context: btn:30,input:5] +- Step 40 (등록 테스트용 데이터 입력 - 거래처 선택): Dropdown trigger not found: vendorId [context: btn:30,input:5] +- Step 41 (등록 테스트용 데이터 입력 - 매출유형): Dropdown trigger not found: salesType [context: btn:30,input:5] +- Step 42 (등록 테스트용 데이터 입력 - 품목명): Input not found: items[0].itemName [context: btn:30,input:5] +- Step 43 (등록 테스트용 데이터 입력 - 수량): Input not found: items[0].quantity [context: btn:30,input:5] +- Step 44 (등록 테스트용 데이터 입력 - 단가): Input not found: items[0].unitPrice [context: btn:30,input:5] + +### ❌ 출하관리 테스트 (shipment-management) +- **에러**: Menu navigation failed: 출고관리 > 출하관리 + +### ❌ TC 근태관리 전체 테스트 (tc-attendance-management) +- **에러**: No steps defined + +### ❌ TC 대시보드 전체 테스트 (tc-dashboard) +- **에러**: No steps defined + +### ❌ TC 부서관리 전체 테스트 (tc-department-management) +- **에러**: No steps defined + +### ❌ TC 기안함 전체 테스트 (tc-draft-box) +- **에러**: No steps defined + +### ❌ TC 사원관리 전체 테스트 (tc-employee-management) +- **에러**: No steps defined + +### ❌ TC 재고관리 전체 테스트 (tc-inventory-management) +- **에러**: No steps defined + +### ❌ TC 공지사항/게시판 전체 테스트 (tc-notice-board) +- **에러**: No steps defined + +### ❌ 휴가관리 테스트 (vacation-management) +- Step step-4-1 (⚠️ 필수 검증: 날짜 필터 검색): Input not found: 시작일 [context: btn:78,input:1,text:not-on-page]; Input not found: 종료일 [context: btn:78,input:1,text:not-on-page] + +### ❌ 거래처원장 테스트 (vendor-ledger) +- Step 1 (로그인): fill_form: no fields filled (0 not found) [context: btn:114,input:1] +- Step 6 (기간 설정 - 시작일 변경): Input not found: startDate [context: btn:78,input:1] +- Step 7 (기간 설정 - 종료일 변경): Input not found: endDate [context: btn:78,input:1] +- Step 9 (⚠️ 필수 검증: 검색 기능 테스트): Input not found: searchInput [context: btn:78,input:1] + +### ❌ 거래처관리 테스트 (vendor-management) +- Step 9 (구분 필터 테스트): Dropdown trigger not found: categoryFilter [context: btn:84,input:1] +- Step 10 (구분 필터 초기화): Dropdown trigger not found: categoryFilter [context: btn:84,input:1] +- Step 11 (테이블 행 클릭 - 상세 페이지 이동): Row with "first_row" not found [context: btn:84,input:1] +- Step 21 (핵심 테스트: 수정 버튼 클릭): Button "수정" not found [context: btn:84,input:1,text:not-on-page] +- Step 24 (핵심 테스트: 거래처명 수정): Input not found: vendorName [context: btn:84,input:1] +- Step 25 (핵심 테스트: 저장 버튼 클릭): Button "저장" not found [context: btn:84,input:1,text:not-on-page] +- Step 27 (필수 검증 #2: 저장 확인 버튼 클릭): No dialog found [context: btn:84,input:1,text:not-on-page] +- Step 29 (원래 값 복원 - 수정 버튼 클릭): Button "수정" not found [context: btn:84,input:1,text:not-on-page] +- Step 30 (원래 값 복원 - 거래처명 수정): Input not found: vendorName [context: btn:84,input:1] +- Step 31 (원래 값 복원 - 저장): Button "저장" not found [context: btn:84,input:1,text:not-on-page] +- Step 32 (원래 값 복원 - 저장 확인): No dialog found [context: btn:84,input:1,text:not-on-page] +- Step 33 (목록 버튼 클릭 - 목록 복귀): Button "목록" not found [context: btn:84,input:1,text:not-on-page] + +### ❌ 출금관리 테스트 (withdrawal-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step step-3 (계정과목명 드롭다운 옵션 확인): Element not found: 계정과목명 드롭다운 [context: btn:125,input:1,text:not-on-page] +- Step step-4 (체크박스 선택 후 계정과목명 일괄변경): Element not found: 첫 번째 행 체크박스 [context: btn:125,input:1,text:not-on-page]; Element not found: 계정과목명 드롭다운 [context: btn:125,input:1,text:not-on-page] +- Step step-5 (출금 상세 페이지 이동): Element not found: 테이블 첫 번째 행 [context: btn:126,input:1,text:not-on-page] +- Step step-9 (거래처 드롭다운 옵션 확인): Element not found: 거래처 드롭다운 [context: btn:126,input:1,text:not-on-page] +- Step step-10 (출금 유형 드롭다운 옵션 확인): Element not found: 출금 유형 드롭다운 [context: btn:126,input:1,text:not-on-page] +- Step step-11 (수정 데이터 입력): Element not found: 거래처 드롭다운 [context: btn:126,input:1,text:not-on-page]; Element not found: 출금 유형 드롭다운 [context: btn:60,input:0,text:not-on-page]; Element not found: 매입대금 [context: btn:60,input:0,text:not-on-page] +- Step step-16 (날짜 필터 검증): Element not found: 당해년도 [context: btn:60,input:0,text:not-on-page] + +### ❌ undefined (work-order-management) +- Step 14 (검색 기능 테스트 - 검색어 입력 (필수 검증 #3)): Input not found: undefined +- Step 16 (검색어 초기화): Input not found: undefined +- Step 17 (승인대기 탭 클릭 (필수 검증 #3)): Element not found: undefined +- Step 19 (전체 탭 클릭): Element not found: undefined +- Step 21 (등록 버튼 클릭): Element not found: undefined +- Step 31 (수주 선택 버튼 클릭): Element not found: undefined +- Step 37 (모달 닫기): Element not found: undefined +- Step 39 (수동 등록 라디오 버튼 클릭): Element not found: undefined +- Step 48 (취소 버튼 클릭): Element not found: undefined +- Step 51 (작업지시 행 클릭 - 상세 페이지 이동): Element not found: undefined +- Step 61 (수정 버튼 클릭): Element not found: undefined +- Step 74 (취소 버튼 클릭 (수정 페이지)): Element not found: undefined +- Step 77 (목록 버튼 클릭): Element not found: undefined + +### ❌ 작업자 화면 테스트 (worker-screen) +- Step step-3 (필수 검증 #3: 정렬 옵션 확인): Element not found: 납기일순 [context: btn:45,input:0,text:not-on-page] diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_21-58-34.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_21-58-34.md new file mode 100644 index 0000000..4d9ce27 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_21-58-34.md @@ -0,0 +1,34 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_21-58-34 +**총 소요 시간**: 0.2분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 📉 (이전: 4/67 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 자유게시판 E2E 테스트 | ✅ | 22 | 22 | 0 | 13.4 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| free-board | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 67 | 1 | -66 | +| 성공 | 4 | 1 | 📉 -3 | +| 실패 | 63 | 0 | 📈 -63 | + +이전 실행: 2026-03-07_21-40-23 + +### 🟢 새로 통과한 시나리오 (1개) +- 자유게시판 E2E 테스트 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_22-01-55.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-01-55.md new file mode 100644 index 0000000..8c6c3e1 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-01-55.md @@ -0,0 +1,32 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_22-01-55 +**총 소요 시간**: 0.3분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 게시판 테스트 페이지 테스트 | ✅ | 13 | 11 | 0 | 15.4 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| board-test | 1 | 1 | 🟠 50% | +| free-board | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-07_21-58-34 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_22-04-53.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-04-53.md new file mode 100644 index 0000000..d39b0a9 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-04-53.md @@ -0,0 +1,33 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_22-04-53 +**총 소요 시간**: 0.2분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 기안함 테스트 | ✅ | 17 | 15 | 0 | 12.7 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| board-test | 1 | 1 | 🟠 50% | +| draft-box | 1 | 1 | 🟠 50% | +| free-board | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-07_22-01-55 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_22-09-08.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-09-08.md new file mode 100644 index 0000000..6e8b565 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-09-08.md @@ -0,0 +1,33 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_22-09-08 +**총 소요 시간**: 0.2분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 계정정보 테스트 | ✅ | 16 | 14 | 0 | 12.3 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| board-test | 1 | 1 | 🟠 50% | +| draft-box | 1 | 1 | 🟠 50% | +| free-board | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-07_22-04-53 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_22-12-12.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-12-12.md new file mode 100644 index 0000000..95391ae --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-12-12.md @@ -0,0 +1,33 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_22-12-12 +**총 소요 시간**: 0.3분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 공지사항 테스트 | ✅ | 19 | 15 | 0 | 15.8 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| board-test | 1 | 1 | 🟠 50% | +| draft-box | 1 | 1 | 🟠 50% | +| free-board | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-07_22-09-08 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_22-15-11.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-15-11.md new file mode 100644 index 0000000..17bca55 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_22-15-11.md @@ -0,0 +1,33 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_22-15-11 +**총 소요 시간**: 0.2분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 팝업관리 테스트 | ✅ | 23 | 21 | 0 | 14.9 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| board-test | 1 | 1 | 🟠 50% | +| draft-box | 1 | 1 | 🟠 50% | +| free-board | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-07_22-12-12 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-07_23-51-45.md b/E2E_FULL_TEST_SUMMARY_2026-03-07_23-51-45.md new file mode 100644 index 0000000..52801d4 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-07_23-51-45.md @@ -0,0 +1,389 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-07_23-51-45 +**총 소요 시간**: 91.4분 +**전체 시나리오**: 208개 | **성공**: 199개 | **실패**: 9개 📈 (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 접근성 검사 | 18 | 18 | 0 | 100% | +| 기능 테스트 | 151 | 142 | 9 | 94% | +| 엣지 케이스 | 17 | 17 | 0 | 100% | +| 성능 테스트 | 17 | 17 | 0 | 100% | +| 비즈니스 워크플로우 | 5 | 5 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 접근성 검사: 회계관리 > 거래처관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 2 | 접근성 검사: 회계관리 > 입금관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 3 | 접근성 검사: 회계관리 > 매입관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 4 | 접근성 검사: 회계관리 > 매출관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 5 | 접근성 검사: 결재관리 > 결재함 | ✅ | 4 | 4 | 0 | 11.2 | +| 6 | 접근성 검사: 결재관리 > 기안함 | ✅ | 4 | 4 | 0 | 11.2 | +| 7 | 접근성 검사: 게시판 > 자유게시판 | ✅ | 4 | 3 | 0 | 12.7 | +| 8 | 접근성 검사: 인사관리 > 근태관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 9 | 접근성 검사: 인사관리 > 부서관리 | ✅ | 4 | 3 | 0 | 12.8 | +| 10 | 접근성 검사: 인사관리 > 사원관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 11 | 접근성 검사: 인사관리 > 급여관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 12 | 접근성 검사: 자재관리 > 입고관리 | ✅ | 4 | 3 | 0 | 12.8 | +| 13 | 접근성 검사: 자재관리 > 재고현황 | ✅ | 4 | 4 | 0 | 11.2 | +| 14 | 접근성 검사: 생산관리 > 품목관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 15 | 접근성 검사: 생산관리 > 작업지시 | ✅ | 4 | 3 | 0 | 12.7 | +| 16 | 접근성 검사: 판매관리 > 거래처관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 17 | 접근성 검사: 판매관리 > 견적관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 18 | 접근성 검사: 판매관리 > 수주관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 19 | 악성채권추심관리 테스트 | ✅ | 24 | 22 | 0 | 11.2 | +| 20 | 계좌입출금내역 테스트 | ✅ | 18 | 16 | 0 | 10.1 | +| 21 | 어음관리 테스트 | ✅ | 24 | 18 | 0 | 23.3 | +| 22 | 카드사용내역 테스트 | ✅ | 18 | 16 | 0 | 10.1 | +| 23 | 회계거래처관리 테스트 | ✅ | 23 | 20 | 0 | 17.8 | +| 24 | 일일 일보 테스트 | ✅ | 10 | 10 | 0 | 11.5 | +| 25 | 입금관리 테스트 | ✅ | 25 | 19 | 0 | 22.3 | +| 26 | 지출예상내역서 테스트 | ✅ | 16 | 14 | 0 | 9.5 | +| 27 | 상품권관리 테스트 | ✅ | 11 | 9 | 0 | 13.0 | +| 28 | 일반전표입력 테스트 | ✅ | 12 | 10 | 0 | 15.1 | +| 29 | 결제내역 테스트 | ✅ | 18 | 14 | 0 | 15.2 | +| 30 | 매입관리 테스트 | ✅ | 16 | 14 | 0 | 12.4 | +| 31 | 미수금현황 테스트 | ✅ | 19 | 16 | 0 | 13.1 | +| 32 | 매출관리 테스트 | ✅ | 16 | 14 | 0 | 12.4 | +| 33 | 세금계산서발행 테스트 | ✅ | 11 | 10 | 0 | 11.3 | +| 34 | 세금계산서관리 테스트 | ✅ | 11 | 10 | 0 | 11.3 | +| 35 | 출금관리 테스트 | ✅ | 25 | 19 | 0 | 22.3 | +| 36 | API 건강성 감사: 회계 | ✅ | 39 | 39 | 0 | 46.2 | +| 37 | API 건강성 감사: 생산/기타 | ✅ | 35 | 35 | 0 | 46.7 | +| 38 | API 건강성 감사: 판매/인사 | ✅ | 35 | 35 | 0 | 46.6 | +| 39 | 결재함 E2E 테스트 | ✅ | 25 | 23 | 0 | 26.2 | +| 40 | 근태현황 출퇴근 테스트 | ✅ | 12 | 12 | 0 | 12.8 | +| 41 | 근태관리 테스트 | ❌ | 25 | 20 | 5 | 30.8 | +| 42 | 연속 등록 테스트: 어음관리 | ✅ | 39 | 39 | 0 | 120.9 | +| 43 | 연속 등록 테스트: 입금관리 | ✅ | 39 | 39 | 0 | 89.1 | +| 44 | 연속 등록 테스트: 자유게시판 | ✅ | 39 | 39 | 0 | 94.6 | +| 45 | 계정과목 일괄변경 버그 회귀 테스트 (BUG-SALES-20260115-001): 매출관리 | ✅ | 14 | 14 | 0 | 26.6 | +| 46 | 게시판 관리 테스트 | ✅ | 22 | 22 | 0 | 11.3 | +| 47 | 게시판 테스트 페이지 테스트 | ✅ | 13 | 11 | 0 | 15.3 | +| 48 | 설정 - 회사정보 | ❌ | 31 | 28 | 1 | 39.6 | +| 49 | Create+Delete 테스트: 어음관리 | ✅ | 12 | 12 | 0 | 38.1 | +| 50 | Create+Delete 테스트: 입금관리 | ✅ | 12 | 12 | 0 | 35.7 | +| 51 | Create+Delete 테스트: 자유게시판 | ✅ | 15 | 15 | 0 | 42.0 | +| 52 | 모듈 간 데이터 일관성 검증 (판매↔회계, 판매↔생산) | ✅ | 15 | 15 | 0 | 39.0 | +| 53 | 거래처 CRUD 삭제 기능 테스트 | ❌ | 21 | 7 | 14 | 34.4 | +| 54 | 이벤트 게시판 테스트 | ✅ | 19 | 14 | 0 | 16.2 | +| 55 | FAQ 테스트 | ✅ | 16 | 12 | 0 | 12.8 | +| 56 | 1:1 문의 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 57 | 공지사항 테스트 | ✅ | 19 | 15 | 0 | 15.7 | +| 58 | 부서관리 테스트 | ❌ | 16 | 15 | 1 | 26.1 | +| 59 | 입금관리 테스트 | ✅ | 21 | 20 | 0 | 16.2 | +| 60 | 상세 조회 왕복 검증: 회계 | ✅ | 23 | 23 | 0 | 32.6 | +| 61 | 상세 조회 왕복 검증: 인사/게시판 | ✅ | 15 | 15 | 0 | 25.5 | +| 62 | 상세 조회 왕복 검증: 판매 | ✅ | 23 | 23 | 0 | 32.6 | +| 63 | 목록↔상세 필드별 대조 검증: 매출관리 | ✅ | 12 | 12 | 0 | 23.0 | +| 64 | 기안함 테스트 | ✅ | 17 | 15 | 0 | 12.6 | +| 65 | 엣지 케이스: 경계값 입력 검증 (회계 > 매출관리) | ✅ | 14 | 14 | 0 | 23.5 | +| 66 | 엣지 케이스: 경계값 입력 (회계 > 입금관리) | ✅ | 14 | 14 | 0 | 23.3 | +| 67 | 엣지 케이스: 경계값 입력 (인사 > 사원관리) | ✅ | 14 | 14 | 0 | 23.3 | +| 68 | 엣지 케이스: 경계값 입력 (판매 > 거래처관리) | ✅ | 14 | 14 | 0 | 23.2 | +| 69 | 엣지 케이스: 동시 액션 (인사 > 근태관리) | ✅ | 5 | 5 | 0 | 13.7 | +| 70 | 엣지 케이스: 빈 폼 제출 (회계 > 입금관리) | ✅ | 7 | 7 | 0 | 19.0 | +| 71 | 엣지 케이스: 빈 폼 제출 (게시판 > 자유게시판) | ✅ | 7 | 7 | 0 | 19.0 | +| 72 | 엣지 케이스: 빈 폼 제출 (인사 > 사원관리) | ✅ | 7 | 7 | 0 | 19.0 | +| 73 | 엣지 케이스: 빈 폼 제출 (판매 > 거래처관리) | ✅ | 7 | 7 | 0 | 19.0 | +| 74 | 엣지 케이스: 숫자 경계값 (회계 > 입금관리) | ✅ | 13 | 13 | 0 | 23.6 | +| 75 | 엣지 케이스: UI 내구성 연타 테스트 (회계 > 매출관리) | ✅ | 10 | 10 | 0 | 27.2 | +| 76 | 엣지 케이스: 삭제 버튼 연타 (게시판 > 자유게시판) | ✅ | 6 | 6 | 0 | 15.8 | +| 77 | 엣지 케이스: 저장 버튼 연타 (게시판 > 자유게시판) | ✅ | 7 | 7 | 0 | 19.8 | +| 78 | 엣지 케이스: 저장 버튼 연타 (판매 > 거래처관리) | ✅ | 7 | 7 | 0 | 19.8 | +| 79 | 엣지 케이스: 특수문자 검색 (게시판 > 자유게시판) | ✅ | 14 | 14 | 0 | 31.9 | +| 80 | 엣지 케이스: 특수문자 검색 (판매 > 거래처관리) | ✅ | 14 | 14 | 0 | 31.8 | +| 81 | 엣지 케이스: 유니코드 입력 (게시판 > 자유게시판) | ✅ | 10 | 10 | 0 | 20.3 | +| 82 | 직원 등록 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 83 | 폼 유효성 검증 감사: 회계 (어음/입금/출금) | ✅ | 20 | 20 | 0 | 43.1 | +| 84 | 폼 유효성 검증 감사: 생산/게시판 | ✅ | 13 | 13 | 0 | 25.0 | +| 85 | 폼 유효성 검증 감사: 판매 (거래처/수주/견적) | ✅ | 20 | 20 | 0 | 43.1 | +| 86 | 자유게시판 E2E 테스트 | ✅ | 22 | 22 | 0 | 13.3 | +| 87 | Full CRUD 테스트: 어음관리 (Enhanced) | ✅ | 32 | 32 | 0 | 66.2 | +| 88 | Full CRUD 테스트: 입금관리 (금액포맷+상세대조+API검증) | ✅ | 35 | 35 | 0 | 55.8 | +| 89 | Full CRUD 테스트: 매출관리 (계산검증+상세대조+API검증) | ✅ | 33 | 33 | 0 | 54.0 | +| 90 | Full CRUD 테스트: 자유게시판 (Enhanced) | ✅ | 33 | 33 | 0 | 63.8 | +| 91 | 근태관리 테스트 | ✅ | 14 | 14 | 0 | 10.1 | +| 92 | 근태현황 테스트 | ✅ | 17 | 14 | 0 | 11.3 | +| 93 | 부서관리 테스트 | ✅ | 14 | 14 | 0 | 9.8 | +| 94 | 사원관리 테스트 | ✅ | 22 | 22 | 0 | 13.3 | +| 95 | 급여 장기요양보험 필드 검증 테스트 | ✅ | 16 | 16 | 0 | 17.0 | +| 96 | 급여관리 테스트 | ✅ | 23 | 23 | 0 | 13.0 | +| 97 | 휴가관리 테스트 | ✅ | 25 | 19 | 0 | 23.1 | +| 98 | 입력 필드 전수 테스트: 어음/입금/출금 (1/5) | ✅ | 20 | 20 | 0 | 75.2 | +| 99 | 입력 필드 전수 테스트: 거래처(회계)/악성채권 (2/5) | ✅ | 13 | 13 | 0 | 60.1 | +| 100 | 입력 필드 전수 테스트: 입고/제품검사 (5/5) | ✅ | 13 | 13 | 0 | 30.4 | +| 101 | 입력 필드 전수 테스트: 작업지시/작업실적 (4/5) | ✅ | 13 | 13 | 0 | 20.5 | +| 102 | 입력 필드 전수 테스트: 거래처(판매)/수주/견적 (3/5) | ✅ | 20 | 20 | 0 | 41.1 | +| 103 | 제품검사관리 CRUD 테스트 | ❌ | 26 | 16 | 10 | 28.7 | +| 104 | 품목관리 테스트 | ❌ | 0 | 0 | 0 | 13.5 | +| 105 | 품목기준관리 테스트 | ✅ | 14 | 13 | 0 | 11.0 | +| 106 | 로그인 테스트 (끝판왕) | ❌ | 23 | 10 | 11 | 32.7 | +| 107 | 배차차량관리 목록/검색/상세/등록폼/필터/페이지네이션 테스트 | ✅ | 23 | 22 | 0 | 14.3 | +| 108 | 입고관리 테스트 | ✅ | 25 | 19 | 0 | 20.6 | +| 109 | 재고현황 테스트 | ✅ | 18 | 16 | 0 | 10.0 | +| 110 | 다중 품목 등록 + 자동계산 + 품목삭제 재계산: 매출관리 | ✅ | 22 | 22 | 0 | 43.3 | +| 111 | 페이지네이션 & 정렬 검증: 회계 | ✅ | 17 | 17 | 0 | 39.1 | +| 112 | 페이지네이션 & 정렬 검증: 인사/게시판 | ✅ | 11 | 11 | 0 | 27.6 | +| 113 | 페이지네이션 & 정렬 검증: 판매 | ✅ | 17 | 17 | 0 | 37.1 | +| 114 | PDF 다운로드 전체 검사 | ✅ | 5 | 5 | 0 | 1.1 | +| 115 | 성능 측정: 회계관리 > 거래처관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 116 | 성능 측정: 회계관리 > 입금관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 117 | 성능 측정: 회계관리 > 매입관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 118 | 성능 측정: 회계관리 > 매출관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 119 | 성능 측정: 인사관리 > 근태관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 120 | 성능 측정: 인사관리 > 부서관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 121 | 성능 측정: 인사관리 > 사원관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 122 | 성능 측정: 인사관리 > 급여관리 | ✅ | 5 | 5 | 0 | 8.9 | +| 123 | 성능 측정: 자재관리 > 입고관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 124 | 성능 측정: 자재관리 > 재고현황 | ✅ | 5 | 5 | 0 | 9.0 | +| 125 | 성능 측정: 생산관리 > 품목관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 126 | 성능 측정: 생산관리 > 작업지시 | ✅ | 5 | 5 | 0 | 9.0 | +| 127 | 성능 측정: 생산관리 > 작업실적 | ✅ | 5 | 5 | 0 | 9.0 | +| 128 | 성능 측정: 판매관리 > 거래처관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 129 | 성능 측정: 판매관리 > 견적관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 130 | 성능 측정: 판매관리 > 수주관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 131 | 성능 측정: 판매관리 > 단가관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 132 | 생산 현황판 테스트 | ✅ | 12 | 10 | 0 | 12.8 | +| 133 | 생산품목관리 테스트 | ✅ | 14 | 13 | 0 | 11.0 | +| 134 | 작업지시 CRUD + 필드검증 + API확인: 생산관리 | ✅ | 30 | 30 | 0 | 41.4 | +| 135 | 작업실적 테스트 | ✅ | 23 | 19 | 0 | 18.5 | +| 136 | 작업자 화면 테스트 | ✅ | 14 | 13 | 0 | 11.0 | +| 137 | 발주관리 테스트 | ✅ | 12 | 10 | 0 | 14.8 | +| 138 | 구매 단가관리 테스트 | ✅ | 11 | 8 | 0 | 21.6 | +| 139 | 구매현황 테스트 | ✅ | 9 | 8 | 0 | 13.0 | +| 140 | 구매관리 거래처관리 테스트 | ✅ | 11 | 9 | 0 | 14.8 | +| 141 | 품질인정심사 시스템 테스트 | ✅ | 14 | 14 | 0 | 9.5 | +| 142 | 제품검사관리 테스트 | ✅ | 17 | 17 | 0 | 12.0 | +| 143 | 실적신고관리 테스트 | ✅ | 12 | 12 | 0 | 9.5 | +| 144 | 참조함 E2E 테스트 | ✅ | 40 | 37 | 0 | 29.8 | +| 145 | 새로고침 데이터 유지 검증: 어음관리 | ✅ | 18 | 18 | 0 | 45.2 | +| 146 | 새로고침 데이터 유지 검증: 입금관리 | ✅ | 16 | 16 | 0 | 52.0 | +| 147 | 새로고침 데이터 유지 검증: 매출관리 | ✅ | 16 | 16 | 0 | 48.4 | +| 148 | 새로고침 데이터 유지 검증: 자유게시판 | ✅ | 19 | 19 | 0 | 55.5 | +| 149 | 판매거래처관리 테스트 | ✅ | 23 | 19 | 0 | 19.6 | +| 150 | Full CRUD 테스트: 매출관리 | ✅ | 23 | 23 | 0 | 60.8 | +| 151 | 수주 일괄삭제 테스트 | ✅ | 20 | 20 | 0 | 39.6 | +| 152 | 수주관리 CRUD + 계산검증 테스트 | ✅ | 32 | 32 | 0 | 48.2 | +| 153 | 단가관리 테스트 | ✅ | 26 | 24 | 0 | 14.4 | +| 154 | 견적관리 CRUD + 계산검증 테스트 | ✅ | 32 | 31 | 0 | 45.5 | +| 155 | 현장관리 테스트 | ✅ | 11 | 9 | 0 | 14.8 | +| 156 | 기안함 검색 버그 상세 검증 | ✅ | 11 | 11 | 0 | 25.1 | +| 157 | 급여관리 검색 버그 상세 검증 | ✅ | 10 | 10 | 0 | 27.1 | +| 158 | 검색/필터/페이지네이션 테스트: 매출관리 | ✅ | 18 | 18 | 0 | 32.6 | +| 159 | 검색 기능 동작 검증: 회계 | ✅ | 20 | 20 | 0 | 52.2 | +| 160 | 검색 기능 감사: 회계관리 (1/6) | ✅ | 20 | 20 | 0 | 43.4 | +| 161 | 검색 기능 감사: 회계관리2+인사관리 (2/6) | ✅ | 20 | 20 | 0 | 36.3 | +| 162 | 검색 기능 감사: 게시판/고객센터/설정1 (5/6) | ✅ | 20 | 20 | 0 | 36.6 | +| 163 | 검색 기능 감사: 생산/품목/품질/자재 (3/6) | ✅ | 20 | 20 | 0 | 29.9 | +| 164 | 검색 기능 감사: 판매/출고/결재 (4/6) | ✅ | 16 | 16 | 0 | 37.6 | +| 165 | 검색 기능 감사: 설정2 (6/6) | ✅ | 14 | 14 | 0 | 23.5 | +| 166 | 검색 기능 동작 검증: 인사/게시판 | ✅ | 13 | 13 | 0 | 39.4 | +| 167 | 검색 기능 동작 검증: 판매 | ✅ | 20 | 20 | 0 | 40.7 | +| 168 | 검색 옵션 전수 테스트: 회계거래처/입금/출금 (1/10) | ✅ | 11 | 11 | 0 | 90.8 | +| 169 | 검색 옵션 전수 테스트: 매입/매출/카드내역 (2/10) | ✅ | 11 | 11 | 0 | 72.5 | +| 170 | 검색 옵션 전수 테스트: 어음/추심/계좌 (3/11) | ✅ | 11 | 11 | 0 | 59.9 | +| 171 | 검색 옵션 전수 테스트: 미수금/결제/지출예상 (4/11) | ✅ | 11 | 11 | 0 | 50.0 | +| 172 | 검색 옵션 전수 테스트: 결재관리 (6/10) | ✅ | 11 | 11 | 0 | 78.5 | +| 173 | 검색 옵션 전수 테스트: 게시판/고객센터 (5/10) | ✅ | 19 | 19 | 0 | 84.6 | +| 174 | 검색 옵션 전수 테스트: 인사관리 전체 (4/10) | ✅ | 27 | 27 | 0 | 106.7 | +| 175 | 검색 옵션 전수 테스트: 생산/품목관리 (8/11) | ✅ | 19 | 19 | 0 | 49.3 | +| 176 | 검색 옵션 전수 테스트: 품질/자재관리 (9/10) | ✅ | 15 | 15 | 0 | 73.7 | +| 177 | 검색 옵션 전수 테스트: 판매관리/출고 (7/11) | ✅ | 19 | 19 | 0 | 41.2 | +| 178 | 검색 옵션 전수 테스트: 설정 (10/11) | ✅ | 19 | 19 | 0 | 40.2 | +| 179 | 계정정보 테스트 | ✅ | 16 | 14 | 0 | 12.2 | +| 180 | 근태설정 테스트 | ✅ | 16 | 13 | 0 | 11.3 | +| 181 | 계좌관리 테스트 | ✅ | 23 | 21 | 0 | 13.1 | +| 182 | 바로빌연동관리 테스트 | ✅ | 8 | 6 | 0 | 12.5 | +| 183 | 달력 일정 CRUD 테스트 | ✅ | 16 | 16 | 0 | 33.8 | +| 184 | 달력관리 테스트 | ✅ | 8 | 7 | 0 | 11.0 | +| 185 | 카드관리 목록/검색/상세/등록폼/페이지네이션 테스트 | ✅ | 23 | 22 | 0 | 14.3 | +| 186 | 회사정보 테스트 | ✅ | 16 | 13 | 0 | 14.5 | +| 187 | 알림설정 테스트 | ✅ | 16 | 13 | 0 | 14.1 | +| 188 | 권한관리 테스트 | ✅ | 20 | 18 | 0 | 13.6 | +| 189 | 팝업관리 테스트 | ✅ | 23 | 21 | 0 | 14.8 | +| 190 | 직책관리 테스트 | ✅ | 13 | 13 | 0 | 11.3 | +| 191 | 직급관리 테스트 | ✅ | 13 | 12 | 0 | 11.3 | +| 192 | 구독관리 테스트 | ✅ | 16 | 12 | 0 | 14.5 | +| 193 | 휴가정책 테스트 | ✅ | 16 | 15 | 0 | 8.6 | +| 194 | 근무일정 테스트 | ✅ | 16 | 15 | 0 | 10.2 | +| 195 | 점검표 관리 테스트 | ✅ | 11 | 8 | 0 | 19.0 | +| 196 | 단가배포관리 테스트 | ✅ | 11 | 8 | 0 | 19.1 | +| 197 | 공정관리 테스트 | ✅ | 12 | 10 | 0 | 13.0 | +| 198 | 시스템 대시보드 위젯/통계/현황판/자금현황/지출예상/설정 테스트 | ✅ | 20 | 19 | 0 | 11.6 | +| 199 | Test bills 14 steps | ✅ | 14 | 14 | 0 | 99.5 | +| 200 | Test bills page minimal | ✅ | 3 | 3 | 0 | 7.0 | +| 201 | 거래처원장 테스트 | ✅ | 34 | 30 | 0 | 22.4 | +| 202 | 거래처관리 검색/필터/상세/수정/복원 + 네거티브 + 섹션검증: 회계관리 | ✅ | 36 | 36 | 0 | 45.9 | +| 203 | 출금관리 테스트 | ✅ | 21 | 20 | 0 | 16.2 | +| 204 | 비즈니스 워크플로우: 게시판→결재기안→결재함 흐름 | ✅ | 15 | 15 | 0 | 29.5 | +| 205 | 비즈니스 워크플로우: 사원등록→부서→근태→급여 흐름 | ✅ | 14 | 14 | 0 | 37.5 | +| 206 | 비즈니스 워크플로우: 품목→입고→재고→출고 흐름 | ✅ | 15 | 15 | 0 | 38.8 | +| 207 | 비즈니스 워크플로우: 구매→매입 흐름 | ✅ | 7 | 7 | 0 | 21.7 | +| 208 | 비즈니스 워크플로우: 거래처→단가→수주→매출 흐름 | ✅ | 22 | 22 | 0 | 27.0 | + +## 비즈니스 워크플로우 상세 + +### ✅ 비즈니스 워크플로우: 게시판→결재기안→결재함 흐름 +- 스텝: 15/15 성공 | 소요: 29.5초 +- 단계: CAPTURE_POST(✅) → CHECK_DRAFTS(✅) → CHECK_APPROVALS(✅) → CHECK_REFERENCES(✅) + +### ✅ 비즈니스 워크플로우: 사원등록→부서→근태→급여 흐름 +- 스텝: 14/14 성공 | 소요: 37.5초 +- 단계: CAPTURE_EMPLOYEE(✅) → CHECK_DEPARTMENTS(✅) → VERIFY_EMPLOYEE_ATTEND(✅) → VERIFY_EMPLOYEE_SALARY(✅) + +### ✅ 비즈니스 워크플로우: 품목→입고→재고→출고 흐름 +- 스텝: 15/15 성공 | 소요: 38.8초 +- 단계: CAPTURE_ITEM(✅) → VERIFY_ITEM_RECEIVING(✅) → VERIFY_ITEM_STOCK(✅) → CHECK_WITHDRAWAL(✅) + +### ✅ 비즈니스 워크플로우: 구매→매입 흐름 +- 스텝: 7/7 성공 | 소요: 21.7초 +- 단계: CAPTURE_VENDOR(✅) → VERIFY_VENDOR_ACC(✅) + +### ✅ 비즈니스 워크플로우: 거래처→단가→수주→매출 흐름 +- 스텝: 22/22 성공 | 소요: 27.0초 +- 단계: INIT(✅) → CAPTURE_CLIENT(✅) → VERIFY(✅) → CAPTURE_PRICE_ITEM(✅) → VERIFY(✅) → CHECK_ORDERS(✅) → VERIFY(✅) → CHECK_SALES(✅) → VERIFY(✅) → VERIFY(✅) → SUMMARY(✅) + +## 성능 테스트 요약 +| 페이지 | 로드 시간 | 등급 | API 평균 | DOM 노드 | +|--------|----------|------|---------|----------| +| 성능 측정: 회계관리 > 거래처관리 | - | - | - | - | +| 성능 측정: 회계관리 > 입금관리 | - | - | - | - | +| 성능 측정: 회계관리 > 매입관리 | - | - | - | - | +| 성능 측정: 회계관리 > 매출관리 | - | - | - | - | +| 성능 측정: 인사관리 > 근태관리 | - | - | - | - | +| 성능 측정: 인사관리 > 부서관리 | - | - | - | - | +| 성능 측정: 인사관리 > 사원관리 | - | - | - | - | +| 성능 측정: 인사관리 > 급여관리 | - | - | - | - | +| 성능 측정: 자재관리 > 입고관리 | - | - | - | - | +| 성능 측정: 자재관리 > 재고현황 | - | - | - | - | +| 성능 측정: 생산관리 > 품목관리 | - | - | - | - | +| 성능 측정: 생산관리 > 작업지시 | - | - | - | - | +| 성능 측정: 생산관리 > 작업실적 | - | - | - | - | +| 성능 측정: 판매관리 > 거래처관리 | - | - | - | - | +| 성능 측정: 판매관리 > 견적관리 | - | - | - | - | +| 성능 측정: 판매관리 > 수주관리 | - | - | - | - | +| 성능 측정: 판매관리 > 단가관리 | - | - | - | - | + +## 접근성 검사 요약 +| 페이지 | 점수 | 등급 | Critical | Serious | Moderate | +|--------|------|------|----------|---------|----------| +| 접근성 검사: 회계관리 > 거래처관리 | - | - | - | - | - | +| 접근성 검사: 회계관리 > 입금관리 | - | - | - | - | - | +| 접근성 검사: 회계관리 > 매입관리 | - | - | - | - | - | +| 접근성 검사: 회계관리 > 매출관리 | - | - | - | - | - | +| 접근성 검사: 결재관리 > 결재함 | - | - | - | - | - | +| 접근성 검사: 결재관리 > 기안함 | - | - | - | - | - | +| 접근성 검사: 게시판 > 자유게시판 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 근태관리 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 부서관리 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 사원관리 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 급여관리 | - | - | - | - | - | +| 접근성 검사: 자재관리 > 입고관리 | - | - | - | - | - | +| 접근성 검사: 자재관리 > 재고현황 | - | - | - | - | - | +| 접근성 검사: 생산관리 > 품목관리 | - | - | - | - | - | +| 접근성 검사: 생산관리 > 작업지시 | - | - | - | - | - | +| 접근성 검사: 판매관리 > 거래처관리 | - | - | - | - | - | +| 접근성 검사: 판매관리 > 견적관리 | - | - | - | - | - | +| 접근성 검사: 판매관리 > 수주관리 | - | - | - | - | - | + +## 실패 시나리오 상세 + +### ❌ 근태관리 테스트 (attendance-management) +- **진단**: element_timeout → 요소 대기 타임아웃. 페이지 로드 지연 또는 셀렉터 불일치 +- Step 8 (모달 열림 대기): Step timeout (>3s): 모달 열림 대기 +- Step 9 (대상 사원 선택): Dropdown option "첫번째 사원" not found [context: btn:97,input:1,text:found-on-page] +- Step 15 (사유 모달 열림 대기): Step timeout (>3s): 사유 모달 열림 대기 +- Step 16 (사유 유형 선택): Dropdown option "출장신청서" not found [context: btn:90,input:1,text:found-on-page] +- Step 17 (사유 대상 사원 선택): Dropdown option "첫번째 사원" not found [context: btn:90,input:1,text:found-on-page] + +### ❌ 설정 - 회사정보 (company-info) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 20 (회사 추가 다이얼로그 확인): Timeout waiting for modal + +### ❌ 거래처 CRUD 삭제 기능 테스트 (crud-delete-vendor) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 4 ([CREATE] 거래처명 입력): Input not found: input[name*='name'], input[placeholder*='거래처'] [context: btn:35,input:22,text:found-on-page] +- Step 5 ([CREATE] 사업자등록번호 입력): Input not found: input[name*='business'], input[placeholder*='사업자'] [context: btn:35,input:22,text:found-on-page] +- Step 6 ([CREATE] 대표자명 입력): Input not found: input[name*='representative'], input[placeholder*='대표'] [context: btn:35,input:22,text:found-on-page] +- Step 7 ([CREATE] 거래처 유형 선택): Dropdown trigger not found: 거래처 유형 [context: btn:35,input:22,text:found-on-page] +- Step 8 ([CREATE] 전화번호 입력): Input not found: input[name*='phone'], input[placeholder*='전화'] [context: btn:35,input:22,text:found-on-page] +- Step 9 ([CREATE] 이메일 입력): Input not found: input[name*='email'], input[placeholder*='이메일'] [context: btn:35,input:22,text:found-on-page] +- Step 12 ([CREATE] 등록 결과 확인 - 검색): Input not found: input[type='search'], input[placeholder*='검색'] [context: btn:35,input:22,text:found-on-page] +- Step 14 ([UPDATE] 생성된 거래처 행 클릭): Row with "E2E테스트_삭제용" not found [context: btn:35,input:22,text:not-on-page] +- Step 15 ([UPDATE] 수정 모드 진입): Button "수정" not found [context: btn:35,input:22,text:not-on-page] +- Step 16 ([UPDATE] 거래처명 수정): Input not found: input[name*='name'], input[placeholder*='거래처'] [context: btn:35,input:22,text:found-on-page] +- Step 17 ([UPDATE] 대표자명 수정): Input not found: input[name*='representative'], input[placeholder*='대표'] [context: btn:35,input:22,text:found-on-page] +- Step 18 ([UPDATE] 수정 저장): Button "저장" not found [context: btn:35,input:22,text:not-on-page] +- Step 19 ([UPDATE] 저장 확인 다이얼로그): No dialog found +- Step 21 ([DELETE] 삭제 버튼 클릭): Button "삭제" not found [context: btn:35,input:22,text:not-on-page] + +### ❌ 1:1 문의 테스트 (customer-inquiry) +- **에러**: Menu navigation failed: 고객센터 > 문의하기 + +### ❌ 부서관리 테스트 (department-add) +- Step 7 ([READ] 첫 번째 부서 노드 클릭): No table rows found + +### ❌ 직원 등록 테스트 (employee-register) +- **에러**: Menu navigation failed: 인사관리 > 직원관리 + +### ❌ 제품검사관리 CRUD 테스트 (inspection-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 10 ([CREATE] 수량 입력): Input not found: input[name*='quantity'], input[placeholder*='수량'] [context: btn:28,input:24,text:not-on-page] +- Step 11 ([CREATE] 작업자 선택): Dropdown option "홍킬동" not found [context: btn:28,input:24,text:not-on-page] +- Step 12 ([CREATE] 특이사항 입력): Input not found: textarea, input[name*='note'], input[placeholder*='특이'] [context: btn:28,input:24,text:not-on-page] +- Step 16 ([READ] 등록된 검사 행 클릭): Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] +- Step 17 ([UPDATE] 수정 버튼 클릭): Button "수정" not found [context: btn:28,input:24,text:not-on-page] +- Step 18 ([UPDATE] 특이사항 수정): Input not found: textarea, input[name*='note'], input[placeholder*='특이'] [context: btn:28,input:24,text:not-on-page] +- Step 19 ([UPDATE] 수정 저장): Button "저장" not found [context: btn:28,input:24,text:not-on-page] +- Step 22 ([DELETE] 삭제할 검사 행 클릭): Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] +- Step 23 ([DELETE] 삭제 버튼 클릭): Button "삭제" not found [context: btn:28,input:24,text:not-on-page] +- Step 24 ([DELETE] 삭제 확인): No dialog found + +### ❌ 품목관리 테스트 (item-management) +- **에러**: Menu navigation failed: 생산관리 > 스크린 생산 + +### ❌ 로그인 테스트 (끝판왕) (login-test) +- Step 5 (비밀번호 표시/숨김 토글 테스트): Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context: btn:47,input:0] +- Step 6 (비밀번호 숨김 복원): Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context: btn:47,input:0] +- Step 7 (로그인 실패 테스트 - 빈 필드): Element not found: button[type='submit'] [context: btn:47,input:0] +- Step 8 (아이디 입력): Input not found: #userId [context: btn:47,input:0] +- Step 9 (로그인 실패 테스트 - 잘못된 비밀번호): Input not found: #password [context: btn:47,input:0] +- Step 10 (잘못된 비밀번호로 로그인 시도): Element not found: button[type='submit'] [context: btn:47,input:0] +- Step 11 (비밀번호 필드 초기화): Input not found: #password [context: btn:47,input:0] +- Step 12 (올바른 비밀번호 입력): Input not found: #password [context: btn:47,input:0] +- Step 13 (필수 검증 #2: 로그인 버튼 클릭): Element not found: button[type='submit'] [context: btn:47,input:0] +- Step 20 (로그아웃 후 로그인 페이지 확인): URL missing: /login +- Step 22 (재로그인 테스트): Input not found: #userId [context: btn:47,input:0]; Input not found: #password [context: btn:47,input:0]; Element not found: button[type='submit'] [context: btn:47,input:0] + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 208 | +207 | +| 성공 | 1 | 199 | 📈 +198 | +| 실패 | 0 | 9 | 📉 +9 | + +이전 실행: 2026-03-07_22-15-11 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_01-20-50.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-20-50.md new file mode 100644 index 0000000..2a51031 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-20-50.md @@ -0,0 +1,48 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_01-20-50 +**총 소요 시간**: 0.3분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 📉 (이전: 199/208 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 품목관리 테스트 | ✅ | 16 | 12 | 0 | 15.2 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 208 | 1 | -207 | +| 성공 | 199 | 1 | 📉 -198 | +| 실패 | 9 | 0 | 📈 -9 | + +이전 실행: 2026-03-07_23-51-45 + +### 🟢 새로 통과한 시나리오 (1개) +- 품목관리 테스트 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_01-23-59.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-23-59.md new file mode 100644 index 0000000..acd0e14 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-23-59.md @@ -0,0 +1,46 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_01-23-59 +**총 소요 시간**: 0.1분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 부서관리 테스트 | ✅ | 16 | 16 | 0 | 8.8 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-08_01-20-50 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_01-27-57.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-27-57.md new file mode 100644 index 0000000..deff64d --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-27-57.md @@ -0,0 +1,60 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_01-27-57 +**총 소요 시간**: 0.9분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 📉 (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 로그인 테스트 (끝판왕) | ❌ | 23 | 12 | 10 | 26.3 | + +## 실패 시나리오 상세 + +### ❌ 로그인 테스트 (끝판왕) (login-test) +- Step 5 (비밀번호 표시/숨김 토글 테스트): Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context: btn:46,input:0] +- Step 6 (비밀번호 숨김 복원): Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context: btn:46,input:0] +- Step 7 (로그인 실패 테스트 - 빈 필드): Element not found: button[type='submit'] [context: btn:46,input:0] +- Step 8 (아이디 입력): Input not found: #userId [context: btn:46,input:0] +- Step 9 (로그인 실패 테스트 - 잘못된 비밀번호): Input not found: #password [context: btn:46,input:0] +- Step 10 (잘못된 비밀번호로 로그인 시도): Element not found: button[type='submit'] [context: btn:46,input:0] +- Step 11 (비밀번호 필드 초기화): Input not found: #password [context: btn:46,input:0] +- Step 12 (올바른 비밀번호 입력): Input not found: #password [context: btn:46,input:0] +- Step 13 (필수 검증 #2: 로그인 버튼 클릭): Element not found: button[type='submit'] [context: btn:46,input:0] +- Step 20 (로그아웃 후 로그인 페이지 확인): URL missing: /login + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 0 | 📉 -1 | +| 실패 | 0 | 1 | 📉 +1 | + +이전 실행: 2026-03-08_01-23-59 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_01-32-27.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-32-27.md new file mode 100644 index 0000000..e766894 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-32-27.md @@ -0,0 +1,59 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_01-32-27 +**총 소요 시간**: 0.9분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 ➡️ (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 로그인 테스트 | ❌ | 21 | 11 | 9 | 25.8 | + +## 실패 시나리오 상세 + +### ❌ 로그인 테스트 (login-test) +- Step 4 (로그인 페이지 확인): URL missing: /ko/login +- Step 8 (로그인 실패 테스트 - 빈 필드): Element not found: button[type='submit'] [context: btn:46,input:0] +- Step 10 (아이디 입력): Input not found: #userId [context: btn:46,input:0] +- Step 11 (잘못된 비밀번호 입력): Input not found: #password [context: btn:46,input:0] +- Step 12 (잘못된 비밀번호로 로그인 시도): Element not found: button[type='submit'] [context: btn:46,input:0] +- Step 14 (실패 후 로그인 페이지 유지 확인): URL missing: /login +- Step 15 (비밀번호 필드 초기화): Input not found: #password [context: btn:46,input:0] +- Step 16 (올바른 비밀번호 입력): Input not found: #password [context: btn:46,input:0] +- Step 17 (로그인 버튼 클릭): Element not found: button[type='submit'] [context: btn:46,input:0] + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 0 | 0 | ➡️ 동일 | +| 실패 | 1 | 1 | ➡️ 동일 | + +이전 실행: 2026-03-08_01-27-57 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_01-36-51.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-36-51.md new file mode 100644 index 0000000..93e52cd --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-36-51.md @@ -0,0 +1,58 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_01-36-51 +**총 소요 시간**: 0.9분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 ➡️ (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 로그인 테스트 | ❌ | 21 | 12 | 8 | 24.9 | + +## 실패 시나리오 상세 + +### ❌ 로그인 테스트 (login-test) +- Step 8 (로그인 실패 테스트 - 빈 필드): Element not found: button[type='submit'] [context: btn:30,input:0] +- Step 10 (아이디 입력): Input not found: #userId [context: btn:30,input:0] +- Step 11 (잘못된 비밀번호 입력): Input not found: #password [context: btn:30,input:0] +- Step 12 (잘못된 비밀번호로 로그인 시도): Element not found: button[type='submit'] [context: btn:30,input:0] +- Step 14 (실패 후 로그인 페이지 유지 확인): URL missing: /login +- Step 15 (비밀번호 필드 초기화): Input not found: #password [context: btn:30,input:0] +- Step 16 (올바른 비밀번호 입력): Input not found: #password [context: btn:30,input:0] +- Step 17 (로그인 버튼 클릭): Element not found: button[type='submit'] [context: btn:30,input:0] + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 0 | 0 | ➡️ 동일 | +| 실패 | 1 | 1 | ➡️ 동일 | + +이전 실행: 2026-03-08_01-32-27 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_01-40-41.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-40-41.md new file mode 100644 index 0000000..5a4846a --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_01-40-41.md @@ -0,0 +1,47 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_01-40-41 +**총 소요 시간**: 0.6분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 📈 (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 인증 세션 테스트 | ✅ | 13 | 12 | 0 | 4.9 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 0 | 1 | 📈 +1 | +| 실패 | 1 | 0 | 📈 -1 | + +이전 실행: 2026-03-08_01-36-51 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_08-49-56.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_08-49-56.md new file mode 100644 index 0000000..59ef8dc --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_08-49-56.md @@ -0,0 +1,48 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_08-49-56 +**총 소요 시간**: 0.3분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 근태관리 테스트 | ✅ | 25 | 25 | 0 | 19.2 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| attendance-management | 1 | 3 | 🔴 25% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-08_01-40-41 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_08-53-14.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_08-53-14.md new file mode 100644 index 0000000..bbb7d66 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_08-53-14.md @@ -0,0 +1,49 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_08-53-14 +**총 소요 시간**: 0.4분 +**전체 시나리오**: 1개 | **성공**: 1개 | **실패**: 0개 ➡️ (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 1 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 설정 - 회사정보 | ✅ | 31 | 29 | 0 | 23.6 | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| attendance-management | 1 | 3 | 🔴 25% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| company-info | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 1 | ➡️ 동일 | +| 실패 | 0 | 0 | ➡️ 동일 | + +이전 실행: 2026-03-08_08-49-56 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_08-56-24.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_08-56-24.md new file mode 100644 index 0000000..3ea33d5 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_08-56-24.md @@ -0,0 +1,55 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_08-56-24 +**총 소요 시간**: 0.3분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 📉 (이전: 1/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 거래처 CRUD 삭제 기능 테스트 | ❌ | 16 | 14 | 2 | 20.0 | + +## 실패 시나리오 상세 + +### ❌ 거래처 CRUD 삭제 기능 테스트 (crud-delete-vendor) +- Step 14 ([UPDATE] 저장 확인 다이얼로그): No dialog found +- Step 16 ([DELETE] 삭제 버튼 클릭): Button "삭제" not found [context: btn:120,input:1,text:not-on-page] + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| attendance-management | 1 | 3 | 🔴 25% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| company-info | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 1 | 0 | 📉 -1 | +| 실패 | 0 | 1 | 📉 +1 | + +이전 실행: 2026-03-08_08-53-14 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_09-00-20.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_09-00-20.md new file mode 100644 index 0000000..018db83 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_09-00-20.md @@ -0,0 +1,58 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_09-00-20 +**총 소요 시간**: 0.4분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 ➡️ (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 거래처 CRUD 삭제 기능 테스트 | ❌ | 17 | 12 | 5 | 23.9 | + +## 실패 시나리오 상세 + +### ❌ 거래처 CRUD 삭제 기능 테스트 (crud-delete-vendor) +- Step 10 ([UPDATE] 생성된 거래처 행 클릭): Row with "E2E테스트_삭제용" not found [context: btn:41,input:1,text:not-on-page] +- Step 11 ([UPDATE] 수정 모드 진입): Button "수정" not found [context: btn:41,input:1,text:not-on-page] +- Step 13 ([UPDATE] 수정 저장): Button "저장" not found [context: btn:41,input:1,text:not-on-page] +- Step 16 ([DELETE] 삭제 대상 거래처 행 클릭): Row with "E2E테스트_수정완료" not found [context: btn:41,input:1,text:not-on-page] +- Step 17 ([DELETE] 삭제 버튼 클릭): Button "삭제" not found [context: btn:41,input:1,text:not-on-page] + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| attendance-management | 1 | 3 | 🔴 25% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| company-info | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 0 | 0 | ➡️ 동일 | +| 실패 | 1 | 1 | ➡️ 동일 | + +이전 실행: 2026-03-08_08-56-24 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_09-05-43.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_09-05-43.md new file mode 100644 index 0000000..938759b --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_09-05-43.md @@ -0,0 +1,58 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_09-05-43 +**총 소요 시간**: 0.5분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 ➡️ (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 거래처 CRUD 삭제 기능 테스트 | ❌ | 18 | 13 | 5 | 27.1 | + +## 실패 시나리오 상세 + +### ❌ 거래처 CRUD 삭제 기능 테스트 (crud-delete-vendor) +- Step 11 ([UPDATE] 생성된 거래처 행 클릭): Row with "E2E테스트_삭제용" not found [context: btn:41,input:1,text:not-on-page] +- Step 12 ([UPDATE] 수정 모드 진입): Button "수정" not found [context: btn:41,input:1,text:not-on-page] +- Step 14 ([UPDATE] 수정 저장): Button "저장" not found [context: btn:41,input:1,text:not-on-page] +- Step 17 ([DELETE] 삭제 대상 거래처 행 클릭): Row with "E2E테스트_수정완료" not found [context: btn:41,input:1,text:not-on-page] +- Step 18 ([DELETE] 삭제 버튼 클릭): Button "삭제" not found [context: btn:41,input:1,text:not-on-page] + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| attendance-management | 1 | 3 | 🔴 25% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| company-info | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 0 | 0 | ➡️ 동일 | +| 실패 | 1 | 1 | ➡️ 동일 | + +이전 실행: 2026-03-08_09-00-20 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_09-09-18.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_09-09-18.md new file mode 100644 index 0000000..be11295 --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_09-09-18.md @@ -0,0 +1,62 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_09-09-18 +**총 소요 시간**: 0.4분 +**전체 시나리오**: 1개 | **성공**: 0개 | **실패**: 1개 ➡️ (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 기능 테스트 | 1 | 0 | 1 | 0% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 제품검사관리 CRUD 테스트 | ❌ | 25 | 17 | 8 | 24.3 | + +## 실패 시나리오 상세 + +### ❌ 제품검사관리 CRUD 테스트 (inspection-management) +- **진단**: empty_data → API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 +- Step 10 ([CREATE] 검사 정보 입력 (fill_form)): fill_form: no fields filled (2 not found) +- Step 16 ([READ] 등록된 검사 행 클릭): Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] +- Step 17 ([UPDATE] 수정 버튼 클릭): Button "수정" not found [context: btn:28,input:24,text:not-on-page] +- Step 18 ([UPDATE] 특이사항 수정): fill_form: no fields filled (1 not found) +- Step 19 ([UPDATE] 수정 저장): Button "저장" not found [context: btn:28,input:24,text:not-on-page] +- Step 22 ([DELETE] 삭제할 검사 행 클릭): Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] +- Step 23 ([DELETE] 삭제 버튼 클릭): Button "삭제" not found [context: btn:28,input:24,text:not-on-page] +- Step 24 ([DELETE] 삭제 확인): No dialog found + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 1 | 5 | 🔴 17% | +| attendance-management | 1 | 3 | 🔴 25% | +| approval-box | 1 | 2 | 🔴 33% | +| attendance-checkin | 1 | 2 | 🔴 33% | +| company-info | 1 | 2 | 🔴 33% | +| department-add | 1 | 2 | 🔴 33% | +| item-management | 1 | 2 | 🔴 33% | +| board-management | 1 | 1 | 🟠 50% | +| board-test | 2 | 1 | 🟠 67% | +| deposit-management | 1 | 1 | 🟠 50% | +| draft-box | 2 | 1 | 🟠 67% | +| free-board | 2 | 1 | 🟠 67% | +| production-dashboard | 1 | 1 | 🟠 50% | +| quality-certification | 1 | 1 | 🟠 50% | +| reference-box | 1 | 1 | 🟠 50% | +| sales-management | 1 | 1 | 🟠 50% | +| vendor-ledger | 1 | 1 | 🟠 50% | +| vendor-management | 1 | 1 | 🟠 50% | +| withdrawal-management | 1 | 1 | 🟠 50% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 1 | +0 | +| 성공 | 0 | 0 | ➡️ 동일 | +| 실패 | 1 | 1 | ➡️ 동일 | + +이전 실행: 2026-03-08_09-05-43 diff --git a/E2E_FULL_TEST_SUMMARY_2026-03-08_10-41-29.md b/E2E_FULL_TEST_SUMMARY_2026-03-08_10-41-29.md new file mode 100644 index 0000000..1e33b4e --- /dev/null +++ b/E2E_FULL_TEST_SUMMARY_2026-03-08_10-41-29.md @@ -0,0 +1,321 @@ +# E2E 전체 테스트 결과 요약 + +**실행 시간**: 2026-03-08_10-41-29 +**총 소요 시간**: 88.7분 +**전체 시나리오**: 204개 | **성공**: 204개 | **실패**: 0개 📈 (이전: 0/1 성공) + +## 카테고리별 요약 +| 카테고리 | 시나리오 수 | 성공 | 실패 | 성공률 | +|---------|-----------|------|------|--------| +| 접근성 검사 | 18 | 18 | 0 | 100% | +| 기능 테스트 | 147 | 147 | 0 | 100% | +| 엣지 케이스 | 17 | 17 | 0 | 100% | +| 성능 테스트 | 17 | 17 | 0 | 100% | +| 비즈니스 워크플로우 | 5 | 5 | 0 | 100% | + +## 시나리오별 결과 +| # | 시나리오 | 결과 | 스텝 | 성공 | 실패 | 소요(초) | +|---|---------|------|------|------|------|---------| +| 1 | 접근성 검사: 회계관리 > 거래처관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 2 | 접근성 검사: 회계관리 > 입금관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 3 | 접근성 검사: 회계관리 > 매입관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 4 | 접근성 검사: 회계관리 > 매출관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 5 | 접근성 검사: 결재관리 > 결재함 | ✅ | 4 | 4 | 0 | 11.2 | +| 6 | 접근성 검사: 결재관리 > 기안함 | ✅ | 4 | 4 | 0 | 11.2 | +| 7 | 접근성 검사: 게시판 > 자유게시판 | ✅ | 4 | 3 | 0 | 12.7 | +| 8 | 접근성 검사: 인사관리 > 근태관리 | ✅ | 4 | 3 | 0 | 12.6 | +| 9 | 접근성 검사: 인사관리 > 부서관리 | ✅ | 4 | 3 | 0 | 12.8 | +| 10 | 접근성 검사: 인사관리 > 사원관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 11 | 접근성 검사: 인사관리 > 급여관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 12 | 접근성 검사: 자재관리 > 입고관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 13 | 접근성 검사: 자재관리 > 재고현황 | ✅ | 4 | 4 | 0 | 11.2 | +| 14 | 접근성 검사: 생산관리 > 품목관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 15 | 접근성 검사: 생산관리 > 작업지시 | ✅ | 4 | 3 | 0 | 12.7 | +| 16 | 접근성 검사: 판매관리 > 거래처관리 | ✅ | 4 | 3 | 0 | 12.8 | +| 17 | 접근성 검사: 판매관리 > 견적관리 | ✅ | 4 | 4 | 0 | 11.2 | +| 18 | 접근성 검사: 판매관리 > 수주관리 | ✅ | 4 | 3 | 0 | 12.7 | +| 19 | 악성채권추심관리 테스트 | ✅ | 24 | 22 | 0 | 11.1 | +| 20 | 계좌입출금내역 테스트 | ✅ | 18 | 16 | 0 | 10.1 | +| 21 | 어음관리 테스트 | ✅ | 24 | 18 | 0 | 23.2 | +| 22 | 카드사용내역 테스트 | ✅ | 18 | 16 | 0 | 10.1 | +| 23 | 회계거래처관리 테스트 | ✅ | 23 | 20 | 0 | 17.8 | +| 24 | 일일 일보 테스트 | ✅ | 10 | 10 | 0 | 11.5 | +| 25 | 입금관리 테스트 | ✅ | 25 | 19 | 0 | 22.3 | +| 26 | 지출예상내역서 테스트 | ✅ | 16 | 14 | 0 | 9.5 | +| 27 | 상품권관리 테스트 | ✅ | 11 | 9 | 0 | 13.0 | +| 28 | 일반전표입력 테스트 | ✅ | 12 | 10 | 0 | 15.0 | +| 29 | 결제내역 테스트 | ✅ | 18 | 14 | 0 | 15.2 | +| 30 | 매입관리 테스트 | ✅ | 16 | 14 | 0 | 12.4 | +| 31 | 미수금현황 테스트 | ✅ | 19 | 16 | 0 | 13.1 | +| 32 | 매출관리 테스트 | ✅ | 16 | 14 | 0 | 12.4 | +| 33 | 세금계산서발행 테스트 | ✅ | 11 | 10 | 0 | 11.3 | +| 34 | 세금계산서관리 테스트 | ✅ | 11 | 10 | 0 | 11.3 | +| 35 | 출금관리 테스트 | ✅ | 25 | 19 | 0 | 22.3 | +| 36 | API 건강성 감사: 회계 | ✅ | 39 | 39 | 0 | 46.2 | +| 37 | API 건강성 감사: 생산/기타 | ✅ | 35 | 35 | 0 | 46.7 | +| 38 | API 건강성 감사: 판매/인사 | ✅ | 35 | 35 | 0 | 46.6 | +| 39 | 결재함 E2E 테스트 | ✅ | 25 | 23 | 0 | 26.3 | +| 40 | 근태현황 출퇴근 테스트 | ✅ | 12 | 12 | 0 | 12.8 | +| 41 | 근태관리 테스트 | ✅ | 25 | 25 | 0 | 19.1 | +| 42 | 연속 등록 테스트: 어음관리 | ✅ | 39 | 39 | 0 | 120.8 | +| 43 | 연속 등록 테스트: 입금관리 | ✅ | 39 | 39 | 0 | 89.2 | +| 44 | 연속 등록 테스트: 자유게시판 | ✅ | 39 | 39 | 0 | 94.5 | +| 45 | 계정과목 일괄변경 버그 회귀 테스트 (BUG-SALES-20260115-001): 매출관리 | ✅ | 14 | 14 | 0 | 26.5 | +| 46 | 게시판 관리 테스트 | ✅ | 22 | 22 | 0 | 11.3 | +| 47 | 게시판 테스트 페이지 테스트 | ✅ | 13 | 11 | 0 | 15.3 | +| 48 | 설정 - 회사정보 | ✅ | 31 | 29 | 0 | 23.5 | +| 49 | Create+Delete 테스트: 어음관리 | ✅ | 12 | 12 | 0 | 38.1 | +| 50 | Create+Delete 테스트: 입금관리 | ✅ | 12 | 12 | 0 | 35.7 | +| 51 | Create+Delete 테스트: 자유게시판 | ✅ | 15 | 15 | 0 | 42.0 | +| 52 | 모듈 간 데이터 일관성 검증 (판매↔회계, 판매↔생산) | ✅ | 15 | 15 | 0 | 39.0 | +| 53 | 이벤트 게시판 테스트 | ✅ | 19 | 14 | 0 | 16.2 | +| 54 | FAQ 테스트 | ✅ | 16 | 12 | 0 | 12.8 | +| 55 | 공지사항 테스트 | ✅ | 19 | 15 | 0 | 15.7 | +| 56 | 부서관리 테스트 | ✅ | 16 | 16 | 0 | 8.8 | +| 57 | 입금관리 테스트 | ✅ | 21 | 20 | 0 | 16.1 | +| 58 | 상세 조회 왕복 검증: 회계 | ✅ | 23 | 23 | 0 | 32.6 | +| 59 | 상세 조회 왕복 검증: 인사/게시판 | ✅ | 15 | 15 | 0 | 25.6 | +| 60 | 상세 조회 왕복 검증: 판매 | ✅ | 23 | 23 | 0 | 32.6 | +| 61 | 목록↔상세 필드별 대조 검증: 매출관리 | ✅ | 12 | 12 | 0 | 23.1 | +| 62 | 기안함 테스트 | ✅ | 17 | 15 | 0 | 12.7 | +| 63 | 엣지 케이스: 경계값 입력 검증 (회계 > 매출관리) | ✅ | 14 | 14 | 0 | 23.5 | +| 64 | 엣지 케이스: 경계값 입력 (회계 > 입금관리) | ✅ | 14 | 14 | 0 | 23.3 | +| 65 | 엣지 케이스: 경계값 입력 (인사 > 사원관리) | ✅ | 14 | 14 | 0 | 23.3 | +| 66 | 엣지 케이스: 경계값 입력 (판매 > 거래처관리) | ✅ | 14 | 14 | 0 | 23.2 | +| 67 | 엣지 케이스: 동시 액션 (인사 > 근태관리) | ✅ | 5 | 5 | 0 | 13.7 | +| 68 | 엣지 케이스: 빈 폼 제출 (회계 > 입금관리) | ✅ | 7 | 7 | 0 | 19.0 | +| 69 | 엣지 케이스: 빈 폼 제출 (게시판 > 자유게시판) | ✅ | 7 | 7 | 0 | 19.0 | +| 70 | 엣지 케이스: 빈 폼 제출 (인사 > 사원관리) | ✅ | 7 | 7 | 0 | 19.0 | +| 71 | 엣지 케이스: 빈 폼 제출 (판매 > 거래처관리) | ✅ | 7 | 7 | 0 | 19.0 | +| 72 | 엣지 케이스: 숫자 경계값 (회계 > 입금관리) | ✅ | 13 | 13 | 0 | 23.6 | +| 73 | 엣지 케이스: UI 내구성 연타 테스트 (회계 > 매출관리) | ✅ | 10 | 10 | 0 | 27.1 | +| 74 | 엣지 케이스: 삭제 버튼 연타 (게시판 > 자유게시판) | ✅ | 6 | 6 | 0 | 15.8 | +| 75 | 엣지 케이스: 저장 버튼 연타 (게시판 > 자유게시판) | ✅ | 7 | 7 | 0 | 19.8 | +| 76 | 엣지 케이스: 저장 버튼 연타 (판매 > 거래처관리) | ✅ | 7 | 7 | 0 | 19.7 | +| 77 | 엣지 케이스: 특수문자 검색 (게시판 > 자유게시판) | ✅ | 14 | 14 | 0 | 31.9 | +| 78 | 엣지 케이스: 특수문자 검색 (판매 > 거래처관리) | ✅ | 14 | 14 | 0 | 31.9 | +| 79 | 엣지 케이스: 유니코드 입력 (게시판 > 자유게시판) | ✅ | 10 | 10 | 0 | 20.3 | +| 80 | 폼 유효성 검증 감사: 회계 (어음/입금/출금) | ✅ | 20 | 20 | 0 | 43.1 | +| 81 | 폼 유효성 검증 감사: 생산/게시판 | ✅ | 13 | 13 | 0 | 25.0 | +| 82 | 폼 유효성 검증 감사: 판매 (거래처/수주/견적) | ✅ | 20 | 20 | 0 | 43.1 | +| 83 | 자유게시판 E2E 테스트 | ✅ | 22 | 22 | 0 | 13.4 | +| 84 | Full CRUD 테스트: 어음관리 (Enhanced) | ✅ | 32 | 32 | 0 | 66.2 | +| 85 | Full CRUD 테스트: 입금관리 (금액포맷+상세대조+API검증) | ✅ | 35 | 35 | 0 | 55.8 | +| 86 | Full CRUD 테스트: 매출관리 (계산검증+상세대조+API검증) | ✅ | 33 | 33 | 0 | 54.0 | +| 87 | Full CRUD 테스트: 자유게시판 (Enhanced) | ✅ | 33 | 33 | 0 | 63.8 | +| 88 | 근태관리 테스트 | ✅ | 14 | 14 | 0 | 10.1 | +| 89 | 근태현황 테스트 | ✅ | 17 | 14 | 0 | 11.3 | +| 90 | 부서관리 테스트 | ✅ | 14 | 14 | 0 | 9.8 | +| 91 | 사원관리 테스트 | ✅ | 22 | 22 | 0 | 13.3 | +| 92 | 급여 장기요양보험 필드 검증 테스트 | ✅ | 16 | 16 | 0 | 17.0 | +| 93 | 급여관리 테스트 | ✅ | 23 | 23 | 0 | 13.0 | +| 94 | 휴가관리 테스트 | ✅ | 25 | 19 | 0 | 23.2 | +| 95 | 입력 필드 전수 테스트: 어음/입금/출금 (1/5) | ✅ | 20 | 20 | 0 | 75.3 | +| 96 | 입력 필드 전수 테스트: 거래처(회계)/악성채권 (2/5) | ✅ | 13 | 13 | 0 | 60.1 | +| 97 | 입력 필드 전수 테스트: 입고/제품검사 (5/5) | ✅ | 13 | 13 | 0 | 30.4 | +| 98 | 입력 필드 전수 테스트: 작업지시/작업실적 (4/5) | ✅ | 13 | 13 | 0 | 20.5 | +| 99 | 입력 필드 전수 테스트: 거래처(판매)/수주/견적 (3/5) | ✅ | 20 | 20 | 0 | 41.1 | +| 100 | 품목관리 테스트 | ✅ | 16 | 12 | 0 | 15.2 | +| 101 | 품목기준관리 테스트 | ✅ | 14 | 13 | 0 | 11.0 | +| 102 | 인증 세션 테스트 | ✅ | 13 | 12 | 0 | 4.8 | +| 103 | 배차차량관리 목록/검색/상세/등록폼/필터/페이지네이션 테스트 | ✅ | 23 | 22 | 0 | 14.3 | +| 104 | 입고관리 테스트 | ✅ | 25 | 19 | 0 | 20.6 | +| 105 | 재고현황 테스트 | ✅ | 18 | 16 | 0 | 10.0 | +| 106 | 다중 품목 등록 + 자동계산 + 품목삭제 재계산: 매출관리 | ✅ | 22 | 22 | 0 | 43.3 | +| 107 | 페이지네이션 & 정렬 검증: 회계 | ✅ | 17 | 17 | 0 | 39.1 | +| 108 | 페이지네이션 & 정렬 검증: 인사/게시판 | ✅ | 11 | 11 | 0 | 27.6 | +| 109 | 페이지네이션 & 정렬 검증: 판매 | ✅ | 17 | 17 | 0 | 37.1 | +| 110 | PDF 다운로드 전체 검사 | ✅ | 5 | 5 | 0 | 1.1 | +| 111 | 성능 측정: 회계관리 > 거래처관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 112 | 성능 측정: 회계관리 > 입금관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 113 | 성능 측정: 회계관리 > 매입관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 114 | 성능 측정: 회계관리 > 매출관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 115 | 성능 측정: 인사관리 > 근태관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 116 | 성능 측정: 인사관리 > 부서관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 117 | 성능 측정: 인사관리 > 사원관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 118 | 성능 측정: 인사관리 > 급여관리 | ✅ | 5 | 5 | 0 | 8.9 | +| 119 | 성능 측정: 자재관리 > 입고관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 120 | 성능 측정: 자재관리 > 재고현황 | ✅ | 5 | 5 | 0 | 9.0 | +| 121 | 성능 측정: 생산관리 > 품목관리 | ✅ | 5 | 5 | 0 | 8.9 | +| 122 | 성능 측정: 생산관리 > 작업지시 | ✅ | 5 | 5 | 0 | 9.0 | +| 123 | 성능 측정: 생산관리 > 작업실적 | ✅ | 5 | 5 | 0 | 9.0 | +| 124 | 성능 측정: 판매관리 > 거래처관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 125 | 성능 측정: 판매관리 > 견적관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 126 | 성능 측정: 판매관리 > 수주관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 127 | 성능 측정: 판매관리 > 단가관리 | ✅ | 5 | 5 | 0 | 9.0 | +| 128 | 생산 현황판 테스트 | ✅ | 12 | 10 | 0 | 12.8 | +| 129 | 생산품목관리 테스트 | ✅ | 14 | 13 | 0 | 11.0 | +| 130 | 작업지시 CRUD + 필드검증 + API확인: 생산관리 | ✅ | 30 | 30 | 0 | 41.4 | +| 131 | 작업실적 테스트 | ✅ | 23 | 19 | 0 | 18.5 | +| 132 | 작업자 화면 테스트 | ✅ | 14 | 13 | 0 | 11.0 | +| 133 | 발주관리 테스트 | ✅ | 12 | 10 | 0 | 14.8 | +| 134 | 구매 단가관리 테스트 | ✅ | 11 | 8 | 0 | 21.5 | +| 135 | 구매현황 테스트 | ✅ | 9 | 8 | 0 | 13.0 | +| 136 | 구매관리 거래처관리 테스트 | ✅ | 11 | 9 | 0 | 14.8 | +| 137 | 품질인정심사 시스템 테스트 | ✅ | 14 | 14 | 0 | 9.5 | +| 138 | 제품검사관리 테스트 | ✅ | 17 | 17 | 0 | 12.0 | +| 139 | 실적신고관리 테스트 | ✅ | 12 | 12 | 0 | 9.5 | +| 140 | 참조함 E2E 테스트 | ✅ | 40 | 37 | 0 | 29.8 | +| 141 | 새로고침 데이터 유지 검증: 어음관리 | ✅ | 18 | 18 | 0 | 45.2 | +| 142 | 새로고침 데이터 유지 검증: 입금관리 | ✅ | 16 | 16 | 0 | 51.9 | +| 143 | 새로고침 데이터 유지 검증: 매출관리 | ✅ | 16 | 16 | 0 | 48.4 | +| 144 | 새로고침 데이터 유지 검증: 자유게시판 | ✅ | 19 | 19 | 0 | 55.5 | +| 145 | 판매거래처관리 테스트 | ✅ | 23 | 19 | 0 | 19.6 | +| 146 | Full CRUD 테스트: 매출관리 | ✅ | 23 | 23 | 0 | 60.7 | +| 147 | 수주 일괄삭제 테스트 | ✅ | 20 | 20 | 0 | 39.5 | +| 148 | 수주관리 CRUD + 계산검증 테스트 | ✅ | 32 | 32 | 0 | 48.2 | +| 149 | 단가관리 테스트 | ✅ | 26 | 24 | 0 | 14.4 | +| 150 | 견적관리 CRUD + 계산검증 테스트 | ✅ | 32 | 31 | 0 | 45.5 | +| 151 | 현장관리 테스트 | ✅ | 11 | 9 | 0 | 14.8 | +| 152 | 기안함 검색 버그 상세 검증 | ✅ | 11 | 11 | 0 | 25.1 | +| 153 | 급여관리 검색 버그 상세 검증 | ✅ | 10 | 10 | 0 | 27.1 | +| 154 | 검색/필터/페이지네이션 테스트: 매출관리 | ✅ | 18 | 18 | 0 | 32.5 | +| 155 | 검색 기능 동작 검증: 회계 | ✅ | 20 | 20 | 0 | 52.2 | +| 156 | 검색 기능 감사: 회계관리 (1/6) | ✅ | 20 | 20 | 0 | 43.3 | +| 157 | 검색 기능 감사: 회계관리2+인사관리 (2/6) | ✅ | 20 | 20 | 0 | 36.4 | +| 158 | 검색 기능 감사: 게시판/고객센터/설정1 (5/6) | ✅ | 20 | 20 | 0 | 36.6 | +| 159 | 검색 기능 감사: 생산/품목/품질/자재 (3/6) | ✅ | 20 | 20 | 0 | 29.9 | +| 160 | 검색 기능 감사: 판매/출고/결재 (4/6) | ✅ | 16 | 16 | 0 | 37.6 | +| 161 | 검색 기능 감사: 설정2 (6/6) | ✅ | 14 | 14 | 0 | 23.5 | +| 162 | 검색 기능 동작 검증: 인사/게시판 | ✅ | 13 | 13 | 0 | 39.5 | +| 163 | 검색 기능 동작 검증: 판매 | ✅ | 20 | 20 | 0 | 40.8 | +| 164 | 검색 옵션 전수 테스트: 회계거래처/입금/출금 (1/10) | ✅ | 11 | 11 | 0 | 90.8 | +| 165 | 검색 옵션 전수 테스트: 매입/매출/카드내역 (2/10) | ✅ | 11 | 11 | 0 | 72.3 | +| 166 | 검색 옵션 전수 테스트: 어음/추심/계좌 (3/11) | ✅ | 11 | 11 | 0 | 59.9 | +| 167 | 검색 옵션 전수 테스트: 미수금/결제/지출예상 (4/11) | ✅ | 11 | 11 | 0 | 50.0 | +| 168 | 검색 옵션 전수 테스트: 결재관리 (6/10) | ✅ | 11 | 11 | 0 | 78.4 | +| 169 | 검색 옵션 전수 테스트: 게시판/고객센터 (5/10) | ✅ | 19 | 19 | 0 | 84.5 | +| 170 | 검색 옵션 전수 테스트: 인사관리 전체 (4/10) | ✅ | 27 | 27 | 0 | 106.6 | +| 171 | 검색 옵션 전수 테스트: 생산/품목관리 (8/11) | ✅ | 19 | 19 | 0 | 49.3 | +| 172 | 검색 옵션 전수 테스트: 품질/자재관리 (9/10) | ✅ | 15 | 15 | 0 | 73.7 | +| 173 | 검색 옵션 전수 테스트: 판매관리/출고 (7/11) | ✅ | 19 | 19 | 0 | 41.2 | +| 174 | 검색 옵션 전수 테스트: 설정 (10/11) | ✅ | 19 | 19 | 0 | 40.2 | +| 175 | 계정정보 테스트 | ✅ | 16 | 14 | 0 | 12.2 | +| 176 | 근태설정 테스트 | ✅ | 16 | 13 | 0 | 11.3 | +| 177 | 계좌관리 테스트 | ✅ | 23 | 21 | 0 | 13.1 | +| 178 | 바로빌연동관리 테스트 | ✅ | 8 | 6 | 0 | 12.5 | +| 179 | 달력 일정 CRUD 테스트 | ✅ | 16 | 16 | 0 | 33.8 | +| 180 | 달력관리 테스트 | ✅ | 8 | 7 | 0 | 11.0 | +| 181 | 카드관리 목록/검색/상세/등록폼/페이지네이션 테스트 | ✅ | 23 | 22 | 0 | 14.3 | +| 182 | 회사정보 테스트 | ✅ | 16 | 13 | 0 | 14.5 | +| 183 | 알림설정 테스트 | ✅ | 16 | 13 | 0 | 14.2 | +| 184 | 권한관리 테스트 | ✅ | 20 | 18 | 0 | 13.7 | +| 185 | 팝업관리 테스트 | ✅ | 23 | 21 | 0 | 14.9 | +| 186 | 직책관리 테스트 | ✅ | 13 | 13 | 0 | 11.3 | +| 187 | 직급관리 테스트 | ✅ | 13 | 12 | 0 | 11.3 | +| 188 | 구독관리 테스트 | ✅ | 16 | 12 | 0 | 14.5 | +| 189 | 휴가정책 테스트 | ✅ | 16 | 15 | 0 | 8.6 | +| 190 | 근무일정 테스트 | ✅ | 16 | 15 | 0 | 10.3 | +| 191 | 점검표 관리 테스트 | ✅ | 11 | 8 | 0 | 19.1 | +| 192 | 단가배포관리 테스트 | ✅ | 11 | 8 | 0 | 19.0 | +| 193 | 공정관리 테스트 | ✅ | 12 | 10 | 0 | 13.0 | +| 194 | 시스템 대시보드 위젯/통계/현황판/자금현황/지출예상/설정 테스트 | ✅ | 20 | 19 | 0 | 11.7 | +| 195 | Test bills 14 steps | ✅ | 14 | 14 | 0 | 99.5 | +| 196 | Test bills page minimal | ✅ | 3 | 3 | 0 | 7.0 | +| 197 | 거래처원장 테스트 | ✅ | 34 | 30 | 0 | 22.4 | +| 198 | 거래처관리 검색/필터/상세/수정/복원 + 네거티브 + 섹션검증: 회계관리 | ✅ | 36 | 36 | 0 | 45.9 | +| 199 | 출금관리 테스트 | ✅ | 21 | 20 | 0 | 16.2 | +| 200 | 비즈니스 워크플로우: 게시판→결재기안→결재함 흐름 | ✅ | 15 | 15 | 0 | 29.6 | +| 201 | 비즈니스 워크플로우: 사원등록→부서→근태→급여 흐름 | ✅ | 14 | 14 | 0 | 37.5 | +| 202 | 비즈니스 워크플로우: 품목→입고→재고→출고 흐름 | ✅ | 15 | 15 | 0 | 38.8 | +| 203 | 비즈니스 워크플로우: 구매→매입 흐름 | ✅ | 7 | 7 | 0 | 21.7 | +| 204 | 비즈니스 워크플로우: 거래처→단가→수주→매출 흐름 | ✅ | 22 | 22 | 0 | 27.0 | + +## 비즈니스 워크플로우 상세 + +### ✅ 비즈니스 워크플로우: 게시판→결재기안→결재함 흐름 +- 스텝: 15/15 성공 | 소요: 29.6초 +- 단계: CAPTURE_POST(✅) → CHECK_DRAFTS(✅) → CHECK_APPROVALS(✅) → CHECK_REFERENCES(✅) + +### ✅ 비즈니스 워크플로우: 사원등록→부서→근태→급여 흐름 +- 스텝: 14/14 성공 | 소요: 37.5초 +- 단계: CAPTURE_EMPLOYEE(✅) → CHECK_DEPARTMENTS(✅) → VERIFY_EMPLOYEE_ATTEND(✅) → VERIFY_EMPLOYEE_SALARY(✅) + +### ✅ 비즈니스 워크플로우: 품목→입고→재고→출고 흐름 +- 스텝: 15/15 성공 | 소요: 38.8초 +- 단계: CAPTURE_ITEM(✅) → VERIFY_ITEM_RECEIVING(✅) → VERIFY_ITEM_STOCK(✅) → CHECK_WITHDRAWAL(✅) + +### ✅ 비즈니스 워크플로우: 구매→매입 흐름 +- 스텝: 7/7 성공 | 소요: 21.7초 +- 단계: CAPTURE_VENDOR(✅) → VERIFY_VENDOR_ACC(✅) + +### ✅ 비즈니스 워크플로우: 거래처→단가→수주→매출 흐름 +- 스텝: 22/22 성공 | 소요: 27.0초 +- 단계: INIT(✅) → CAPTURE_CLIENT(✅) → VERIFY(✅) → CAPTURE_PRICE_ITEM(✅) → VERIFY(✅) → CHECK_ORDERS(✅) → VERIFY(✅) → CHECK_SALES(✅) → VERIFY(✅) → VERIFY(✅) → SUMMARY(✅) + +## 성능 테스트 요약 +| 페이지 | 로드 시간 | 등급 | API 평균 | DOM 노드 | +|--------|----------|------|---------|----------| +| 성능 측정: 회계관리 > 거래처관리 | - | - | - | - | +| 성능 측정: 회계관리 > 입금관리 | - | - | - | - | +| 성능 측정: 회계관리 > 매입관리 | - | - | - | - | +| 성능 측정: 회계관리 > 매출관리 | - | - | - | - | +| 성능 측정: 인사관리 > 근태관리 | - | - | - | - | +| 성능 측정: 인사관리 > 부서관리 | - | - | - | - | +| 성능 측정: 인사관리 > 사원관리 | - | - | - | - | +| 성능 측정: 인사관리 > 급여관리 | - | - | - | - | +| 성능 측정: 자재관리 > 입고관리 | - | - | - | - | +| 성능 측정: 자재관리 > 재고현황 | - | - | - | - | +| 성능 측정: 생산관리 > 품목관리 | - | - | - | - | +| 성능 측정: 생산관리 > 작업지시 | - | - | - | - | +| 성능 측정: 생산관리 > 작업실적 | - | - | - | - | +| 성능 측정: 판매관리 > 거래처관리 | - | - | - | - | +| 성능 측정: 판매관리 > 견적관리 | - | - | - | - | +| 성능 측정: 판매관리 > 수주관리 | - | - | - | - | +| 성능 측정: 판매관리 > 단가관리 | - | - | - | - | + +## 접근성 검사 요약 +| 페이지 | 점수 | 등급 | Critical | Serious | Moderate | +|--------|------|------|----------|---------|----------| +| 접근성 검사: 회계관리 > 거래처관리 | - | - | - | - | - | +| 접근성 검사: 회계관리 > 입금관리 | - | - | - | - | - | +| 접근성 검사: 회계관리 > 매입관리 | - | - | - | - | - | +| 접근성 검사: 회계관리 > 매출관리 | - | - | - | - | - | +| 접근성 검사: 결재관리 > 결재함 | - | - | - | - | - | +| 접근성 검사: 결재관리 > 기안함 | - | - | - | - | - | +| 접근성 검사: 게시판 > 자유게시판 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 근태관리 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 부서관리 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 사원관리 | - | - | - | - | - | +| 접근성 검사: 인사관리 > 급여관리 | - | - | - | - | - | +| 접근성 검사: 자재관리 > 입고관리 | - | - | - | - | - | +| 접근성 검사: 자재관리 > 재고현황 | - | - | - | - | - | +| 접근성 검사: 생산관리 > 품목관리 | - | - | - | - | - | +| 접근성 검사: 생산관리 > 작업지시 | - | - | - | - | - | +| 접근성 검사: 판매관리 > 거래처관리 | - | - | - | - | - | +| 접근성 검사: 판매관리 > 견적관리 | - | - | - | - | - | +| 접근성 검사: 판매관리 > 수주관리 | - | - | - | - | - | + +## ⚠️ 불안정 테스트 (Flaky Tests) +최근 3일간 성공과 실패가 모두 발생한 시나리오: + +| 시나리오 | 성공 횟수 | 실패 횟수 | 안정성 | +|---------|----------|----------|--------| +| login-test | 2 | 5 | 🔴 29% | +| attendance-management | 2 | 3 | 🔴 40% | +| approval-box | 2 | 2 | 🟠 50% | +| attendance-checkin | 2 | 2 | 🟠 50% | +| company-info | 2 | 2 | 🟠 50% | +| department-add | 2 | 2 | 🟠 50% | +| item-management | 2 | 2 | 🟠 50% | +| board-management | 2 | 1 | 🟠 67% | +| board-test | 3 | 1 | 🟠 75% | +| deposit-management | 2 | 1 | 🟠 67% | +| draft-box | 3 | 1 | 🟠 75% | +| free-board | 3 | 1 | 🟠 75% | +| production-dashboard | 2 | 1 | 🟠 67% | +| quality-certification | 2 | 1 | 🟠 67% | +| reference-box | 2 | 1 | 🟠 67% | +| sales-management | 2 | 1 | 🟠 67% | +| vendor-ledger | 2 | 1 | 🟠 67% | +| vendor-management | 2 | 1 | 🟠 67% | +| withdrawal-management | 2 | 1 | 🟠 67% | + +## 📊 트렌드 분석 +| 항목 | 이전 실행 | 현재 실행 | 변화 | +|------|---------|---------|------| +| 전체 | 1 | 204 | +203 | +| 성공 | 0 | 204 | 📈 +204 | +| 실패 | 1 | 0 | 📈 -1 | + +이전 실행: 2026-03-08_09-09-18 diff --git a/Fail-account-info_2026-03-07_20-47-38.md b/Fail-account-info_2026-03-07_20-47-38.md new file mode 100644 index 0000000..2072116 --- /dev/null +++ b/Fail-account-info_2026-03-07_20-47-38.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: 계정정보 테스트 + +**테스트 ID**: account-info | **실행**: 2026-03-07_20-47-38 | **결과**: FAIL +**소요 시간**: 11.0초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 11 | 10 | 1 | 0 | 91% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-6 | 필수 검증 #2: 수정 버튼 클릭 | - | Element not found: 수정 [context: btn:52,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 509ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 설정 메뉴 진입 | - | ✅ | 1546ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Clicked: 계정정보 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 프로필 사진 영역 확인 | - | ✅ | 0ms | No action | +| step-4 | 비밀번호 변경 버튼 확인 | - | ✅ | 412ms | Clicked: 변경 | +| step-5 | 비밀번호 변경 취소 | - | ✅ | 507ms | Pressed key: Escape / Waited 300ms | +| step-6 | 필수 검증 #2: 수정 버튼 클릭 | - | ❌ | 1511ms | Element not found: 수정 [context: btn:52,input:0,text:not-on-page] | +| step-7 | 수정 취소 | - | ✅ | 401ms | Clicked: 취소 | +| step-8 | 약관 동의 정보 확인 | - | ✅ | 1ms | No action | +| step-9 | 사용중지 버튼 확인 | - | ✅ | 0ms | No action | +| step-10 | 탈퇴 버튼 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 25ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/account-info | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_account-info_2026-03-07_20-47-38.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 532 | +| 테이블 행 | 0 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-account-info_2026-03-07_21-03-46.md b/Fail-account-info_2026-03-07_21-03-46.md new file mode 100644 index 0000000..f10e660 --- /dev/null +++ b/Fail-account-info_2026-03-07_21-03-46.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: 계정정보 테스트 + +**테스트 ID**: account-info | **실행**: 2026-03-07_21-03-46 | **결과**: FAIL +**소요 시간**: 11.0초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 11 | 10 | 1 | 0 | 91% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-6 | 필수 검증 #2: 수정 버튼 클릭 | - | Element not found: 수정 [context: btn:52,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 501ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 설정 메뉴 진입 | - | ✅ | 1541ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Clicked: 계정정보 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 프로필 사진 영역 확인 | - | ✅ | 0ms | No action | +| step-4 | 비밀번호 변경 버튼 확인 | - | ✅ | 411ms | Clicked: 변경 | +| step-5 | 비밀번호 변경 취소 | - | ✅ | 505ms | Pressed key: Escape / Waited 300ms | +| step-6 | 필수 검증 #2: 수정 버튼 클릭 | - | ❌ | 1512ms | Element not found: 수정 [context: btn:52,input:0,text:not-on-page] | +| step-7 | 수정 취소 | - | ✅ | 415ms | Clicked: 취소 | +| step-8 | 약관 동의 정보 확인 | - | ✅ | 0ms | No action | +| step-9 | 사용중지 버튼 확인 | - | ✅ | 1ms | No action | +| step-10 | 탈퇴 버튼 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 18ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/account-info | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_account-info_2026-03-07_21-03-46.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 532 | +| 테이블 행 | 0 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-announcement-board_2026-03-07_20-47-50.md b/Fail-announcement-board_2026-03-07_20-47-50.md new file mode 100644 index 0000000..ed12ae2 --- /dev/null +++ b/Fail-announcement-board_2026-03-07_20-47-50.md @@ -0,0 +1,52 @@ +# ❌ E2E 테스트 실패: 공지사항 테스트 + +**테스트 ID**: announcement-board | **실행**: 2026-03-07_20-47-50 | **결과**: FAIL +**소요 시간**: 11.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 9 | 8 | 1 | 0 | 89% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-7 | 목록으로 돌아가기 | - | Element not found: 목록으로 [context: btn:36,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 500ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 고객센터 메뉴 진입 | - | ✅ | 1556ms | Found: 고객센터 / Clicked: 고객센터 / Waited 500ms / Clicked: 공지사항 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 날짜 필터 확인 | - | ✅ | 729ms | Clicked: 당월 / Waited 300ms | +| step-4 | 정렬 옵션 확인 | - | ✅ | 429ms | Clicked: 최신순 | +| step-5 | 공지사항 상세 보기 | - | ✅ | 510ms | Pressed key: Escape / Waited 300ms / eval_type:undefined/isPromise:false/val:und | +| step-6 | 상세 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-7 | 목록으로 돌아가기 | - | ❌ | 1521ms | Element not found: 목록으로 [context: btn:36,input:1,text:not-on-page] | +| step-8 | 페이지네이션 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/customer-center/notices | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_announcement-board_2026-03-07_20-47-49.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 469 | +| 테이블 행 | 1 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-announcement-board_2026-03-07_21-03-57.md b/Fail-announcement-board_2026-03-07_21-03-57.md new file mode 100644 index 0000000..31ca854 --- /dev/null +++ b/Fail-announcement-board_2026-03-07_21-03-57.md @@ -0,0 +1,52 @@ +# ❌ E2E 테스트 실패: 공지사항 테스트 + +**테스트 ID**: announcement-board | **실행**: 2026-03-07_21-03-57 | **결과**: FAIL +**소요 시간**: 11.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 9 | 8 | 1 | 0 | 89% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-7 | 목록으로 돌아가기 | - | Element not found: 목록으로 [context: btn:36,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 515ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 고객센터 메뉴 진입 | - | ✅ | 1522ms | Found: 고객센터 / Clicked: 고객센터 / Waited 500ms / Clicked: 공지사항 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 날짜 필터 확인 | - | ✅ | 730ms | Clicked: 당월 / Waited 300ms | +| step-4 | 정렬 옵션 확인 | - | ✅ | 403ms | Clicked: 최신순 | +| step-5 | 공지사항 상세 보기 | - | ✅ | 509ms | Pressed key: Escape / Waited 300ms / eval_type:undefined/isPromise:false/val:und | +| step-6 | 상세 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-7 | 목록으로 돌아가기 | - | ❌ | 1514ms | Element not found: 목록으로 [context: btn:36,input:1,text:not-on-page] | +| step-8 | 페이지네이션 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/customer-center/notices | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_announcement-board_2026-03-07_21-03-57.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 469 | +| 테이블 행 | 1 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-approval-box_2026-03-07_20-48-21.md b/Fail-approval-box_2026-03-07_20-48-21.md new file mode 100644 index 0000000..2557f22 --- /dev/null +++ b/Fail-approval-box_2026-03-07_20-48-21.md @@ -0,0 +1,52 @@ +# ❌ E2E 테스트 실패: 결재함 E2E 테스트 + +**테스트 ID**: approval-box | **실행**: 2026-03-07_20-48-21 | **결과**: FAIL +**소요 시간**: 31.8초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 9 | 0 | 1 | 4 | 0% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 8 | ⚠️ 필수 검증: 결재 문서 상세 보기 | - | Element not found: 미결재 탭 [context: btn:54,input:1,text:not-on-page]; Element not found: 첫 번째 결재 문서 행 | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7248ms | Requires native screenshot | +| 1 | 1차 메뉴 찾기: 결재관리 (스크롤 포함) | - | ⚠️ | 1433ms | Requires native screenshot | +| 2 | 2차 메뉴 찾기: 결재함 (스크롤 포함) | - | ⚠️ | 10833ms | Requires native screenshot | +| 3 | 404 에러 감지 및 대체 경로 시도 | - | ⚠️ | 3012ms | Requires native screenshot | +| 4 | 페이지 정상 로드 확인 | - | ⚠️ | 3046ms | Element not found: pageTitle / Element not found: pageContent | +| 5 | 통계 카드 확인 | - | ⚠️ | 1ms | Unknown action type: 현황 카드의 데이터 수집 | +| 6 | 탭 구조 확인 | - | ⚠️ | 0ms | Unknown action type: 4개 탭 존재 여부 확인 | +| 7 | 테이블 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: 테이블에 데이터가 표시되는지 확인 | +| 8 | ⚠️ 필수 검증: 결재 문서 상세 보기 | - | ❌ | 4561ms | Element not found: 미결재 탭 [context: btn:54,input:1,text:not-on-page] / Waited 500 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 108ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_approval-box_2026-03-07_20-48-21.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 611 | +| 테이블 행 | 1 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-approval-box_2026-03-07_21-04-29.md b/Fail-approval-box_2026-03-07_21-04-29.md new file mode 100644 index 0000000..f18ed56 --- /dev/null +++ b/Fail-approval-box_2026-03-07_21-04-29.md @@ -0,0 +1,52 @@ +# ❌ E2E 테스트 실패: 결재함 E2E 테스트 + +**테스트 ID**: approval-box | **실행**: 2026-03-07_21-04-29 | **결과**: FAIL +**소요 시간**: 31.9초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 9 | 0 | 1 | 4 | 0% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 8 | ⚠️ 필수 검증: 결재 문서 상세 보기 | - | Element not found: 미결재 탭 [context: btn:54,input:1,text:not-on-page]; Element not found: 첫 번째 결재 문서 행 | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7301ms | Requires native screenshot | +| 1 | 1차 메뉴 찾기: 결재관리 (스크롤 포함) | - | ⚠️ | 1430ms | Requires native screenshot | +| 2 | 2차 메뉴 찾기: 결재함 (스크롤 포함) | - | ⚠️ | 10838ms | Requires native screenshot | +| 3 | 404 에러 감지 및 대체 경로 시도 | - | ⚠️ | 3002ms | Requires native screenshot | +| 4 | 페이지 정상 로드 확인 | - | ⚠️ | 3029ms | Element not found: pageTitle / Element not found: pageContent | +| 5 | 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: 현황 카드의 데이터 수집 | +| 6 | 탭 구조 확인 | - | ⚠️ | 0ms | Unknown action type: 4개 탭 존재 여부 확인 | +| 7 | 테이블 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: 테이블에 데이터가 표시되는지 확인 | +| 8 | ⚠️ 필수 검증: 결재 문서 상세 보기 | - | ❌ | 4563ms | Element not found: 미결재 탭 [context: btn:54,input:1,text:not-on-page] / Waited 500 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 114ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_approval-box_2026-03-07_21-04-29.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 611 | +| 테이블 행 | 1 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-checkin_2026-03-07_20-48-45.md b/Fail-attendance-checkin_2026-03-07_20-48-45.md new file mode 100644 index 0000000..32d3009 --- /dev/null +++ b/Fail-attendance-checkin_2026-03-07_20-48-45.md @@ -0,0 +1,66 @@ +# ❌ E2E 테스트 실패: 근태현황 출퇴근 테스트 + +**테스트 ID**: attendance-checkin | **실행**: 2026-03-07_20-48-45 | **결과**: FAIL +**소요 시간**: 23.6초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 15 | 9 | 1 | 1 | 60% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-12 | 퇴근하기 (선택적) | - | Element not found: 퇴근하기 [context: btn:34,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 🔐 위치 권한 사전 설정 (Playwright) | - | ✅ | 1ms | No action | +| step-0-1 | 🗺️ 위치 권한 팝업 처리 (UI) | - | ⚠️ | 1500ms | Requires native screenshot | +| 2 | 1차 메뉴 찾기: 인사관리 (스크롤 포함) | - | ⚠️ | 1421ms | Requires native screenshot | +| 3 | 2차 메뉴 찾기: 근태현황 (스크롤 포함) | - | ⚠️ | 10827ms | Requires native screenshot | +| 4 | 404 에러 감지 및 대체 경로 시도 | - | ⚠️ | 3019ms | Requires native screenshot | +| 5 | 페이지 정상 로드 확인 | - | ⚠️ | 3025ms | Element not found: pageTitle / Element not found: pageContent | +| step-5 | 브라우저 위치 권한 설정 | - | ✅ | 0ms | No action | +| step-6 | 위치 정보 로딩 대기 | - | ✅ | 0ms | No action | +| step-7 | 사용자 정보 확인 | - | ✅ | 0ms | No action | +| step-8 | 출근 상태 확인 | - | ✅ | 0ms | No action | +| step-9 | 출근하기 (미출근 상태인 경우) | - | ✅ | 415ms | Clicked: 출근하기 | +| step-10 | 출근 완료 상태 확인 | - | ✅ | 0ms | No action | +| step-11 | 퇴근하기 버튼 상태 확인 | - | ✅ | 0ms | No action | +| step-12 | 퇴근하기 (선택적) | - | ❌ | 1504ms | Element not found: 퇴근하기 [context: btn:34,input:0,text:not-on-page] | +| step-13 | 최종 상태 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 88ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_attendance-checkin_2026-03-07_20-48-45.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 콘솔 에러 (진단) +1. `Loading the stylesheet 'https://fonts.googleapis.com/css?family=Google+Sans+Text:400&text=%E2%86%90%E2%86%92%E2%86%91%E2%86%93&lang=ko' violates the following Content Security Policy directive: "style` +2. `Loading the stylesheet 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Google+Sans:400,500,700|Google+Sans+Text:400,500,700&lang=ko' violates the following Content Security Policy dire` +3. `[GoogleMap] GPS 오류 코드: 3 메시지: Timeout expired` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 437 | +| 테이블 행 | 0 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-checkin_2026-03-07_21-04-53.md b/Fail-attendance-checkin_2026-03-07_21-04-53.md new file mode 100644 index 0000000..5d2ceb4 --- /dev/null +++ b/Fail-attendance-checkin_2026-03-07_21-04-53.md @@ -0,0 +1,66 @@ +# ❌ E2E 테스트 실패: 근태현황 출퇴근 테스트 + +**테스트 ID**: attendance-checkin | **실행**: 2026-03-07_21-04-53 | **결과**: FAIL +**소요 시간**: 23.6초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 15 | 9 | 1 | 1 | 60% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-9 | 출근하기 (미출근 상태인 경우) | - | Element not found: 출근하기 [context: btn:43,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 🔐 위치 권한 사전 설정 (Playwright) | - | ✅ | 0ms | No action | +| step-0-1 | 🗺️ 위치 권한 팝업 처리 (UI) | - | ⚠️ | 1502ms | Requires native screenshot | +| 2 | 1차 메뉴 찾기: 인사관리 (스크롤 포함) | - | ⚠️ | 1449ms | Requires native screenshot | +| 3 | 2차 메뉴 찾기: 근태현황 (스크롤 포함) | - | ⚠️ | 10837ms | Requires native screenshot | +| 4 | 404 에러 감지 및 대체 경로 시도 | - | ⚠️ | 3009ms | Requires native screenshot | +| 5 | 페이지 정상 로드 확인 | - | ⚠️ | 3025ms | Element not found: pageTitle / Element not found: pageContent | +| step-5 | 브라우저 위치 권한 설정 | - | ✅ | 0ms | No action | +| step-6 | 위치 정보 로딩 대기 | - | ✅ | 0ms | No action | +| step-7 | 사용자 정보 확인 | - | ✅ | 0ms | No action | +| step-8 | 출근 상태 확인 | - | ✅ | 0ms | No action | +| step-9 | 출근하기 (미출근 상태인 경우) | - | ❌ | 1530ms | Element not found: 출근하기 [context: btn:43,input:0,text:not-on-page] | +| step-10 | 출근 완료 상태 확인 | - | ✅ | 0ms | No action | +| step-11 | 퇴근하기 버튼 상태 확인 | - | ✅ | 0ms | No action | +| step-12 | 퇴근하기 (선택적) | - | ✅ | 410ms | Clicked: 퇴근하기 | +| step-13 | 최종 상태 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 85ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_attendance-checkin_2026-03-07_21-04-53.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 콘솔 에러 (진단) +1. `Loading the stylesheet 'https://fonts.googleapis.com/css?family=Google+Sans+Text:400&text=%E2%86%90%E2%86%92%E2%86%91%E2%86%93&lang=ko' violates the following Content Security Policy directive: "style` +2. `Loading the stylesheet 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Google+Sans:400,500,700|Google+Sans+Text:400,500,700&lang=ko' violates the following Content Security Policy dire` +3. `[GoogleMap] GPS 오류 코드: 3 메시지: Timeout expired` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 437 | +| 테이블 행 | 0 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-management_2026-03-07_20-49-12.md b/Fail-attendance-management_2026-03-07_20-49-12.md new file mode 100644 index 0000000..e4d5552 --- /dev/null +++ b/Fail-attendance-management_2026-03-07_20-49-12.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: 근태관리 테스트 + +**테스트 ID**: attendance-management | **실행**: 2026-03-07_20-49-12 | **결과**: FAIL +**소요 시간**: 27.4초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 10 | 8 | 2 | 0 | 80% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-6 | 근태 등록 모달 열기 | - | Timeout waiting for modal [context: btn:84,input:1,text:found-on-page] | +| step-8 | ⚠️ 필수 검증 #4: 근태 등록 실제 수행 | - | Dropdown trigger not found: 대상 [context: btn:84,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 준비 | - | ✅ | 516ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 인사관리 메뉴 진입 | - | ✅ | 1535ms | Found: 인사관리 / Clicked: 인사관리 / Waited 300ms / Found: 근태관리 / Clicked: 근태관리 | +| step-1-1 | 🗺️ GPS 위치 정보 모킹 | - | ✅ | 506ms | eval_type:object/isPromise:false/val:[object Object] / Waited 500ms | +| step-2 | 근태 현황 대시보드 확인 | - | ✅ | 0ms | No action | +| step-3 | 기간 필터 확인 | - | ✅ | 0ms | No action | +| step-4 | 탭 필터 확인 | - | ✅ | 0ms | No action | +| step-5 | 근태 테이블 구조 확인 | - | ✅ | 0ms | No action | +| step-6 | 근태 등록 모달 열기 | - | ❌ | 16889ms | Timeout waiting for modal [context: btn:84,input:1,text:found-on-page] | +| step-7 | 근태 등록 모달 필드 확인 | - | ✅ | 0ms | No action | +| step-8 | ⚠️ 필수 검증 #4: 근태 등록 실제 수행 | - | ❌ | 1915ms | Dropdown trigger not found: 대상 [context: btn:84,input:1,text:not-on-page] / Elem | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/attendance-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **element_timeout** | +| 스크린샷 | diag_attendance-management_2026-03-07_20-49-12.png | + +### 권장 조치 +1. 요소 대기 타임아웃. 페이지 로드 지연 또는 셀렉터 불일치 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1601 | +| 테이블 행 | 20 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-management_2026-03-07_21-05-20.md b/Fail-attendance-management_2026-03-07_21-05-20.md new file mode 100644 index 0000000..7d637a5 --- /dev/null +++ b/Fail-attendance-management_2026-03-07_21-05-20.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: 근태관리 테스트 + +**테스트 ID**: attendance-management | **실행**: 2026-03-07_21-05-20 | **결과**: FAIL +**소요 시간**: 27.4초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 10 | 8 | 2 | 0 | 80% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-6 | 근태 등록 모달 열기 | - | Timeout waiting for modal [context: btn:84,input:1,text:found-on-page] | +| step-8 | ⚠️ 필수 검증 #4: 근태 등록 실제 수행 | - | Dropdown trigger not found: 대상 [context: btn:84,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 준비 | - | ✅ | 501ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 인사관리 메뉴 진입 | - | ✅ | 1526ms | Found: 인사관리 / Clicked: 인사관리 / Waited 300ms / Found: 근태관리 / Clicked: 근태관리 | +| step-1-1 | 🗺️ GPS 위치 정보 모킹 | - | ✅ | 509ms | eval_type:object/isPromise:false/val:[object Object] / Waited 500ms | +| step-2 | 근태 현황 대시보드 확인 | - | ✅ | 0ms | No action | +| step-3 | 기간 필터 확인 | - | ✅ | 0ms | No action | +| step-4 | 탭 필터 확인 | - | ✅ | 0ms | No action | +| step-5 | 근태 테이블 구조 확인 | - | ✅ | 0ms | No action | +| step-6 | 근태 등록 모달 열기 | - | ❌ | 16889ms | Timeout waiting for modal [context: btn:84,input:1,text:found-on-page] | +| step-7 | 근태 등록 모달 필드 확인 | - | ✅ | 0ms | No action | +| step-8 | ⚠️ 필수 검증 #4: 근태 등록 실제 수행 | - | ❌ | 1918ms | Dropdown trigger not found: 대상 [context: btn:84,input:1,text:not-on-page] / Elem | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/attendance-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **element_timeout** | +| 스크린샷 | diag_attendance-management_2026-03-07_21-05-20.png | + +### 권장 조치 +1. 요소 대기 타임아웃. 페이지 로드 지연 또는 셀렉터 불일치 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1601 | +| 테이블 행 | 20 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-management_2026-03-07_22-31-28.md b/Fail-attendance-management_2026-03-07_22-31-28.md new file mode 100644 index 0000000..27fcea3 --- /dev/null +++ b/Fail-attendance-management_2026-03-07_22-31-28.md @@ -0,0 +1,78 @@ +# ❌ E2E 테스트 실패: 근태관리 테스트 + +**테스트 ID**: attendance-management | **실행**: 2026-03-07_22-31-28 | **결과**: FAIL +**소요 시간**: 30.8초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 25 | 20 | 5 | 0 | 80% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 8 | 모달 열림 대기 | - | Step timeout (>3s): 모달 열림 대기 | +| 9 | 대상 사원 선택 | - | Dropdown option "첫번째 사원" not found [context: btn:97,input:1,text:found-on-page] | +| 15 | 사유 모달 열림 대기 | - | Step timeout (>3s): 사유 모달 열림 대기 | +| 16 | 사유 유형 선택 | - | Dropdown option "출장신청서" not found [context: btn:90,input:1,text:found-on-page] | +| 17 | 사유 대상 사원 선택 | - | Dropdown option "첫번째 사원" not found [context: btn:90,input:1,text:found-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 인사관리 > 근태관리 | - | ✅ | 2508ms | Menu navigation: 인사관리 > 근태관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3002ms | Waited 3000ms | +| 3 | URL 검증 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/hr/attendance-management | +| 4 | GPS 위치 정보 모킹 | - | ✅ | 0ms | json_fail:Unexpected token 'G', "GPS mocking complete" is not valid JSON/raw:GPS | +| 5 | 근태 현황 카드 확인 | - | ✅ | 1ms | Element exists: body | +| 6 | 테이블 로드 대기 | - | ✅ | 0ms | Table loaded: 20 rows | +| 7 | 근태 등록 버튼 클릭 | - | ✅ | 307ms | Clicked button: 근태 등록 | +| 8 | 모달 열림 대기 | - | ❌ | 3001ms | Step timeout (>3s): 모달 열림 대기 | +| 9 | 대상 사원 선택 | - | ❌ | 3050ms | Dropdown option "첫번째 사원" not found [context: btn:97,input:1,text:found-on-page] | +| 10 | 기준일 기본값 확인 | - | ✅ | 1ms | Element exists: [role='dialog'] | +| 11 | 근태 등록 저장 | - | ✅ | 314ms | Clicked button: 저장 | +| 12 | 근태 등록 모달 닫기 확인 | - | ✅ | 0ms | No modal open | +| 13 | 근태 등록 결과 확인 | - | ✅ | 1ms | Element exists: table tbody tr | +| 14 | 사유 등록 버튼 클릭 | - | ✅ | 307ms | Clicked button: 사유 등록 | +| 15 | 사유 모달 열림 대기 | - | ❌ | 3012ms | Step timeout (>3s): 사유 모달 열림 대기 | +| 16 | 사유 유형 선택 | - | ❌ | 3038ms | Dropdown option "출장신청서" not found [context: btn:90,input:1,text:found-on-page] | +| 17 | 사유 대상 사원 선택 | - | ❌ | 3027ms | Dropdown option "첫번째 사원" not found [context: btn:90,input:1,text:found-on-page] | +| 18 | 사유 등록 저장 | - | ✅ | 303ms | Clicked button: 등록 | +| 19 | 사유 등록 모달 닫기 확인 | - | ✅ | 1ms | No modal open | +| 20 | 기간 필터 - 당월 클릭 | - | ✅ | 410ms | Clicked: 당월 | +| 21 | 필터 적용 대기 | - | ✅ | 1001ms | Waited 1000ms | +| 22 | 검색 기능 테스트 | - | ✅ | 207ms | Filled "input[type='search'], input[placeholder*='검색']" with "홍" | +| 23 | 검색 결과 대기 | - | ✅ | 1004ms | Waited 1000ms | +| 24 | 검색 초기화 | - | ✅ | 206ms | Cleared: input[type='search'], input[placeholder*='검색'] | +| 25 | 엑셀 다운로드 버튼 확인 | - | ✅ | 1ms | Element exists: button:has-text('엑셀 다운로드') | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 5 | 5 | 0 | 144ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/attendance-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **element_timeout** | +| 스크린샷 | diag_attendance-management_2026-03-07_22-31-28.png | + +### 권장 조치 +1. 요소 대기 타임아웃. 페이지 로드 지연 또는 셀렉터 불일치 + +### 콘솔 에러 (진단) +1. `Create failed: 사용자은(는) 필수 항목입니다.` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 833 | +| 테이블 행 | 4 | +| API 호출 수 | 5 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-settings_2026-03-07_20-49-34.md b/Fail-attendance-settings_2026-03-07_20-49-34.md new file mode 100644 index 0000000..23444a3 --- /dev/null +++ b/Fail-attendance-settings_2026-03-07_20-49-34.md @@ -0,0 +1,54 @@ +# ❌ E2E 테스트 실패: 설정 - 근태설정 + +**테스트 ID**: attendance-settings | **실행**: 2026-03-07_20-49-34 | **결과**: FAIL +**소요 시간**: 21.5초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 11 | 3 | 1 | 7 | 27% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 10 | GPS 출퇴근 활성화 | - | Element not found: GPS 출퇴근 체크박스 [context: btn:27,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 준비 | - | ✅ | 513ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 설정 > 출퇴근관리 | - | ✅ | 2771ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 출퇴근관리 / Clicked: 출퇴근관리 / Waited | +| 2 | 페이지 제목 확인 | - | ⚠️ | 1518ms | Element not found: heading | +| 3 | 설명 텍스트 확인 | - | ⚠️ | 1520ms | Element not found: description | +| 4 | GPS 출퇴근 카드 확인 | - | ⚠️ | 1522ms | Element not found: card | +| 5 | 자동 출퇴근 카드 확인 | - | ⚠️ | 1506ms | Element not found: card | +| 6 | 저장 버튼 확인 | - | ✅ | 1ms | Element exists: button | +| 7 | 초기 설정 상태 확인 | - | ⚠️ | 1523ms | Element not found: checkboxes | +| 8 | GPS 출퇴근 비활성화 상태 - 연동 부서 비활성화 확인 | - | ⚠️ | 1511ms | Element not found: combobox | +| 9 | GPS 출퇴근 비활성화 상태 - 허용 반경 비활성화 확인 | - | ⚠️ | 1524ms | Element not found: select | +| 10 | GPS 출퇴근 활성화 | - | ❌ | 1511ms | Element not found: GPS 출퇴근 체크박스 [context: btn:27,input:0,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/attendance-settings | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_attendance-settings_2026-03-07_20-49-34.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 386 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-attendance-settings_2026-03-07_21-05-42.md b/Fail-attendance-settings_2026-03-07_21-05-42.md new file mode 100644 index 0000000..d99188e --- /dev/null +++ b/Fail-attendance-settings_2026-03-07_21-05-42.md @@ -0,0 +1,54 @@ +# ❌ E2E 테스트 실패: 설정 - 근태설정 + +**테스트 ID**: attendance-settings | **실행**: 2026-03-07_21-05-42 | **결과**: FAIL +**소요 시간**: 21.4초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 11 | 3 | 1 | 7 | 27% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 10 | GPS 출퇴근 활성화 | - | Element not found: GPS 출퇴근 체크박스 [context: btn:27,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 준비 | - | ✅ | 505ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 설정 > 출퇴근관리 | - | ✅ | 2752ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 출퇴근관리 / Clicked: 출퇴근관리 / Waited | +| 2 | 페이지 제목 확인 | - | ⚠️ | 1514ms | Element not found: heading | +| 3 | 설명 텍스트 확인 | - | ⚠️ | 1521ms | Element not found: description | +| 4 | GPS 출퇴근 카드 확인 | - | ⚠️ | 1519ms | Element not found: card | +| 5 | 자동 출퇴근 카드 확인 | - | ⚠️ | 1513ms | Element not found: card | +| 6 | 저장 버튼 확인 | - | ✅ | 0ms | Element exists: button | +| 7 | 초기 설정 상태 확인 | - | ⚠️ | 1522ms | Element not found: checkboxes | +| 8 | GPS 출퇴근 비활성화 상태 - 연동 부서 비활성화 확인 | - | ⚠️ | 1521ms | Element not found: combobox | +| 9 | GPS 출퇴근 비활성화 상태 - 허용 반경 비활성화 확인 | - | ⚠️ | 1512ms | Element not found: select | +| 10 | GPS 출퇴근 활성화 | - | ❌ | 1518ms | Element not found: GPS 출퇴근 체크박스 [context: btn:27,input:0,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/attendance-settings | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_attendance-settings_2026-03-07_21-05-42.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 386 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-bad-debt-collection_2026-03-07_21-08-02.md b/Fail-bad-debt-collection_2026-03-07_21-08-02.md new file mode 100644 index 0000000..530a84e --- /dev/null +++ b/Fail-bad-debt-collection_2026-03-07_21-08-02.md @@ -0,0 +1,125 @@ +# ❌ E2E 테스트 실패: 대손채권회수 테스트 + +**테스트 ID**: bad-debt-collection | **실행**: 2026-03-07_21-08-02 | **결과**: FAIL +**소요 시간**: 140.4초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 51 | 1 | 32 | 18 | 2% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 2단계 메뉴 진입: 회계관리 > 악성채권추심관리 | - | Element not found: 악성채권추심관리 [context: btn:60,input:1,text:not-on-page] | +| step-3 | 필터 및 검색 기능 테스트 | - | Select not found: 상태 필터 [context: btn:60,input:1,text:not-on-page] | +| step-5 | 첫 번째 행 체크박스 선택 | - | Element not found: 첫 번째 행 체크박스 [context: btn:60,input:1,text:not-on-page] | +| step-7 | 수정 버튼 클릭 | - | Element not found: 수정 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-11 | 기본 정보 섹션 - 거래처명 입력 | - | Input not found: 거래처명 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 거래처명 입력 필드 | +| step-12 | 기본 정보 섹션 - 대표자명 입력 | - | Input not found: 대표자명 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 대표자명 입력 필드 | +| step-13 | 기본 정보 섹션 - 악성채권 등록 토글 | - | Element not found: 악성채권 등록 Switch [context: btn:60,input:1,text:not-on-page] | +| step-14 | 기본 정보 섹션 - 업태/업종 입력 | - | Input not found: 업태 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 업태 입력 필드 [con | +| step-15 | 연락처 정보 섹션 - 우편번호 찾기 버튼 | - | Element not found: 우편번호 찾기 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-16 | 연락처 정보 섹션 - 주소 입력 | - | Input not found: 상세주소 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 상세주소 입력 필드 | +| step-17 | 연락처 정보 섹션 - 전화번호 입력 | - | Input not found: 전화번호 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 전화번호 입력 필드 | +| step-18 | 연락처 정보 섹션 - 모바일 입력 | - | Input not found: 모바일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 모바일 입력 필드 [c | +| step-19 | 연락처 정보 섹션 - 팩스 입력 | - | Input not found: 팩스 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 팩스 입력 필드 [con | +| step-20 | 연락처 정보 섹션 - 이메일 입력 | - | Input not found: 이메일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 이메일 입력 필드 [c | +| step-21 | 담당자 정보 섹션 - 담당자명 입력 | - | Input not found: 담당자명 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 담당자명 입력 필드 | +| step-22 | 담당자 정보 섹션 - 담당자 전화 입력 | - | Input not found: 담당자 전화 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 담당자 전화 입력 | +| step-26 | 악성 채권 정보 섹션 - 미수금 입력 | - | Input not found: 미수금 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 미수금 입력 필드 [c | +| step-27 | 악성 채권 정보 섹션 - 상태 선택 | - | Element not found: 상태 드롭다운 [context: btn:60,input:1,text:not-on-page]; Select not found: 상태 옵션 [cont | +| step-28 | 악성 채권 정보 섹션 - 연체일수 입력 | - | Input not found: 연체일수 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 연체일수 입력 필드 | +| step-29 | 악성 채권 정보 섹션 - 본사 담당자 선택 | - | Element not found: 본사 담당자 드롭다운 [context: btn:60,input:1,text:not-on-page]; Select not found: 담당자 옵션 | +| step-30 | 악성 채권 정보 섹션 - 악성채권 발생일 입력 | - | Input not found: 악성채권 발생일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 악성채권 발생 | +| step-31 | 악성 채권 정보 섹션 - 악성채권 종료일 입력 | - | Input not found: 악성채권 종료일 입력 필드 [context: btn:60,input:1,text:not-on-page]; Input not found: 악성채권 종료 | +| step-33 | 이동 버튼 - 수취 어음 현황 클릭 | - | Element not found: 수취 어음 현황 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-36 | 이동 버튼 - 거래처 미수금 현황 클릭 | - | Element not found: 거래처 미수금 현황 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-40 | 메모 섹션 - 메모 입력 | - | Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page]; Input not found: 메모 입력 T | +| step-41 | 메모 섹션 - 메모 추가 버튼 클릭 | - | Element not found: 메모 추가 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-43 | 메모 섹션 - 추가 메모 입력 | - | Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page]; Input not found: 메모 입력 T | +| step-45 | 메모 섹션 - 메모 삭제 | - | Element not found: 첫 번째 메모 삭제 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-46 | 저장 버튼 클릭 | - | Element not found: 저장 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-47 | 저장 확인 다이얼로그 - 취소 버튼 | - | Element not found: 다이얼로그 취소 버튼 [context: btn:60,input:1,text:not-on-page] | +| step-48 | 저장 버튼 재클릭 및 확인 | - | Element not found: 저장 버튼 [context: btn:60,input:1,text:not-on-page]; Element not found: 다이얼로그 저장 버튼 | +| step-50 | 목록으로 돌아가기 | - | Element not found: 뒤로가기 버튼 [context: btn:60,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 514ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 2단계 메뉴 진입: 회계관리 > 악성채권추심관리 | - | ❌ | 10488ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / scrollAndFind: "악성채권추심관리" not found | +| step-2 | 페이지 구조 확인 | - | ⚠️ | 1513ms | Element not found: 페이지 구조 | +| step-3 | 필터 및 검색 기능 테스트 | - | ❌ | 4031ms | Select not found: 상태 필터 [context: btn:60,input:1,text:not-on-page] / Waited 1000 | +| step-4 | 체크박스 선택 전 작업 버튼 확인 | - | ⚠️ | 1514ms | Element not found: 작업 컬럼 | +| step-5 | 첫 번째 행 체크박스 선택 | - | ❌ | 2529ms | Element not found: 첫 번째 행 체크박스 [context: btn:60,input:1,text:not-on-page] / Wait | +| step-6 | 수정 버튼 표시 확인 | - | ⚠️ | 1504ms | Element not found: 작업 컬럼 버튼 | +| step-7 | 수정 버튼 클릭 | - | ❌ | 2544ms | Element not found: 수정 버튼 [context: btn:60,input:1,text:not-on-page] / Waited 100 | +| step-8 | 수정 페이지 구조 확인 | - | ⚠️ | 1509ms | Element not found: 페이지 섹션 및 버튼 | +| step-9 | 기본 정보 섹션 - 사업자등록번호 (읽기전용) | - | ⚠️ | 1534ms | Element not found: 사업자등록번호 필드 | +| step-10 | 기본 정보 섹션 - 거래처 코드 (읽기전용) | - | ⚠️ | 1521ms | Element not found: 거래처 코드 필드 | +| step-11 | 기본 정보 섹션 - 거래처명 입력 | - | ❌ | 3036ms | Input not found: 거래처명 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input n | +| step-12 | 기본 정보 섹션 - 대표자명 입력 | - | ❌ | 3029ms | Input not found: 대표자명 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input n | +| step-13 | 기본 정보 섹션 - 악성채권 등록 토글 | - | ❌ | 2523ms | Element not found: 악성채권 등록 Switch [context: btn:60,input:1,text:not-on-page] / W | +| step-14 | 기본 정보 섹션 - 업태/업종 입력 | - | ❌ | 6056ms | Input not found: 업태 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input not | +| step-15 | 연락처 정보 섹션 - 우편번호 찾기 버튼 | - | ❌ | 2519ms | Element not found: 우편번호 찾기 버튼 [context: btn:60,input:1,text:not-on-page] / Waite | +| step-16 | 연락처 정보 섹션 - 주소 입력 | - | ❌ | 3029ms | Unknown action type: escape / Input not found: 상세주소 입력 필드 [context: btn:60,input | +| step-17 | 연락처 정보 섹션 - 전화번호 입력 | - | ❌ | 3010ms | Input not found: 전화번호 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input n | +| step-18 | 연락처 정보 섹션 - 모바일 입력 | - | ❌ | 3017ms | Input not found: 모바일 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input no | +| step-19 | 연락처 정보 섹션 - 팩스 입력 | - | ❌ | 3027ms | Input not found: 팩스 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input not | +| step-20 | 연락처 정보 섹션 - 이메일 입력 | - | ❌ | 3031ms | Input not found: 이메일 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input no | +| step-21 | 담당자 정보 섹션 - 담당자명 입력 | - | ❌ | 3035ms | Input not found: 담당자명 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input n | +| step-22 | 담당자 정보 섹션 - 담당자 전화 입력 | - | ❌ | 3031ms | Input not found: 담당자 전화 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input | +| step-23 | 필요 서류 섹션 - 사업자등록증 업로드 확인 | - | ⚠️ | 1513ms | Element not found: 사업자등록증 파일 입력 | +| step-24 | 필요 서류 섹션 - 세금계산서 업로드 확인 | - | ⚠️ | 1521ms | Element not found: 세금계산서 파일 입력 | +| step-25 | 필요 서류 섹션 - 추가 서류 추가 버튼 확인 | - | ⚠️ | 1516ms | Element not found: 추가 서류 추가 버튼 | +| step-26 | 악성 채권 정보 섹션 - 미수금 입력 | - | ❌ | 3028ms | Input not found: 미수금 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input no | +| step-27 | 악성 채권 정보 섹션 - 상태 선택 | - | ❌ | 3043ms | Element not found: 상태 드롭다운 [context: btn:60,input:1,text:not-on-page] / Select n | +| step-28 | 악성 채권 정보 섹션 - 연체일수 입력 | - | ❌ | 3036ms | Input not found: 연체일수 입력 필드 [context: btn:60,input:1,text:not-on-page] / Input n | +| step-29 | 악성 채권 정보 섹션 - 본사 담당자 선택 | - | ❌ | 3031ms | Element not found: 본사 담당자 드롭다운 [context: btn:60,input:1,text:not-on-page] / Sele | +| step-30 | 악성 채권 정보 섹션 - 악성채권 발생일 입력 | - | ❌ | 3023ms | Input not found: 악성채권 발생일 입력 필드 [context: btn:60,input:1,text:not-on-page] / Inp | +| step-31 | 악성 채권 정보 섹션 - 악성채권 종료일 입력 | - | ❌ | 3024ms | Input not found: 악성채권 종료일 입력 필드 [context: btn:60,input:1,text:not-on-page] / Inp | +| step-32 | 이동 버튼 - 수취 어음 현황 버튼 확인 | - | ⚠️ | 1531ms | Element not found: 수취 어음 현황 버튼 | +| step-33 | 이동 버튼 - 수취 어음 현황 클릭 | - | ❌ | 2535ms | Element not found: 수취 어음 현황 버튼 [context: btn:60,input:1,text:not-on-page] / Wait | +| step-34 | 이동 후 뒤로가기 (수취 어음 현황 → 대손채권회수 수정) | - | ⚠️ | 1003ms | Unknown action type: back / Waited 1000ms | +| step-35 | 이동 버튼 - 거래처 미수금 현황 버튼 확인 | - | ⚠️ | 1515ms | Element not found: 거래처 미수금 현황 버튼 | +| step-36 | 이동 버튼 - 거래처 미수금 현황 클릭 | - | ❌ | 2520ms | Element not found: 거래처 미수금 현황 버튼 [context: btn:60,input:1,text:not-on-page] / Wa | +| step-37 | 이동 후 뒤로가기 (거래처 미수금 현황 → 대손채권회수 수정) | - | ⚠️ | 1007ms | Unknown action type: back / Waited 1000ms | +| step-38 | 메모 섹션 - 메모 입력 필드 확인 | - | ⚠️ | 1517ms | Element not found: 메모 입력 Textarea | +| step-39 | 메모 섹션 - 메모 추가 버튼 확인 | - | ⚠️ | 1511ms | Element not found: 메모 추가 버튼 | +| step-40 | 메모 섹션 - 메모 입력 | - | ❌ | 3051ms | Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page] / Inp | +| step-41 | 메모 섹션 - 메모 추가 버튼 클릭 | - | ❌ | 2525ms | Element not found: 메모 추가 버튼 [context: btn:60,input:1,text:not-on-page] / Waited | +| step-42 | 메모 섹션 - 추가된 메모 확인 | - | ⚠️ | 1536ms | Element not found: 메모 리스트 | +| step-43 | 메모 섹션 - 추가 메모 입력 | - | ❌ | 5582ms | Input not found: 메모 입력 Textarea [context: btn:60,input:1,text:not-on-page] / Inp | +| step-44 | 메모 섹션 - 메모 삭제 버튼 확인 | - | ⚠️ | 1508ms | Element not found: 메모 삭제 버튼 | +| step-45 | 메모 섹션 - 메모 삭제 | - | ❌ | 2519ms | Element not found: 첫 번째 메모 삭제 버튼 [context: btn:60,input:1,text:not-on-page] / Wa | +| step-46 | 저장 버튼 클릭 | - | ❌ | 2535ms | Element not found: 저장 버튼 [context: btn:60,input:1,text:not-on-page] / Waited 100 | +| step-47 | 저장 확인 다이얼로그 - 취소 버튼 | - | ❌ | 2534ms | Element not found: 다이얼로그 취소 버튼 [context: btn:60,input:1,text:not-on-page] / Wait | +| step-48 | 저장 버튼 재클릭 및 확인 | - | ❌ | 5057ms | Element not found: 저장 버튼 [context: btn:60,input:1,text:not-on-page] / Waited 100 | +| step-49 | 상세 페이지 확인 | - | ⚠️ | 1514ms | Element not found: 페이지 모드 및 버튼 | +| step-50 | 목록으로 돌아가기 | - | ❌ | 2526ms | Element not found: 뒤로가기 버튼 [context: btn:60,input:1,text:not-on-page] / Waited 1 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 8 | 8 | 0 | 104ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/bad-debt-collection | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_bad-debt-collection_2026-03-07_21-08-02.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 800 | +| 테이블 행 | 5 | +| API 호출 수 | 8 | +| 로딩 스피너 | No | diff --git a/Fail-bank-account-management_2026-03-07_21-08-40.md b/Fail-bank-account-management_2026-03-07_21-08-40.md new file mode 100644 index 0000000..acc64cd --- /dev/null +++ b/Fail-bank-account-management_2026-03-07_21-08-40.md @@ -0,0 +1,65 @@ +# ❌ E2E 테스트 실패: 계좌관리 테스트 + +**테스트 ID**: bank-account-management | **실행**: 2026-03-07_21-08-40 | **결과**: FAIL +**소요 시간**: 38.1초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 14 | 8 | 6 | 0 | 57% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 설정 메뉴 진입 | - | Element not found: 계좌관리 [context: btn:34,input:1,text:not-on-page] | +| step-3 | 필수 검증 #2: 계좌 등록 모달 열기 | - | Timeout waiting for modal [context: btn:34,input:1,text:found-on-page] | +| step-4 | 계좌 등록 폼 입력 | - | Dropdown option "{testData.bankAccount.bank}" not found [context: btn:34,input:1,text:found-on-page] | +| step-7 | 계좌 상세 열기 | - | Row with "undefined" not found | +| step-8 | 계좌 정보 수정 | - | Element not found: 수정 [context: btn:29,input:7,text:not-on-page] | +| step-10 | 계좌 삭제 준비 | - | Row with "undefined" not found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 501ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 설정 메뉴 진입 | - | ❌ | 2652ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Element not found: 계좌관리 [context: btn:3 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #2: 계좌 등록 모달 열기 | - | ❌ | 16953ms | Timeout waiting for modal [context: btn:34,input:1,text:found-on-page] | +| step-4 | 계좌 등록 폼 입력 | - | ❌ | 4955ms | Dropdown option "{testData.bankAccount.bank}" not found [context: btn:34,input:1 | +| step-5 | 필수 검증 #2: 계좌 등록 저장 | - | ✅ | 412ms | Clicked: 등록 | +| step-6 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-7 | 계좌 상세 열기 | - | ❌ | 1521ms | Row with "undefined" not found | +| step-8 | 계좌 정보 수정 | - | ❌ | 2634ms | Element not found: 수정 [context: btn:29,input:7,text:not-on-page] / Waited 300ms | +| step-9 | 필수 검증 #4: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-10 | 계좌 삭제 준비 | - | ❌ | 1520ms | Row with "undefined" not found | +| step-11 | 계좌 삭제 | - | ✅ | 421ms | Clicked: 삭제 | +| step-12 | 삭제 확인 | - | ✅ | 411ms | Clicked: 확인 | +| step-13 | 필수 검증 #4: 삭제 데이터 반영 확인 | - | ✅ | 1ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 3 | 3 | 0 | 82ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/accounts | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_bank-account-management_2026-03-07_21-08-40.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 452 | +| 테이블 행 | 0 | +| API 호출 수 | 3 | +| 로딩 스피너 | No | diff --git a/Fail-bank-transactions_2026-03-07_21-08-54.md b/Fail-bank-transactions_2026-03-07_21-08-54.md new file mode 100644 index 0000000..0303816 --- /dev/null +++ b/Fail-bank-transactions_2026-03-07_21-08-54.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 은행거래 테스트 + +**테스트 ID**: bank-transactions | **실행**: 2026-03-07_21-08-54 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 회계관리 > 입출금계좌조회 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-bill-management_2026-03-07_21-09-14.md b/Fail-bill-management_2026-03-07_21-09-14.md new file mode 100644 index 0000000..e61fad4 --- /dev/null +++ b/Fail-bill-management_2026-03-07_21-09-14.md @@ -0,0 +1,61 @@ +# ❌ E2E 테스트 실패: 어음관리 테스트 + +**테스트 ID**: bill-management | **실행**: 2026-03-07_21-09-14 | **결과**: FAIL +**소요 시간**: 20.4초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 14 | 12 | 2 | 0 | 86% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-7 | 필수 검증 #2: 어음 등록 모달/페이지 열기 | - | Element not found: 어음 등록 [context: btn:74,input:5,text:not-on-page] | +| step-8 | 어음 등록 폼 입력 | - | Element not found: {testData.bill.vendor} [context: btn:120,input:1]; Input not found: 금액 [context: | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 504ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 회계관리 메뉴 진입 | - | ✅ | 1751ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / Found: 어음관리 / Clicked: 어음관리 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 날짜 필터 테스트 | - | ✅ | 918ms | Clicked: 당월 / Waited 500ms | +| step-4 | 필수 검증 #3: 구분 탭 필터 - 수취 | - | ✅ | 718ms | Clicked: 수취 / Waited 300ms | +| step-5 | 필수 검증 #3: 구분 탭 필터 - 발행 | - | ✅ | 735ms | Clicked: 발행 / Waited 300ms | +| step-6 | 수취 탭으로 복귀 | - | ✅ | 722ms | Clicked: 수취 / Waited 300ms | +| step-7 | 필수 검증 #2: 어음 등록 모달/페이지 열기 | - | ❌ | 1529ms | Element not found: 어음 등록 [context: btn:74,input:5,text:not-on-page] | +| step-8 | 어음 등록 폼 입력 | - | ❌ | 6488ms | Clicked: 거래처 / Element not found: {testData.bill.vendor} [context: btn:120,input | +| step-9 | 필수 검증 #2: 어음 등록 저장 | - | ✅ | 412ms | Clicked: 저장 | +| step-10 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-11 | 어음 상세 열기 | - | ✅ | 2ms | eval_type:undefined/isPromise:false/val:undefined | +| step-12 | 어음 상세 정보 확인 | - | ✅ | 0ms | No action | +| step-13 | 상세 닫기 | - | ✅ | 508ms | Pressed key: Escape / Waited 300ms | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 8 | 8 | 0 | 55ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/bills | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_bill-management_2026-03-07_21-09-14.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 708 | +| 테이블 행 | 0 | +| API 호출 수 | 8 | +| 로딩 스피너 | No | diff --git a/Fail-board-management_2026-03-07_21-09-30.md b/Fail-board-management_2026-03-07_21-09-30.md new file mode 100644 index 0000000..a626c07 --- /dev/null +++ b/Fail-board-management_2026-03-07_21-09-30.md @@ -0,0 +1,52 @@ +# ❌ E2E 테스트 실패: undefined + +**테스트 ID**: board-management | **실행**: 2026-03-07_21-09-30 | **결과**: FAIL +**소요 시간**: 16.3초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 8 | 2 | 2 | 4 | 25% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 1 | 2단계 메뉴 진입: 게시판 > 게시판관리 | - | Element not found: 게시판 관리 [context: btn:39,input:1,text:not-on-page] | +| 7 | ⚠️ 필수 검증: 검색 기능 테스트 - 게시판명 | - | Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 초기화 | - | ✅ | 504ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 게시판 > 게시판관리 | - | ❌ | 7196ms | Found: 게시판 / Clicked: 게시판 / Waited 500ms / scrollAndFind: "게시판 관리" not found aft | +| 2 | 초기 데이터 로드 확인 | - | ✅ | 1ms | Data found: "" | +| 3 | 통계 카드 검증 | - | ⚠️ | 0ms | Unknown action type: verify_stats | +| 4 | 사용 탭 전환 | - | ⚠️ | 0ms | Unknown action type: click_tab | +| 5 | 미사용 탭 전환 | - | ⚠️ | 0ms | Unknown action type: click_tab | +| 6 | 전체 탭으로 복귀 | - | ⚠️ | 0ms | Unknown action type: click_tab | +| 7 | ⚠️ 필수 검증: 검색 기능 테스트 - 게시판명 | - | ❌ | 2534ms | Captured count: 3 / Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not- | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/board/board-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_board-management_2026-03-07_21-09-30.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 573 | +| 테이블 행 | 3 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-board-test_2026-03-07_21-10-08.md b/Fail-board-test_2026-03-07_21-10-08.md new file mode 100644 index 0000000..307165f --- /dev/null +++ b/Fail-board-test_2026-03-07_21-10-08.md @@ -0,0 +1,125 @@ +# ❌ E2E 테스트 실패: 게시판 테스트 E2E 테스트 + +**테스트 ID**: board-test | **실행**: 2026-03-07_21-10-08 | **결과**: FAIL +**소요 시간**: 37.9초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 78 | 56 | 5 | 17 | 72% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 12 | 상태 필터 클릭 테스트 | - | Element not found: [role='combobox']:first [context: btn:69,input:1] | +| 42 | 댓글 내용 수정 | - | Input not found: textarea:first [context: btn:30,input:2] | +| 62 | 게시글 클릭하여 상세 페이지 재진입 | - | Element not found: row:has-text('E2E 테스트 게시글 (수정됨)') [context: btn:75,input:1,text:not-on-page] | +| 63 | 삭제 버튼 클릭 | - | Element not found: button:has-text('삭제'):first [context: btn:75,input:1,text:not-on-page] | +| 65 | 삭제 확인 버튼 클릭 | - | Element not found: button:has-text('삭제'):last [context: btn:75,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 준비 | - | ✅ | 510ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 게시판 > 게시판 테스트 | - | ✅ | 2724ms | Found: 게시판 / Clicked: 게시판 / Waited 500ms / Found: 게시판 테스트 / Clicked: 게시판 테스트 / W | +| 2 | 초기 게시글 목록 확인 | - | ✅ | 0ms | Table: 7 cols, 10 rows | +| 3 | 게시글 총 건수 확인 | - | ✅ | 1ms | Text pattern found: 총 \d+건 | +| 4 | 검색창 존재 확인 | - | ✅ | 0ms | Element exists: input[placeholder*='제목'] | +| 5 | 상태 필터 드롭다운 확인 | - | ✅ | 0ms | Count 2 >= 2: [role='combobox'] | +| 6 | 정렬 필터 드롭다운 확인 | - | ✅ | 1ms | Element exists: [role='combobox']:has-text('최신순') | +| 7 | 날짜 범위 선택 버튼 확인 | - | ✅ | 0ms | No checks defined | +| 8 | 글쓰기 버튼 확인 | - | ✅ | 0ms | Element exists: button:has-text('글쓰기') | +| 9 | 테이블 체크박스 확인 | - | ⚠️ | 1517ms | Element not found: table th checkbox | +| 10 | 테이블 컬럼 헤더 확인 | - | ⚠️ | 0ms | Unknown action type: verify_table_headers | +| 11 | 초기 게시글 수 저장 | - | ⚠️ | 0ms | Unknown action type: store_value | +| 12 | 상태 필터 클릭 테스트 | - | ❌ | 1515ms | Element not found: [role='combobox']:first [context: btn:69,input:1] | +| 13 | 상태 필터 옵션 확인 | - | ⚠️ | 0ms | Unknown action type: verify_dropdown_options | +| 14 | 상태 필터 닫기 (ESC) | - | ✅ | 202ms | Pressed key: Escape | +| 15 | 글쓰기 버튼 클릭 | - | ✅ | 417ms | Clicked: button:has-text('글쓰기') | +| 16 | 글쓰기 페이지 URL 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg?mode=new | +| 17 | 작성 폼 구조 확인 | - | ⚠️ | 0ms | Unknown action type: verify_form_structure | +| 18 | 제목 입력 필드 확인 | - | ✅ | 0ms | Element exists: #title | +| 19 | 내용 입력 필드 확인 | - | ✅ | 0ms | Element exists: #content | +| 20 | 제목 입력 | - | ✅ | 207ms | Filled "#title" with "E2E 테스트 게시글" | +| 21 | 내용 입력 | - | ✅ | 232ms | Filled "#content" with "E2E 자동화 테스트를 위한 게시글입니다." | +| 22 | 등록 버튼 클릭 | - | ✅ | 404ms | Clicked: button:has-text('등록') | +| 23 | 페이지 이동 대기 (1초) | - | ✅ | 1002ms | Waited 1000ms | +| 24 | URL 안정성 검증 - 게시글 상세 페이지로 정상 이동 | - | ✅ | 2016ms | URL stable: https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg/540?mode=vie | +| 25 | 게시글 제목 표시 확인 | - | ✅ | 0ms | No text to verify | +| 26 | 게시글 내용 표시 확인 | - | ⚠️ | 0ms | Unknown action type: verify_content | +| 27 | 작성자 정보 확인 | - | ✅ | 0ms | No text to verify | +| 28 | 등록일 표시 확인 | - | ⚠️ | 1521ms | Element not found: text*='2026-01' | +| 29 | 조회수 확인 | - | ✅ | 0ms | Text pattern found: \d+ | +| 30 | 수정 버튼 존재 확인 (작성자) | - | ✅ | 0ms | Element exists: button:has-text('수정') | +| 31 | 삭제 버튼 존재 확인 (작성자) | - | ✅ | 0ms | Element exists: button:has-text('삭제') | +| 32 | 목록으로 버튼 존재 확인 | - | ✅ | 1ms | Element exists: button:has-text('목록으로') | +| 33 | 댓글 섹션 확인 | - | ✅ | 0ms | Element exists: h4:has-text('댓글') | +| 34 | 초기 댓글 수 확인 | - | ✅ | 0ms | No text to verify | +| 35 | 첫 번째 댓글 입력 | - | ✅ | 207ms | Filled "textarea[placeholder*='댓글']" with "첫 번째 테스트 댓글입니다." | +| 36 | 댓글 등록 버튼 클릭 | - | ✅ | 417ms | Clicked: button:has-text('댓글 등록') | +| 37 | 댓글 수 업데이트 확인 (0 → 1) | - | ✅ | 0ms | No text to verify | +| 38 | 두 번째 댓글 입력 | - | ✅ | 202ms | Filled "textarea[placeholder*='댓글']" with "두 번째 테스트 댓글입니다." | +| 39 | 두 번째 댓글 등록 및 댓글 수 확인 (1 → 2) | - | ⚠️ | 0ms | Unknown action type: click_and_verify | +| 40 | 첫 번째 댓글 수정 버튼 클릭 | - | ✅ | 407ms | Clicked: button:has-text('수정'):first | +| 41 | 댓글 수정 폼 표시 확인 | - | ✅ | 0ms | Element exists: textarea | +| 42 | 댓글 내용 수정 | - | ❌ | 1521ms | Input not found: textarea:first [context: btn:30,input:2] | +| 43 | 댓글 저장 버튼 클릭 | - | ✅ | 424ms | Clicked: button:has-text('저장') | +| 44 | 수정된 댓글 내용 확인 | - | ✅ | 0ms | No text to verify | +| 45 | 두 번째 댓글 삭제 버튼 클릭 | - | ✅ | 917ms | [retry 1] Clicked: button:has-text('삭제'):nth(1) | +| 46 | 댓글 삭제 대기 (1초) | - | ✅ | 1007ms | Waited 1000ms | +| 47 | 댓글 수 업데이트 확인 (2 → 1) | - | ✅ | 0ms | No text to verify | +| 48 | 수정 버튼 클릭 | - | ✅ | 410ms | Clicked: button:has-text('수정'):first | +| 49 | 수정 페이지 URL 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg/540?mode=e | +| 50 | 수정 폼 기존 데이터 로드 확인 (제목) | - | ✅ | 1ms | Input value: "E2E 테스트 게시글" | +| 51 | 수정 폼 기존 데이터 로드 확인 (내용) | - | ⚠️ | 0ms | Unknown action type: verify_textarea_value | +| 52 | 제목 수정 | - | ✅ | 203ms | Filled "#title" with "E2E 테스트 게시글 (수정됨)" | +| 53 | 내용 수정 | - | ✅ | 219ms | Filled "#content" with "수정된 내용입니다. E2E 자동화 테스트를 위한 게시글" | +| 54 | 비밀글 체크박스 선택 | - | ✅ | 208ms | Checked: #isSecret | +| 55 | 저장 버튼 클릭 | - | ✅ | 416ms | Clicked: button:has-text('저장') | +| 56 | URL 안정성 검증 - 상세 페이지로 정상 이동 | - | ✅ | 2000ms | URL stable: https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg/540?mode=vie | +| 57 | 수정된 제목 표시 확인 | - | ✅ | 0ms | No text to verify | +| 58 | 수정된 내용 표시 확인 | - | ⚠️ | 0ms | Unknown action type: verify_content | +| 59 | 목록으로 버튼 클릭 | - | ✅ | 424ms | Clicked: button:has-text('목록으로') | +| 60 | 목록 페이지 URL 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg | +| 61 | 목록에서 수정된 게시글 확인 | - | ⚠️ | 0ms | Unknown action type: verify_table_row | +| 62 | 게시글 클릭하여 상세 페이지 재진입 | - | ❌ | 1517ms | Element not found: row:has-text('E2E 테스트 게시글 (수정됨)') [context: btn:75,input:1,te | +| 63 | 삭제 버튼 클릭 | - | ❌ | 1511ms | Element not found: button:has-text('삭제'):first [context: btn:75,input:1,text:not | +| 64 | 삭제 확인 다이얼로그 표시 확인 | - | ⚠️ | 1509ms | No dialog found | +| 65 | 삭제 확인 버튼 클릭 | - | ❌ | 1512ms | Element not found: button:has-text('삭제'):last [context: btn:75,input:1,text:not- | +| 66 | 페이지 이동 대기 (1초) | - | ✅ | 1007ms | Waited 1000ms | +| 67 | URL 안정성 검증 - 목록 페이지로 정상 이동 | - | ✅ | 2002ms | URL stable: https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg | +| 68 | 게시글 삭제 확인 (목록에서 제거됨) | - | ⚠️ | 0ms | Unknown action type: verify_table_not_contains | +| 69 | 게시글 수 감소 확인 | - | ⚠️ | 0ms | Unknown action type: verify_count_decreased | +| 70 | 테이블 구조 유지 확인 | - | ✅ | 0ms | Table: 7 cols, 10 rows | +| 71 | 검색창 기능 유지 확인 | - | ✅ | 1ms | Element exists: input[placeholder*='제목'] | +| 72 | 페이지네이션 확인 (조건부) | - | ✅ | 0ms | No checks defined | +| 73 | 전체 선택 체크박스 확인 | - | ⚠️ | 1504ms | Element not found: table th checkbox | +| 74 | 글쓰기 버튼 확인 | - | ✅ | 0ms | Element exists: button:has-text('글쓰기') | +| 75 | 필터 드롭다운 확인 | - | ✅ | 0ms | Count 2 >= 2: [role='combobox'] | +| 76 | 콘솔 에러 확인 | - | ⚠️ | 0ms | Unknown action type: check_console_errors | +| 77 | 테스트 완료 확인 | - | ⚠️ | 0ms | Unknown action type: verify_test_completion | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 35 | 35 | 0 | 50ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/boards/board_mjsgri54_1fmg | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_board-test_2026-03-07_21-10-08.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 912 | +| 테이블 행 | 10 | +| API 호출 수 | 35 | +| 로딩 스피너 | No | diff --git a/Fail-card-add_2026-03-07_21-10-22.md b/Fail-card-add_2026-03-07_21-10-22.md new file mode 100644 index 0000000..24f9542 --- /dev/null +++ b/Fail-card-add_2026-03-07_21-10-22.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 카드 등록 테스트 (랜덤 데이터) + +**테스트 ID**: card-add | **실행**: 2026-03-07_21-10-22 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 인사관리 > 카드관리 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-card-transactions_2026-03-07_21-10-35.md b/Fail-card-transactions_2026-03-07_21-10-35.md new file mode 100644 index 0000000..41229b0 --- /dev/null +++ b/Fail-card-transactions_2026-03-07_21-10-35.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 카드거래 테스트 + +**테스트 ID**: card-transactions | **실행**: 2026-03-07_21-10-35 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 회계관리 > 카드내역조회 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-company-info_2026-03-07_21-11-32.md b/Fail-company-info_2026-03-07_21-11-32.md new file mode 100644 index 0000000..f879173 --- /dev/null +++ b/Fail-company-info_2026-03-07_21-11-32.md @@ -0,0 +1,80 @@ +# ❌ E2E 테스트 실패: 설정 - 회사정보 + +**테스트 ID**: company-info | **실행**: 2026-03-07_21-11-32 | **결과**: FAIL +**소요 시간**: 56.5초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 30 | 8 | 5 | 13 | 27% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 15 | 수정 버튼 클릭 | - | Element not found: button[text='수정'] [context: btn:55,input:15,text:found-on-page] | +| 17 | 취소 버튼 클릭 | - | Element not found: button[text='취소'] [context: btn:55,input:15,text:not-on-page] | +| 18 | 회사 추가 버튼 클릭 | - | Element not found: button[text='회사 추가'] [context: btn:55,input:15,text:found-on-page] | +| 20 | 다이얼로그 닫기 | - | Element not found: dialog button[text='취소'] [context: btn:55,input:15,text:not-on-page] | +| 29 | 원복: 업태 필드 원래 값으로 복구 | - | Element not found: 수정 [context: btn:62,input:15,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7254ms | Requires native screenshot | +| 1 | 1차 메뉴 찾기: 설정 (스크롤 포함) | - | ⚠️ | 1414ms | Requires native screenshot | +| 2 | 2차 메뉴 찾기: 회사정보 (스크롤 포함) | - | ⚠️ | 10829ms | Requires native screenshot | +| 3 | 404 에러 감지 및 대체 경로 시도 | - | ⚠️ | 3014ms | Requires native screenshot | +| 4 | 페이지 정상 로드 확인 | - | ⚠️ | 3031ms | Element not found: pageTitle / Element not found: pageContent | +| 5 | 페이지 제목 확인 | - | ⚠️ | 1520ms | Element not found: heading | +| 6 | 회사 추가 버튼 존재 확인 | - | ⚠️ | 1510ms | Element not found: button[text='회사 추가'] | +| 7 | 수정 버튼 존재 확인 | - | ⚠️ | 1518ms | Element not found: button[text='수정'] | +| 8 | 회사명 필드 확인 | - | ⚠️ | 1517ms | Element not found: textbox[label='회사명'][disabled] | +| 9 | 대표자명 필드 확인 | - | ⚠️ | 1511ms | Element not found: textbox[label='대표자명'][disabled] | +| 10 | 업태 필드 확인 | - | ⚠️ | 1515ms | Element not found: textbox[label='업태'][disabled] | +| 11 | 업종 필드 확인 | - | ⚠️ | 1513ms | Element not found: textbox[label='업종'][disabled] | +| 12 | 주소 필드 확인 | - | ⚠️ | 1523ms | Element not found: textbox[label='주소명'][disabled] | +| 13 | 이메일 필드 확인 | - | ⚠️ | 1519ms | Element not found: textbox[label='이메일 (아이디)'][disabled] | +| 14 | 사업자등록번호 필드 확인 | - | ⚠️ | 1520ms | Element not found: textbox[label='사업자등록번호'][disabled] | +| 15 | 수정 버튼 클릭 | - | ❌ | 1531ms | Element not found: button[text='수정'] [context: btn:55,input:15,text:found-on-pag | +| 16 | 수정 모드 - 필드 활성화 확인 | - | ⚠️ | 1506ms | Element not found: textbox:not([disabled]) | +| 17 | 취소 버튼 클릭 | - | ❌ | 1512ms | Element not found: button[text='취소'] [context: btn:55,input:15,text:not-on-page] | +| 18 | 회사 추가 버튼 클릭 | - | ❌ | 1509ms | Element not found: button[text='회사 추가'] [context: btn:55,input:15,text:found-on- | +| 19 | 회사 추가 다이얼로그 확인 | - | ⚠️ | 1507ms | Element not found: dialog | +| 20 | 다이얼로그 닫기 | - | ❌ | 1512ms | Element not found: dialog button[text='취소'] [context: btn:55,input:15,text:not-o | +| 21 | 수정 모드에서 데이터 변경 테스트 | - | ✅ | 418ms | Clicked: 수정 | +| 22 | 업태 필드 수정 | - | ✅ | 412ms | Cleared: 업태 / Filled "업태" with "테스트업태_수정" | +| 23 | 저장 버튼 클릭 | - | ✅ | 412ms | Clicked: 저장 | +| 24 | ⚠️ 필수 검증: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| 25 | 회사 추가 다이얼로그 열기 | - | ✅ | 417ms | Clicked: 회사 추가 | +| 26 | 새 회사 정보 입력 | - | ✅ | 618ms | Filled "회사명" with "테스트회사_20260307_211128" / Filled "대표자명" with "테스트대표" / Filled | +| 27 | 회사 등록 | - | ✅ | 409ms | Clicked: 등록 | +| 28 | ⚠️ 필수 검증: 회사 등록 반영 확인 | - | ✅ | 0ms | No action | +| 29 | 원복: 업태 필드 원래 값으로 복구 | - | ❌ | 2348ms | Element not found: 수정 [context: btn:62,input:15,text:not-on-page] / Cleared: 업태 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 4 | 4 | 0 | 101ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_company-info_2026-03-07_21-11-32.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 654 | +| 테이블 행 | 0 | +| API 호출 수 | 4 | +| 로딩 스피너 | No | diff --git a/Fail-company-info_2026-03-07_22-38-05.md b/Fail-company-info_2026-03-07_22-38-05.md new file mode 100644 index 0000000..c4f1fff --- /dev/null +++ b/Fail-company-info_2026-03-07_22-38-05.md @@ -0,0 +1,77 @@ +# ❌ E2E 테스트 실패: 설정 - 회사정보 + +**테스트 ID**: company-info | **실행**: 2026-03-07_22-38-05 | **결과**: FAIL +**소요 시간**: 39.6초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 31 | 28 | 1 | 2 | 90% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 20 | 회사 추가 다이얼로그 확인 | - | Timeout waiting for modal | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 사이드바 메뉴 전체 펼치기 | - | ✅ | 2314ms | json_fail:Unexpected token 'm', "menu expanded" is not valid JSON/raw:menu expan | +| 2 | 1차 메뉴 찾기: 설정 | - | ✅ | 2525ms | Menu navigation: 설정 > 회사정보 | +| 3 | 페이지 로드 대기 | - | ✅ | 2001ms | Waited 2000ms | +| 4 | 404 에러 감지 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/company-info | +| 5 | 페이지 정상 로드 확인 | - | ✅ | 1ms | Detail checks: 1/4 | +| 6 | 페이지 제목 확인 | - | ⚠️ | 1519ms | Element not found: heading | +| 7 | 회사 추가 버튼 존재 확인 | - | ✅ | 0ms | Element exists: 회사 추가 | +| 8 | 수정 버튼 존재 확인 | - | ✅ | 0ms | Element exists: 수정 | +| 9 | 회사명 필드 확인 | - | ✅ | 0ms | No text to verify | +| 10 | 대표자명 필드 확인 | - | ✅ | 0ms | No text to verify | +| 11 | 업태 필드 확인 | - | ✅ | 0ms | No text to verify | +| 12 | 업종 필드 확인 | - | ✅ | 0ms | No text to verify | +| 13 | 주소 필드 확인 | - | ✅ | 0ms | No text to verify | +| 14 | 이메일 필드 확인 | - | ✅ | 0ms | No text to verify | +| 15 | 사업자등록번호 필드 확인 | - | ✅ | 0ms | No text to verify | +| 16 | 수정 버튼 클릭 | - | ✅ | 303ms | Clicked (existed): 수정 | +| 17 | 수정 모드 - 필드 활성화 확인 | - | ✅ | 0ms | json_fail:Unexpected token 'e', "enabled: 13 fields" is not valid JSON/raw:enabl | +| 18 | 취소 버튼 클릭 | - | ✅ | 307ms | Clicked (existed): 취소 | +| 19 | 회사 추가 버튼 클릭 | - | ✅ | 312ms | Clicked (existed): 회사 추가 | +| 20 | 회사 추가 다이얼로그 확인 | - | ❌ | 16960ms | Timeout waiting for modal | +| 21 | 다이얼로그 닫기 | - | ✅ | 312ms | Clicked (existed): 취소 | +| 22 | 수정 모드에서 데이터 변경 테스트 | - | ✅ | 305ms | Clicked (existed): 수정 | +| 23 | 업태 필드 수정 | - | ✅ | 217ms | Filled "업태" with "테스트업태_수정" | +| 24 | 저장 버튼 클릭 | - | ✅ | 304ms | Clicked (existed): 저장 | +| 25 | ⚠️ 필수 검증: 수정 데이터 반영 확인 | - | ⚠️ | 1516ms | Detail checks: 0/1 matched | +| 26 | 회사 추가 다이얼로그 열기 | - | ✅ | 312ms | Clicked (existed): 회사 추가 | +| 27 | 새 회사 정보 입력 | - | ✅ | 472ms | fill_form: 3/3 filled | +| 28 | 회사 등록 | - | ✅ | 302ms | Clicked (existed): 등록 | +| 29 | ⚠️ 필수 검증: 회사 등록 반영 확인 | - | ✅ | 1ms | Element exists: body | +| 30 | 원복: 업태 필드 원래 값으로 복구 | - | ✅ | 3529ms | json_fail:Unexpected token 'r', "restored" is not valid JSON/raw:restored | +| 31 | 콘솔 에러 확인 | - | ✅ | 0ms | Element exists: body | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 4 | 4 | 0 | 88ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/company-info | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_company-info_2026-03-07_22-38-05.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 478 | +| 테이블 행 | 0 | +| API 호출 수 | 4 | +| 로딩 스피너 | No | diff --git a/Fail-comprehensive-analysis_2026-03-07_21-11-42.md b/Fail-comprehensive-analysis_2026-03-07_21-11-42.md new file mode 100644 index 0000000..d712400 --- /dev/null +++ b/Fail-comprehensive-analysis_2026-03-07_21-11-42.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 종합분석 테스트 + +**테스트 ID**: comprehensive-analysis | **실행**: 2026-03-07_21-11-42 | **결과**: FAIL +**소요 시간**: 10.5초 | **에러**: Menu navigation failed: 리포트 > 종합분석 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-crud-delete-freeboard_2026-03-07_21-11-56.md b/Fail-crud-delete-freeboard_2026-03-07_21-11-56.md new file mode 100644 index 0000000..f82d175 --- /dev/null +++ b/Fail-crud-delete-freeboard_2026-03-07_21-11-56.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 자유게시판 CRUD 삭제 기능 테스트 + +**테스트 ID**: crud-delete-freeboard | **실행**: 2026-03-07_21-11-56 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 고객센터 > 자유게시판 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-crud-delete-vendor_2026-03-07_21-13-12.md b/Fail-crud-delete-vendor_2026-03-07_21-13-12.md new file mode 100644 index 0000000..2d7e2d7 --- /dev/null +++ b/Fail-crud-delete-vendor_2026-03-07_21-13-12.md @@ -0,0 +1,66 @@ +# ❌ 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 | diff --git a/Fail-crud-delete-vendor_2026-03-07_22-41-14.md b/Fail-crud-delete-vendor_2026-03-07_22-41-14.md new file mode 100644 index 0000000..41074f5 --- /dev/null +++ b/Fail-crud-delete-vendor_2026-03-07_22-41-14.md @@ -0,0 +1,80 @@ +# ❌ E2E 테스트 실패: 거래처 CRUD 삭제 기능 테스트 + +**테스트 ID**: crud-delete-vendor | **실행**: 2026-03-07_22-41-14 | **결과**: FAIL +**소요 시간**: 34.4초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 21 | 7 | 14 | 0 | 33% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 4 | [CREATE] 거래처명 입력 | CREATE | Input not found: input[name*='name'], input[placeholder*='거래처'] [context: btn:35,input:22,text:found | +| 5 | [CREATE] 사업자등록번호 입력 | CREATE | Input not found: input[name*='business'], input[placeholder*='사업자'] [context: btn:35,input:22,text:f | +| 6 | [CREATE] 대표자명 입력 | CREATE | Input not found: input[name*='representative'], input[placeholder*='대표'] [context: btn:35,input:22,t | +| 7 | [CREATE] 거래처 유형 선택 | CREATE | Dropdown trigger not found: 거래처 유형 [context: btn:35,input:22,text:found-on-page] | +| 8 | [CREATE] 전화번호 입력 | CREATE | Input not found: input[name*='phone'], input[placeholder*='전화'] [context: btn:35,input:22,text:found | +| 9 | [CREATE] 이메일 입력 | CREATE | Input not found: input[name*='email'], input[placeholder*='이메일'] [context: btn:35,input:22,text:foun | +| 12 | [CREATE] 등록 결과 확인 - 검색 | CREATE | Input not found: input[type='search'], input[placeholder*='검색'] [context: btn:35,input:22,text:found | +| 14 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | Row with "E2E테스트_삭제용" not found [context: btn:35,input:22,text:not-on-page] | +| 15 | [UPDATE] 수정 모드 진입 | UPDATE | Button "수정" not found [context: btn:35,input:22,text:not-on-page] | +| 16 | [UPDATE] 거래처명 수정 | UPDATE | Input not found: input[name*='name'], input[placeholder*='거래처'] [context: btn:35,input:22,text:found | +| 17 | [UPDATE] 대표자명 수정 | UPDATE | Input not found: input[name*='representative'], input[placeholder*='대표'] [context: btn:35,input:22,t | +| 18 | [UPDATE] 수정 저장 | UPDATE | Button "저장" not found [context: btn:35,input:22,text:not-on-page] | +| 19 | [UPDATE] 저장 확인 다이얼로그 | UPDATE | No dialog found | +| 21 | [DELETE] 삭제 버튼 클릭 | DELETE | Button "삭제" not found [context: btn:35,input:22,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 회계관리 > 거래처관리 | - | ✅ | 2506ms | Menu navigation: 회계관리 > 거래처관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3003ms | Waited 3000ms | +| 3 | [CREATE] 등록 버튼 클릭 | CREATE | ✅ | 306ms | Clicked button: 등록 | +| 4 | [CREATE] 거래처명 입력 | CREATE | ❌ | 1520ms | Input not found: input[name*='name'], input[placeholder*='거래처'] [context: btn:35 | +| 5 | [CREATE] 사업자등록번호 입력 | CREATE | ❌ | 1517ms | Input not found: input[name*='business'], input[placeholder*='사업자'] [context: bt | +| 6 | [CREATE] 대표자명 입력 | CREATE | ❌ | 1521ms | Input not found: input[name*='representative'], input[placeholder*='대표'] [contex | +| 7 | [CREATE] 거래처 유형 선택 | CREATE | ❌ | 1510ms | Dropdown trigger not found: 거래처 유형 [context: btn:35,input:22,text:found-on-page] | +| 8 | [CREATE] 전화번호 입력 | CREATE | ❌ | 1514ms | Input not found: input[name*='phone'], input[placeholder*='전화'] [context: btn:35 | +| 9 | [CREATE] 이메일 입력 | CREATE | ❌ | 1514ms | Input not found: input[name*='email'], input[placeholder*='이메일'] [context: btn:3 | +| 10 | [CREATE] 등록 저장 | CREATE | ✅ | 307ms | Clicked button: 등록 | +| 11 | [CREATE] 모달 닫기 확인 | CREATE | ✅ | 0ms | No modal open | +| 12 | [CREATE] 등록 결과 확인 - 검색 | CREATE | ❌ | 1520ms | Input not found: input[type='search'], input[placeholder*='검색'] [context: btn:35 | +| 13 | [CREATE] 등록 결과 확인 - 테이블 | CREATE | ✅ | 0ms | No text to verify | +| 14 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | ❌ | 1507ms | Row with "E2E테스트_삭제용" not found [context: btn:35,input:22,text:not-on-page] | +| 15 | [UPDATE] 수정 모드 진입 | UPDATE | ❌ | 1520ms | Button "수정" not found [context: btn:35,input:22,text:not-on-page] | +| 16 | [UPDATE] 거래처명 수정 | UPDATE | ❌ | 1515ms | Input not found: input[name*='name'], input[placeholder*='거래처'] [context: btn:35 | +| 17 | [UPDATE] 대표자명 수정 | UPDATE | ❌ | 1522ms | Input not found: input[name*='representative'], input[placeholder*='대표'] [contex | +| 18 | [UPDATE] 수정 저장 | UPDATE | ❌ | 1514ms | Button "저장" not found [context: btn:35,input:22,text:not-on-page] | +| 19 | [UPDATE] 저장 확인 다이얼로그 | UPDATE | ❌ | 2435ms | No dialog found | +| 20 | [UPDATE] 수정 결과 확인 | UPDATE | ✅ | 0ms | No text to verify | +| 21 | [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 1520ms | Button "삭제" not found [context: btn:35,input:22,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 3 | 3 | 0 | 76ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/vendors | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_crud-delete-vendor_2026-03-07_22-41-14.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 525 | +| 테이블 행 | 0 | +| API 호출 수 | 3 | +| 로딩 스피너 | No | diff --git a/Fail-crud-delete-vendor_2026-03-08_08-56-24.md b/Fail-crud-delete-vendor_2026-03-08_08-56-24.md new file mode 100644 index 0000000..3494b47 --- /dev/null +++ b/Fail-crud-delete-vendor_2026-03-08_08-56-24.md @@ -0,0 +1,60 @@ +# ❌ E2E 테스트 실패: 거래처 CRUD 삭제 기능 테스트 + +**테스트 ID**: crud-delete-vendor | **실행**: 2026-03-08_08-56-24 | **결과**: FAIL +**소요 시간**: 20.0초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 16 | 14 | 2 | 0 | 88% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 14 | [UPDATE] 저장 확인 다이얼로그 | UPDATE | No dialog found | +| 16 | [DELETE] 삭제 버튼 클릭 | DELETE | Button "삭제" not found [context: btn:120,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 회계관리 > 거래처관리 | - | ✅ | 2519ms | Menu navigation: 회계관리 > 거래처관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3002ms | Waited 3000ms | +| 3 | [CREATE] 등록 버튼 클릭 | CREATE | ✅ | 312ms | Clicked button: 등록 | +| 4 | [CREATE] 거래처 정보 입력 (fill_form) | CREATE | ✅ | 853ms | fill_form: 5/5 filled | +| 5 | [CREATE] 거래처 유형 선택 | CREATE | ✅ | 518ms | json_fail:Unexpected token 'S', "Selected: 매출" is not valid JSON/raw:Selected: 매 | +| 6 | [CREATE] 등록 저장 | CREATE | ✅ | 320ms | Clicked button: 등록 | +| 7 | [CREATE] 모달 닫기 확인 | CREATE | ✅ | 1ms | No modal open | +| 8 | [CREATE] 등록 결과 확인 - 검색 | CREATE | ✅ | 1002ms | Searched: "E2E테스트_삭제용" | +| 9 | [CREATE] 등록 결과 확인 - 테이블 | CREATE | ✅ | 0ms | No text to verify | +| 10 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | ✅ | 503ms | Clicked row: E2E테스트_삭제용 | +| 11 | [UPDATE] 수정 모드 진입 | UPDATE | ✅ | 317ms | Clicked button: 수정 | +| 12 | [UPDATE] 거래처 정보 수정 (fill_form) | UPDATE | ✅ | 314ms | fill_form: 2/2 filled | +| 13 | [UPDATE] 수정 저장 | UPDATE | ✅ | 310ms | Clicked button: 저장 | +| 14 | [UPDATE] 저장 확인 다이얼로그 | UPDATE | ❌ | 2424ms | No dialog found | +| 15 | [UPDATE] 수정 결과 확인 | UPDATE | ✅ | 0ms | No text to verify | +| 16 | [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 1509ms | Button "삭제" not found [context: btn:120,input:1,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 18 | 18 | 0 | 41ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/vendors | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_crud-delete-vendor_2026-03-08_08-56-24.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1698 | +| 테이블 행 | 20 | +| API 호출 수 | 18 | +| 로딩 스피너 | No | diff --git a/Fail-crud-delete-vendor_2026-03-08_09-00-20.md b/Fail-crud-delete-vendor_2026-03-08_09-00-20.md new file mode 100644 index 0000000..b2aa676 --- /dev/null +++ b/Fail-crud-delete-vendor_2026-03-08_09-00-20.md @@ -0,0 +1,64 @@ +# ❌ E2E 테스트 실패: 거래처 CRUD 삭제 기능 테스트 + +**테스트 ID**: crud-delete-vendor | **실행**: 2026-03-08_09-00-20 | **결과**: FAIL +**소요 시간**: 23.9초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 17 | 12 | 5 | 0 | 71% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 10 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | Row with "E2E테스트_삭제용" not found [context: btn:41,input:1,text:not-on-page] | +| 11 | [UPDATE] 수정 모드 진입 | UPDATE | Button "수정" not found [context: btn:41,input:1,text:not-on-page] | +| 13 | [UPDATE] 수정 저장 | UPDATE | Button "저장" not found [context: btn:41,input:1,text:not-on-page] | +| 16 | [DELETE] 삭제 대상 거래처 행 클릭 | DELETE | Row with "E2E테스트_수정완료" not found [context: btn:41,input:1,text:not-on-page] | +| 17 | [DELETE] 삭제 버튼 클릭 | DELETE | Button "삭제" not found [context: btn:41,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 회계관리 > 거래처관리 | - | ✅ | 2519ms | Menu navigation: 회계관리 > 거래처관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3003ms | Waited 3000ms | +| 3 | [CREATE] 등록 버튼 클릭 | CREATE | ✅ | 305ms | Clicked button: 등록 | +| 4 | [CREATE] 거래처 정보 입력 (fill_form) | CREATE | ✅ | 873ms | fill_form: 5/5 filled | +| 5 | [CREATE] 거래처 유형 선택 | CREATE | ✅ | 521ms | json_fail:Unexpected token 'S', "Selected: 매출" is not valid JSON/raw:Selected: 매 | +| 6 | [CREATE] 등록 저장 | CREATE | ✅ | 321ms | Clicked button: 등록 | +| 7 | [CREATE] 모달 닫기 확인 | CREATE | ✅ | 0ms | No modal open | +| 8 | [CREATE] 등록 결과 확인 - 검색 | CREATE | ✅ | 1007ms | Searched: "E2E테스트_삭제용" | +| 9 | [CREATE] 등록 결과 확인 - 테이블 | CREATE | ✅ | 0ms | No text to verify | +| 10 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | ❌ | 1528ms | Row with "E2E테스트_삭제용" not found [context: btn:41,input:1,text:not-on-page] | +| 11 | [UPDATE] 수정 모드 진입 | UPDATE | ❌ | 1508ms | Button "수정" not found [context: btn:41,input:1,text:not-on-page] | +| 12 | [UPDATE] 거래처 정보 수정 (fill_form) | UPDATE | ✅ | 163ms | fill_form: 1/2 filled | +| 13 | [UPDATE] 수정 저장 | UPDATE | ❌ | 1505ms | Button "저장" not found [context: btn:41,input:1,text:not-on-page] | +| 14 | [UPDATE] 저장 후 대기 | UPDATE | ✅ | 1504ms | Waited 1500ms | +| 15 | [UPDATE] 수정 결과 확인 | UPDATE | ✅ | 0ms | No text to verify | +| 16 | [DELETE] 삭제 대상 거래처 행 클릭 | DELETE | ❌ | 1529ms | Row with "E2E테스트_수정완료" not found [context: btn:41,input:1,text:not-on-page] | +| 17 | [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 1515ms | Button "삭제" not found [context: btn:41,input:1,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 8 | 8 | 0 | 42ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/vendors | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_crud-delete-vendor_2026-03-08_09-00-20.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 585 | +| 테이블 행 | 1 | +| API 호출 수 | 8 | +| 로딩 스피너 | No | diff --git a/Fail-crud-delete-vendor_2026-03-08_09-05-43.md b/Fail-crud-delete-vendor_2026-03-08_09-05-43.md new file mode 100644 index 0000000..75b01df --- /dev/null +++ b/Fail-crud-delete-vendor_2026-03-08_09-05-43.md @@ -0,0 +1,65 @@ +# ❌ E2E 테스트 실패: 거래처 CRUD 삭제 기능 테스트 + +**테스트 ID**: crud-delete-vendor | **실행**: 2026-03-08_09-05-43 | **결과**: FAIL +**소요 시간**: 27.1초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 18 | 13 | 5 | 0 | 72% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 11 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | Row with "E2E테스트_삭제용" not found [context: btn:41,input:1,text:not-on-page] | +| 12 | [UPDATE] 수정 모드 진입 | UPDATE | Button "수정" not found [context: btn:41,input:1,text:not-on-page] | +| 14 | [UPDATE] 수정 저장 | UPDATE | Button "저장" not found [context: btn:41,input:1,text:not-on-page] | +| 17 | [DELETE] 삭제 대상 거래처 행 클릭 | DELETE | Row with "E2E테스트_수정완료" not found [context: btn:41,input:1,text:not-on-page] | +| 18 | [DELETE] 삭제 버튼 클릭 | DELETE | Button "삭제" not found [context: btn:41,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 회계관리 > 거래처관리 | - | ✅ | 2528ms | Menu navigation: 회계관리 > 거래처관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3003ms | Waited 3000ms | +| 3 | [CREATE] 등록 버튼 클릭 | CREATE | ✅ | 305ms | Clicked button: 등록 | +| 4 | [CREATE] 거래처 정보 입력 (fill_form) | CREATE | ✅ | 876ms | fill_form: 5/5 filled | +| 5 | [CREATE] 거래처 유형 선택 | CREATE | ✅ | 518ms | json_fail:Unexpected token 'S', "Selected: 매출" is not valid JSON/raw:Selected: 매 | +| 6 | [CREATE] 등록 저장 (모달 내부) | CREATE | ✅ | 1520ms | json_fail:Unexpected token 'S', "Saved: 등록" is not valid JSON/raw:Saved: 등록 | +| 7 | [CREATE] 모달 닫기 확인 | CREATE | ✅ | 1ms | No modal open | +| 8 | [CREATE] 목록 새로고침 대기 | CREATE | ✅ | 2001ms | Waited 2000ms | +| 9 | [CREATE] 등록 결과 확인 - 검색 | CREATE | ✅ | 1008ms | Searched: "E2E테스트_삭제용" | +| 10 | [CREATE] 등록 결과 확인 - 테이블 | CREATE | ✅ | 0ms | No text to verify | +| 11 | [UPDATE] 생성된 거래처 행 클릭 | UPDATE | ❌ | 1514ms | Row with "E2E테스트_삭제용" not found [context: btn:41,input:1,text:not-on-page] | +| 12 | [UPDATE] 수정 모드 진입 | UPDATE | ❌ | 1506ms | Button "수정" not found [context: btn:41,input:1,text:not-on-page] | +| 13 | [UPDATE] 거래처 정보 수정 (fill_form) | UPDATE | ✅ | 152ms | fill_form: 1/2 filled | +| 14 | [UPDATE] 수정 저장 | UPDATE | ❌ | 1508ms | Button "저장" not found [context: btn:41,input:1,text:not-on-page] | +| 15 | [UPDATE] 저장 후 대기 | UPDATE | ✅ | 1509ms | Waited 1500ms | +| 16 | [UPDATE] 수정 결과 확인 | UPDATE | ✅ | 0ms | No text to verify | +| 17 | [DELETE] 삭제 대상 거래처 행 클릭 | DELETE | ❌ | 1520ms | Row with "E2E테스트_수정완료" not found [context: btn:41,input:1,text:not-on-page] | +| 18 | [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 1517ms | Button "삭제" not found [context: btn:41,input:1,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 8 | 8 | 0 | 41ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/vendors | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_crud-delete-vendor_2026-03-08_09-05-43.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 585 | +| 테이블 행 | 1 | +| API 호출 수 | 8 | +| 로딩 스피너 | No | diff --git a/Fail-customer-inquiry_2026-03-07_21-13-38.md b/Fail-customer-inquiry_2026-03-07_21-13-38.md new file mode 100644 index 0000000..767e503 --- /dev/null +++ b/Fail-customer-inquiry_2026-03-07_21-13-38.md @@ -0,0 +1,86 @@ +# ❌ E2E 테스트 실패: 고객센터 - 1:1 문의 + +**테스트 ID**: customer-inquiry | **실행**: 2026-03-07_21-13-38 | **결과**: FAIL +**소요 시간**: 26.1초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 33 | 13 | 11 | 9 | 39% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-10 | 문의 등록 버튼 클릭 | - | Element not found: 문의 등록 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-13 | 제목 입력 | - | Input not found: 제목 입력 필드 [context: btn:46,input:1,text:not-on-page] | +| step-14 | 내용 입력 | - | Input not found: 내용 에디터 [context: btn:46,input:1,text:not-on-page] | +| step-16 | 문의 저장 (등록) | - | Element not found: 저장 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-18 | 등록한 문의 클릭 (상세 페이지 이동) | - | Element not found: 등록한 문의 행 [context: btn:46,input:1,text:not-on-page] | +| step-22 | 수정 버튼 클릭 | - | Element not found: 수정 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-23 | 제목 수정 | - | Input not found: 제목 입력 필드 [context: btn:46,input:1,text:not-on-page] | +| step-24 | 문의 저장 (수정) | - | Element not found: 저장 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-26 | 문의 다시 클릭 (삭제를 위해) | - | Element not found: 수정된 문의 행 [context: btn:46,input:1,text:not-on-page] | +| step-27 | 삭제 버튼 클릭 | - | Element not found: 삭제 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-28 | 삭제 확인 | - | Element not found: 삭제 확인 버튼 [context: btn:46,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 준비 | - | ✅ | 512ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-01 | 2단계 메뉴 진입: 고객센터 > 1:1 문의 | - | ✅ | 2754ms | Found: 고객센터 / Clicked: 고객센터 / Waited 500ms / Found: 1:1 문의 / Clicked: 1:1 문의 / W | +| step-02 | 페이지 구조 확인 | - | ✅ | 0ms | No checks defined | +| step-03 | 테이블 구조 확인 | - | ✅ | 0ms | No checks defined | +| step-04 | 초기 데이터 로드 확인 | - | ✅ | 0ms | No checks defined | +| step-05 | 상담분류 필터 동작 확인 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-06 | 상태 필터 동작 확인 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-07 | 정렬 옵션 동작 확인 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-08 | 검색 기능 테스트 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-09 | 날짜 범위 필터 테스트 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-10 | 문의 등록 버튼 클릭 | - | ❌ | 1524ms | Element not found: 문의 등록 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-11 | 문의 등록 폼 구조 확인 | - | ✅ | 0ms | No checks defined | +| step-12 | 상담분류 선택 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-13 | 제목 입력 | - | ❌ | 1513ms | Input not found: 제목 입력 필드 [context: btn:46,input:1,text:not-on-page] | +| step-14 | 내용 입력 | - | ❌ | 1510ms | Input not found: 내용 에디터 [context: btn:46,input:1,text:not-on-page] | +| step-15 | 필수 입력값 누락 시 유효성 검사 확인 | - | ✅ | 0ms | No checks defined | +| step-16 | 문의 저장 (등록) | - | ❌ | 1515ms | Element not found: 저장 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-17 | 등록된 문의 확인 | - | ✅ | 0ms | No checks defined | +| step-18 | 등록한 문의 클릭 (상세 페이지 이동) | - | ❌ | 1517ms | Element not found: 등록한 문의 행 [context: btn:46,input:1,text:not-on-page] | +| step-19 | 문의 상세 내용 확인 | - | ✅ | 0ms | No checks defined | +| step-20 | 댓글 작성 영역 확인 | - | ✅ | 0ms | No checks defined | +| step-21 | 댓글 작성 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-22 | 수정 버튼 클릭 | - | ❌ | 1522ms | Element not found: 수정 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-23 | 제목 수정 | - | ❌ | 1509ms | Input not found: 제목 입력 필드 [context: btn:46,input:1,text:not-on-page] | +| step-24 | 문의 저장 (수정) | - | ❌ | 1514ms | Element not found: 저장 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-25 | 수정된 문의 확인 | - | ✅ | 0ms | No checks defined | +| step-26 | 문의 다시 클릭 (삭제를 위해) | - | ❌ | 1514ms | Element not found: 수정된 문의 행 [context: btn:46,input:1,text:not-on-page] | +| step-27 | 삭제 버튼 클릭 | - | ❌ | 1514ms | Element not found: 삭제 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-28 | 삭제 확인 | - | ❌ | 1522ms | Element not found: 삭제 확인 버튼 [context: btn:46,input:1,text:not-on-page] | +| step-29 | 삭제 확인 (목록에서) | - | ✅ | 0ms | No checks defined | +| step-30 | 페이지네이션 테스트 (데이터 10개 이상일 경우) | - | ⚠️ | 0ms | Unknown action type: interact | +| step-31 | 체크박스 선택 테스트 | - | ⚠️ | 0ms | Unknown action type: interact | +| step-32 | 모바일 반응형 테스트 (선택) | - | ✅ | 0ms | No checks defined | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/customer-center/qna | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_customer-inquiry_2026-03-07_21-13-38.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 552 | +| 테이블 행 | 3 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-customer-inquiry_2026-03-07_22-41-57.md b/Fail-customer-inquiry_2026-03-07_22-41-57.md new file mode 100644 index 0000000..ab87530 --- /dev/null +++ b/Fail-customer-inquiry_2026-03-07_22-41-57.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 1:1 문의 테스트 + +**테스트 ID**: customer-inquiry | **실행**: 2026-03-07_22-41-57 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 고객센터 > 문의하기 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-daily-report_2026-03-07_21-15-36.md b/Fail-daily-report_2026-03-07_21-15-36.md new file mode 100644 index 0000000..3c8050f --- /dev/null +++ b/Fail-daily-report_2026-03-07_21-15-36.md @@ -0,0 +1,99 @@ +# ❌ E2E 테스트 실패: 일일리포트 테스트 + +**테스트 ID**: daily-report | **실행**: 2026-03-07_21-15-36 | **결과**: FAIL +**소요 시간**: 117.9초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 51 | 0 | 6 | 45 | 0% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 2단계 메뉴 진입: 회계관리 > 일일리포트 | - | Element not found: 일일리포트 [context: btn:30,input:1,text:not-on-page] | +| step-17 | 날짜 변경 - 과거 날짜 선택 | - | Input not found: date input [context: btn:30,input:1]; Input not found: date input [context: btn:30, | +| step-22 | 날짜를 오늘로 되돌리기 | - | Input not found: date input [context: btn:30,input:1]; Input not found: date input [context: btn:30, | +| step-24 | 새로고침 버튼 클릭 | - | Element not found: 새로고침 버튼 [context: btn:30,input:1,text:not-on-page] | +| step-30 | 엑셀 다운로드 버튼 클릭 | - | Element not found: 엑셀 다운로드 버튼 [context: btn:30,input:1,text:not-on-page] | +| step-50 | 전체 페이지 기능 통합 테스트 | - | Input not found: date input [context: btn:30,input:1]; Element not found: 새로고침 버튼 [context: btn:30,i | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7334ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| step-1 | 2단계 메뉴 진입: 회계관리 > 일일리포트 | - | ❌ | 17117ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / scrollAndFind: "일일리포트" not found af | +| step-2 | 페이지 구조 확인 | - | ⚠️ | 1513ms | Element not found: 페이지 구조 | +| step-3 | 날짜 선택 필드 기본값 확인 | - | ⚠️ | 1515ms | Element not found: date input value | +| step-4 | 페이지 타이틀 날짜 표시 확인 | - | ⚠️ | 1513ms | Element not found: title date format | +| step-5 | 어음 및 외상매출채권현황 테이블 구조 확인 | - | ⚠️ | 1515ms | Element not found: note receivables table columns | +| step-6 | 어음 및 외상매출채권 데이터 로드 확인 | - | ⚠️ | 1507ms | Element not found: table data or empty message | +| step-7 | 어음 및 외상매출채권 합계 확인 | - | ⚠️ | 1518ms | Element not found: table footer total | +| step-8 | 일자별 상세 테이블 구조 확인 | - | ⚠️ | 1520ms | Element not found: daily accounts table columns | +| step-9 | 일자별 상세 데이터 로드 확인 | - | ⚠️ | 1528ms | Element not found: daily accounts data | +| step-10 | KRW 계좌 데이터 확인 | - | ⚠️ | 1522ms | Element not found: KRW accounts | +| step-11 | USD 계좌 데이터 확인 | - | ⚠️ | 1520ms | Element not found: USD accounts | +| step-12 | 매칭 상태 Badge 확인 | - | ⚠️ | 1505ms | Element not found: match status badges | +| step-13 | 외화원(USD) 합계 행 확인 | - | ⚠️ | 1515ms | Element not found: USD total row | +| step-14 | 현금성 자산 합계 행 확인 | - | ⚠️ | 1515ms | Element not found: cash asset total row | +| step-15 | 로딩 상태 확인 - 어음 테이블 | - | ⚠️ | 1519ms | Element not found: note receivables loading state | +| step-16 | 로딩 상태 확인 - 일자별 상세 테이블 | - | ⚠️ | 1504ms | Element not found: daily accounts loading state | +| step-17 | 날짜 변경 - 과거 날짜 선택 | - | ❌ | 4037ms | Input not found: date input [context: btn:30,input:1] / Input not found: date in | +| step-18 | 날짜 변경 후 페이지 타이틀 확인 | - | ⚠️ | 1528ms | Element not found: title date update | +| step-19 | 날짜 변경 후 데이터 리로드 확인 | - | ⚠️ | 1522ms | Element not found: data reload for new date | +| step-20 | 날짜 변경 후 어음 테이블 데이터 확인 | - | ⚠️ | 1520ms | Element not found: note receivables data for 2026-01-10 | +| step-21 | 날짜 변경 후 일자별 상세 테이블 데이터 확인 | - | ⚠️ | 1518ms | Element not found: daily accounts data for 2026-01-10 | +| step-22 | 날짜를 오늘로 되돌리기 | - | ❌ | 4025ms | Input not found: date input [context: btn:30,input:1] / Input not found: date in | +| step-23 | 새로고침 버튼 존재 확인 | - | ⚠️ | 1514ms | Element not found: refresh button | +| step-24 | 새로고침 버튼 클릭 | - | ❌ | 2519ms | Element not found: 새로고침 버튼 [context: btn:30,input:1,text:not-on-page] / Waited 1 | +| step-25 | 새로고침 버튼 로딩 상태 확인 | - | ⚠️ | 1514ms | Element not found: refresh button loading state | +| step-26 | 새로고침 후 API 호출 확인 | - | ⚠️ | 1514ms | Element not found: API calls after refresh | +| step-27 | 새로고침 후 데이터 표시 확인 | - | ⚠️ | 1510ms | Element not found: both tables data after refresh | +| step-28 | 엑셀 다운로드 버튼 존재 확인 | - | ⚠️ | 1511ms | Element not found: excel download button | +| step-29 | 엑셀 다운로드 버튼 클릭 전 Network 상태 확인 | - | ⚠️ | 1512ms | Element not found: network state before download | +| step-30 | 엑셀 다운로드 버튼 클릭 | - | ❌ | 2527ms | Element not found: 엑셀 다운로드 버튼 [context: btn:30,input:1,text:not-on-page] / Waite | +| step-31 | 엑셀 다운로드 API 호출 확인 | - | ⚠️ | 1507ms | Element not found: export API call | +| step-32 | 엑셀 다운로드 이벤트 확인 | - | ⚠️ | 1519ms | Element not found: download event | +| step-33 | 엑셀 다운로드 성공 토스트 확인 | - | ⚠️ | 1516ms | Element not found: success toast message | +| step-34 | 어음 데이터 내용 형식 확인 | - | ⚠️ | 1520ms | Element not found: note receivable content format | +| step-35 | 어음 현재 잔액 표시 확인 | - | ⚠️ | 1516ms | Element not found: current balance format | +| step-36 | 어음 발행일/만기일 형식 확인 | - | ⚠️ | 1519ms | Element not found: date format in note table | +| step-37 | 일자별 상세 구분 컬럼 형식 확인 | - | ⚠️ | 1516ms | Element not found: account category format | +| step-38 | 일자별 상세 금액 컬럼 정렬 확인 | - | ⚠️ | 1504ms | Element not found: amount columns alignment | +| step-39 | 일자별 상세 금액 형식 확인 | - | ⚠️ | 1531ms | Element not found: amount format | +| step-40 | 어음 테이블 빈 데이터 처리 확인 | - | ⚠️ | 1511ms | Element not found: empty state message for note table | +| step-41 | 일자별 상세 테이블 빈 데이터 처리 확인 | - | ⚠️ | 1511ms | Element not found: empty state message for daily accounts table | +| step-42 | 매칭 상태 필터링 확인 | - | ⚠️ | 1504ms | Element not found: match status filtering | +| step-43 | KRW/USD 계좌 분리 확인 | - | ⚠️ | 1520ms | Element not found: currency separation | +| step-44 | 외화원(USD) 합계 계산 확인 | - | ⚠️ | 1515ms | Element not found: USD total calculation | +| step-45 | 현금성 자산 합계 계산 확인 | - | ⚠️ | 1505ms | Element not found: cash asset total calculation | +| step-46 | 어음 합계 계산 정확성 확인 | - | ⚠️ | 1508ms | Element not found: note receivables total accuracy | +| step-47 | 페이지 반응형 동작 확인 | - | ⚠️ | 1523ms | Element not found: responsive behavior | +| step-48 | 날짜 선택 필드 제약 확인 | - | ⚠️ | 1519ms | Element not found: date input validation | +| step-49 | 콘솔 에러 확인 | - | ⚠️ | 1513ms | Element not found: console errors | +| step-50 | 전체 페이지 기능 통합 테스트 | - | ❌ | 7578ms | Input not found: date input [context: btn:30,input:1] / Waited 1000ms / Element | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 6 | 6 | 0 | 109ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/daily-report | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_daily-report_2026-03-07_21-15-35.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 552 | +| 테이블 행 | 1 | +| API 호출 수 | 6 | +| 로딩 스피너 | No | diff --git a/Fail-department-add_2026-03-07_21-16-11.md b/Fail-department-add_2026-03-07_21-16-11.md new file mode 100644 index 0000000..12ccd29 --- /dev/null +++ b/Fail-department-add_2026-03-07_21-16-11.md @@ -0,0 +1,72 @@ +# ❌ E2E 테스트 실패: 부서 추가 테스트 (랜덤 + 하위부서) + +**테스트 ID**: department-add | **실행**: 2026-03-07_21-16-11 | **결과**: FAIL +**소요 시간**: 35.7초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 21 | 15 | 6 | 0 | 71% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-3 | 상위 부서 추가 모달 열기 | - | Timeout waiting for modal [context: btn:45,input:1,text:found-on-page] | +| step-7 | 하위 부서 추가 버튼 클릭 | - | Row with "undefined" not found | +| step-10 | 계층 구조 확인 | - | Row with "undefined" not found | +| step-11 | 하위 부서 수정 모달 열기 | - | Row with "undefined" not found | +| step-14 | 하위 부서 삭제 | - | Row with "undefined" not found | +| step-16 | 상위 부서 삭제 | - | Row with "undefined" not found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 503ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 인사관리 메뉴 진입 | - | ✅ | 1749ms | Found: 인사관리 / Clicked: 인사관리 / Waited 500ms / Found: 부서관리 / Clicked: 부서관리 | +| step-2 | 현재 부서 개수 저장 | - | ✅ | 0ms | No action | +| step-3 | 상위 부서 추가 모달 열기 | - | ❌ | 17034ms | Timeout waiting for modal [context: btn:45,input:1,text:found-on-page] | +| step-4 | 랜덤 상위 부서명 입력 | - | ✅ | 216ms | Filled "부서명" with "{randomData.parentDepartment}" | +| step-5 | 상위 부서 등록 | - | ✅ | 411ms | Clicked: 등록 | +| step-6 | 상위 부서 등록 확인 | - | ✅ | 0ms | No action | +| step-7 | 하위 부서 추가 버튼 클릭 | - | ❌ | 1518ms | Row with "undefined" not found | +| step-8 | 랜덤 하위 부서명 입력 | - | ✅ | 202ms | Filled "부서명" with "{randomData.childDepartment}" | +| step-9 | 하위 부서 등록 | - | ✅ | 423ms | Clicked: 등록 | +| step-10 | 계층 구조 확인 | - | ❌ | 1516ms | Row with "undefined" not found | +| step-11 | 하위 부서 수정 모달 열기 | - | ❌ | 1519ms | Row with "undefined" not found | +| step-12 | 하위 부서명 수정 | - | ✅ | 210ms | Filled "부서명" with "{randomData.childDepartment}_수" | +| step-13 | 부서 수정 저장 | - | ✅ | 407ms | Clicked: 저장 | +| step-13-1 | ⚠️ 필수 검증: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-14 | 하위 부서 삭제 | - | ❌ | 1518ms | Row with "undefined" not found | +| step-15 | 하위 부서 삭제 확인 | - | ✅ | 415ms | Clicked: 확인 | +| step-15-1 | ⚠️ 필수 검증: 하위 부서 삭제 반영 확인 | - | ✅ | 1ms | No action | +| step-16 | 상위 부서 삭제 | - | ❌ | 1504ms | Row with "undefined" not found | +| step-17 | 상위 부서 삭제 확인 | - | ✅ | 415ms | Clicked: 확인 | +| step-18 | ⚠️ 필수 검증: 상위 부서 삭제 반영 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 99ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/department-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_department-add_2026-03-07_21-16-11.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 438 | +| 테이블 행 | 0 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-department-add_2026-03-07_22-42-39.md b/Fail-department-add_2026-03-07_22-42-39.md new file mode 100644 index 0000000..99e3684 --- /dev/null +++ b/Fail-department-add_2026-03-07_22-42-39.md @@ -0,0 +1,59 @@ +# ❌ E2E 테스트 실패: 부서관리 테스트 + +**테스트 ID**: department-add | **실행**: 2026-03-07_22-42-39 | **결과**: FAIL +**소요 시간**: 26.1초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 16 | 15 | 1 | 0 | 94% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 7 | [READ] 첫 번째 부서 노드 클릭 | READ | No table rows found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 인사관리 > 부서관리 | - | ✅ | 2514ms | Menu navigation: 인사관리 > 부서관리 | +| 2 | URL 검증 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/hr/department-management | +| 3 | 필수 검증 #5: 목업 페이지 감지 | - | ✅ | 0ms | Real page: 1 inputs, 45 buttons | +| 4 | 통계 카드 확인 | - | ✅ | 0ms | json_fail:Unexpected token 'S', "Stats: 2 cards found" is not valid JSON/raw:Sta | +| 5 | 부서 트리/목록 구조 확인 | - | ✅ | 1ms | json_fail:Unexpected token 'T', "Tables: 0,"... is not valid JSON/raw:Tables: 0, | +| 6 | [READ] 부서 목록 데이터 확인 | READ | ✅ | 0ms | json_fail:Unexpected token 'D', "Dept data "... is not valid JSON/raw:Dept data | +| 7 | [READ] 첫 번째 부서 노드 클릭 | READ | ❌ | 17194ms | No table rows found | +| 8 | [READ] 부서 상세 정보 확인 | READ | ✅ | 1ms | json_fail:Unexpected token 'D', "Detail vie"... is not valid JSON/raw:Detail vie | +| 9 | 부서 추가 버튼 확인 | - | ✅ | 303ms | Clicked (existed): 추가 | +| 10 | 추가 폼/모달 확인 | - | ✅ | 1ms | json_fail:Unexpected token 'M', "Modal open"... is not valid JSON/raw:Modal open | +| 11 | 추가 모달 닫기 | - | ✅ | 0ms | No modal open | +| 12 | 부서 트리 구조 확인 | - | ✅ | 0ms | json_fail:Unexpected token 'T', "Tree eleme"... is not valid JSON/raw:Tree eleme | +| 13 | 삭제 버튼 존재 확인 | - | ✅ | 1ms | json_fail:Unexpected token 'D', "Delete buttons: 0" is not valid JSON/raw:Delete | +| 14 | 페이지네이션 확인 | - | ✅ | 0ms | json_fail:Unexpected token 'N', "No paginat"... is not valid JSON/raw:No paginat | +| 15 | 콘솔 에러 확인 | - | ✅ | 0ms | Element exists: body | +| 16 | 부서관리 페이지 최종 확인 | - | ✅ | 0ms | Detail checks: 1/1 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/department-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_department-add_2026-03-07_22-42-39.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 458 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-deposit-management_2026-03-07_21-16-56.md b/Fail-deposit-management_2026-03-07_21-16-56.md new file mode 100644 index 0000000..4894226 --- /dev/null +++ b/Fail-deposit-management_2026-03-07_21-16-56.md @@ -0,0 +1,72 @@ +# ❌ E2E 테스트 실패: 입금관리 테스트 + +**테스트 ID**: deposit-management | **실행**: 2026-03-07_21-16-56 | **결과**: FAIL +**소요 시간**: 44.9초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 20 | 12 | 7 | 1 | 60% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-3 | 계정과목명 드롭다운 옵션 확인 | - | Element not found: 계정과목명 드롭다운 [context: btn:89,input:1,text:not-on-page] | +| step-4 | 체크박스 선택 후 계정과목명 일괄변경 | - | Element not found: 첫 번째 행 체크박스 [context: btn:89,input:1,text:not-on-page]; Element not found: 계정과목명 | +| step-5 | 입금 상세 페이지 이동 | - | Element not found: 테이블 첫 번째 행 [context: btn:90,input:1,text:not-on-page] | +| step-9 | 거래처 드롭다운 옵션 확인 | - | Element not found: 거래처 드롭다운 [context: btn:90,input:1,text:not-on-page] | +| step-10 | 입금 유형 드롭다운 옵션 확인 | - | Element not found: 입금 유형 드롭다운 [context: btn:90,input:1,text:not-on-page] | +| step-11 | 수정 데이터 입력 | - | Element not found: 거래처 드롭다운 [context: btn:90,input:1,text:not-on-page]; Element not found: 거래처테스트 [c | +| step-16 | 날짜 필터 검증 | - | Element not found: 당해년도 [context: btn:60,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7313ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| step-1 | 2단계 메뉴 진입: 회계관리 > 입금관리 | - | ✅ | 11738ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / Found: 입금관리 / Clicked: 입금관리 / Waite | +| step-2 | 목록 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 계정과목명 드롭다운 옵션 확인 | - | ❌ | 1520ms | Element not found: 계정과목명 드롭다운 [context: btn:89,input:1,text:not-on-page] | +| step-4 | 체크박스 선택 후 계정과목명 일괄변경 | - | ❌ | 4942ms | Element not found: 첫 번째 행 체크박스 [context: btn:89,input:1,text:not-on-page] / Elem | +| step-4-1 | ⚠️ 필수 검증: 계정과목명 변경 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-5 | 입금 상세 페이지 이동 | - | ❌ | 1506ms | Element not found: 테이블 첫 번째 행 [context: btn:90,input:1,text:not-on-page] | +| step-6 | 상세 페이지 읽기 모드 필드 확인 | - | ✅ | 0ms | No action | +| step-7 | 수정 모드 전환 | - | ✅ | 0ms | No action | +| step-8 | 수정 모드 필드 활성화 검증 | - | ✅ | 0ms | No action | +| step-9 | 거래처 드롭다운 옵션 확인 | - | ❌ | 1510ms | Element not found: 거래처 드롭다운 [context: btn:90,input:1,text:not-on-page] | +| step-10 | 입금 유형 드롭다운 옵션 확인 | - | ❌ | 1509ms | Element not found: 입금 유형 드롭다운 [context: btn:90,input:1,text:not-on-page] | +| step-11 | 수정 데이터 입력 | - | ❌ | 6053ms | Element not found: 거래처 드롭다운 [context: btn:90,input:1,text:not-on-page] / Element | +| step-12 | 저장 및 결과 확인 | - | ✅ | 0ms | No action | +| step-12-1 | ⚠️ 필수 검증: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-13 | 취소 버튼 동작 확인 | - | ✅ | 815ms | Clicked: 수정 / Clicked: 취소 | +| step-14 | 목록 버튼 동작 확인 | - | ✅ | 0ms | No action | +| step-15 | 필터 드롭다운 검증 | - | ✅ | 0ms | No action | +| step-16 | 날짜 필터 검증 | - | ❌ | 1511ms | Element not found: 당해년도 [context: btn:60,input:0,text:not-on-page] | +| step-17 | 페이지네이션 동작 확인 | - | ✅ | 408ms | Clicked: 다음 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 6 | 6 | 0 | 76ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/deposits | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_deposit-management_2026-03-07_21-16-56.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 574 | +| 테이블 행 | 0 | +| API 호출 수 | 6 | +| 로딩 스피너 | No | diff --git a/Fail-draft-box_2026-03-07_21-18-17.md b/Fail-draft-box_2026-03-07_21-18-17.md new file mode 100644 index 0000000..f68acb8 --- /dev/null +++ b/Fail-draft-box_2026-03-07_21-18-17.md @@ -0,0 +1,89 @@ +# ❌ E2E 테스트 실패: 기안함 테스트 + +**테스트 ID**: draft-box | **실행**: 2026-03-07_21-18-17 | **결과**: FAIL +**소요 시간**: 80.7초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 33 | 2 | 14 | 17 | 6% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-10 | 검색 기능 테스트 | - | Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] | +| step-11 | 검색어 초기화 | - | Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] | +| step-13 | 필터 적용 테스트 (임시저장) | - | Select not found: 필터 셀렉트박스 [context: btn:39,input:1,text:not-on-page] | +| step-14 | 필터 초기화 | - | Select not found: 필터 셀렉트박스 [context: btn:39,input:1,text:not-on-page] | +| step-16 | 정렬 변경 테스트 (제목 오름차순) | - | Select not found: 정렬 셀렉트박스 [context: btn:39,input:1,text:not-on-page] | +| step-17 | 정렬 초기화 | - | Select not found: 정렬 셀렉트박스 [context: btn:39,input:1,text:not-on-page] | +| step-18 | 체크박스 선택 (단일) | - | Element not found: 첫 번째 행 체크박스 [context: btn:39,input:1,text:not-on-page] | +| step-20 | 체크박스 해제 | - | Element not found: 첫 번째 행 체크박스 [context: btn:39,input:1,text:not-on-page] | +| step-21 | 전체 선택 체크박스 클릭 | - | Element not found: 헤더 체크박스 (전체 선택) [context: btn:39,input:1,text:not-on-page] | +| step-22 | 전체 선택 해제 | - | Element not found: 헤더 체크박스 (전체 선택) [context: btn:39,input:1,text:not-on-page] | +| step-24 | 문서 클릭 (임시저장) | - | Element not found: 임시저장 상태의 문서 행 [context: btn:39,input:1,text:not-on-page] | +| step-26 | 문서 클릭 (결재대기/진행중/완료) | - | Element not found: 결재대기/진행중/완료 상태의 문서 행 [context: btn:45,input:1,text:not-on-page] | +| step-31 | 모달 닫기 | - | Element not found: 모달 외부 또는 닫기 버튼 [context: btn:45,input:1,text:not-on-page] | +| step-31-pdf-1 | ⚠️ 필수 검증: PDF 다운로드 전 모달 스크린샷 | - | Element not found: 결재대기/진행중/완료 상태의 문서 행 [context: btn:45,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7337ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| step-1 | 2단계 메뉴 진입: 결재관리 > 기안함 | - | ✅ | 11737ms | Found: 결재관리 / Clicked: 결재관리 / Waited 500ms / Found: 기안함 / Clicked: 기안함 / Waited | +| step-2 | 페이지 구조 확인 | - | ⚠️ | 1520ms | Element not found: 페이지 구조 | +| step-3 | 통계 카드 표시 확인 | - | ⚠️ | 1521ms | Element not found: 통계 카드 | +| step-4 | 테이블 컬럼 구조 확인 | - | ⚠️ | 1517ms | Element not found: table columns | +| step-5 | 데이터 로드 확인 | - | ⚠️ | 1517ms | Element not found: table data | +| step-6 | 문서번호 형식 확인 | - | ⚠️ | 1518ms | Element not found: document number format | +| step-7 | 문서유형 뱃지 표시 확인 | - | ⚠️ | 1512ms | Element not found: document type badge | +| step-8 | 결재자 표시 형식 확인 | - | ⚠️ | 1510ms | Element not found: approvers format | +| step-9 | 상태 뱃지 색상 확인 | - | ⚠️ | 1530ms | Element not found: status badge colors | +| step-10 | 검색 기능 테스트 | - | ❌ | 2514ms | Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] / Waited 10 | +| step-11 | 검색어 초기화 | - | ❌ | 2527ms | Input not found: 검색 입력 필드 [context: btn:39,input:1,text:not-on-page] / Waited 10 | +| step-12 | 필터 셀렉트박스 존재 확인 | - | ⚠️ | 1516ms | Element not found: filter select | +| step-13 | 필터 적용 테스트 (임시저장) | - | ❌ | 2519ms | Select not found: 필터 셀렉트박스 [context: btn:39,input:1,text:not-on-page] / Waited 1 | +| step-14 | 필터 초기화 | - | ❌ | 2535ms | Select not found: 필터 셀렉트박스 [context: btn:39,input:1,text:not-on-page] / Waited 1 | +| step-15 | 정렬 셀렉트박스 존재 확인 | - | ⚠️ | 1508ms | Element not found: sort select | +| step-16 | 정렬 변경 테스트 (제목 오름차순) | - | ❌ | 2531ms | Select not found: 정렬 셀렉트박스 [context: btn:39,input:1,text:not-on-page] / Waited 1 | +| step-17 | 정렬 초기화 | - | ❌ | 2521ms | Select not found: 정렬 셀렉트박스 [context: btn:39,input:1,text:not-on-page] / Waited 1 | +| step-18 | 체크박스 선택 (단일) | - | ❌ | 1517ms | Element not found: 첫 번째 행 체크박스 [context: btn:39,input:1,text:not-on-page] | +| step-19 | 임시저장 문서 수정/삭제 버튼 표시 확인 | - | ⚠️ | 1510ms | Element not found: action buttons for draft status | +| step-20 | 체크박스 해제 | - | ❌ | 1510ms | Element not found: 첫 번째 행 체크박스 [context: btn:39,input:1,text:not-on-page] | +| step-21 | 전체 선택 체크박스 클릭 | - | ❌ | 1512ms | Element not found: 헤더 체크박스 (전체 선택) [context: btn:39,input:1,text:not-on-page] | +| step-22 | 전체 선택 해제 | - | ❌ | 1523ms | Element not found: 헤더 체크박스 (전체 선택) [context: btn:39,input:1,text:not-on-page] | +| step-23 | 문서 작성 버튼 확인 | - | ⚠️ | 1534ms | Element not found: 문서 작성 버튼 | +| step-24 | 문서 클릭 (임시저장) | - | ❌ | 1506ms | Element not found: 임시저장 상태의 문서 행 [context: btn:39,input:1,text:not-on-page] | +| step-25 | 기안함으로 복귀 | - | ✅ | 0ms | Navigate to /ko/approval/draft | +| step-26 | 문서 클릭 (결재대기/진행중/완료) | - | ❌ | 2520ms | Element not found: 결재대기/진행중/완료 상태의 문서 행 [context: btn:45,input:1,text:not-on-pag | +| step-27 | 문서 상세 모달 구조 확인 | - | ⚠️ | 1512ms | Element not found: document detail modal | +| step-28 | 모달 수정 버튼 확인 | - | ⚠️ | 1510ms | Element not found: modal edit button | +| step-29 | 모달 복제 버튼 확인 | - | ⚠️ | 1516ms | Element not found: modal copy button | +| step-30 | 모달 상신 버튼 확인 (임시저장 시) | - | ⚠️ | 1520ms | Element not found: modal submit button | +| step-31 | 모달 닫기 | - | ❌ | 1517ms | Element not found: 모달 외부 또는 닫기 버튼 [context: btn:45,input:1,text:not-on-page] | +| step-31-pdf-1 | ⚠️ 필수 검증: PDF 다운로드 전 모달 스크린샷 | - | ❌ | 2517ms | Element not found: 결재대기/진행중/완료 상태의 문서 행 [context: btn:45,input:1,text:not-on-pag | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/approval/draft | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_draft-box_2026-03-07_21-18-17.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 683 | +| 테이블 행 | 2 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-employee-register_2026-03-07_21-18-30.md b/Fail-employee-register_2026-03-07_21-18-30.md new file mode 100644 index 0000000..2faaacf --- /dev/null +++ b/Fail-employee-register_2026-03-07_21-18-30.md @@ -0,0 +1,54 @@ +# ❌ E2E 테스트 실패: 직원 등록 테스트 + +**테스트 ID**: employee-register | **실행**: 2026-03-07_21-18-30 | **결과**: FAIL +**소요 시간**: 13.5초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 10 | 8 | 2 | 0 | 80% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-6 | 인사 정보 입력 | - | Element not found: 고용형태 선택 [context: btn:102,input:1,text:not-on-page]; Element not found: 정규직 [cont | +| step-8-1 | 검색 기간 설정 - 유효 기간 | - | Input not found: undefined | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 510ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 인사관리 메뉴 진입 | - | ✅ | 0ms | No action | +| step-2 | 사원 등록 페이지 이동 | - | ✅ | 0ms | No action | +| step-3 | 사원 정보 입력 | - | ✅ | 0ms | No action | +| step-4 | 급여계좌 정보 입력 | - | ✅ | 0ms | No action | +| step-5 | 사원 상세 정보 입력 | - | ✅ | 0ms | No action | +| step-6 | 인사 정보 입력 | - | ❌ | 4949ms | Element not found: 고용형태 선택 [context: btn:102,input:1,text:not-on-page] / Element | +| step-7 | 사용자 정보 입력 | - | ✅ | 0ms | No action | +| step-8 | 등록 완료 | - | ✅ | 0ms | No action | +| step-8-1 | 검색 기간 설정 - 유효 기간 | - | ❌ | 1925ms | Input not found: undefined / Clicked: 검색 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 14ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/employee-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_employee-register_2026-03-07_21-18-30.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 3016 | +| 테이블 행 | 20 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-employee-register_2026-03-07_22-51-28.md b/Fail-employee-register_2026-03-07_22-51-28.md new file mode 100644 index 0000000..7c5329c --- /dev/null +++ b/Fail-employee-register_2026-03-07_22-51-28.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 직원 등록 테스트 + +**테스트 ID**: employee-register | **실행**: 2026-03-07_22-51-28 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 인사관리 > 직원관리 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-event-board_2026-03-07_21-18-42.md b/Fail-event-board_2026-03-07_21-18-42.md new file mode 100644 index 0000000..eba3428 --- /dev/null +++ b/Fail-event-board_2026-03-07_21-18-42.md @@ -0,0 +1,51 @@ +# ❌ E2E 테스트 실패: 이벤트 게시판 테스트 + +**테스트 ID**: event-board | **실행**: 2026-03-07_21-18-42 | **결과**: FAIL +**소요 시간**: 11.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 8 | 7 | 1 | 0 | 88% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 고객센터 메뉴 진입 | - | Element not found: 이벤트 게시판 [context: btn:40,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 504ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 고객센터 메뉴 진입 | - | ❌ | 2648ms | Found: 고객센터 / Clicked: 고객센터 / Waited 500ms / Element not found: 이벤트 게시판 [context | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 통계 카드 확인 | - | ✅ | 0ms | No action | +| step-4 | 필수 검증 #3: 날짜 필터 기능 | - | ✅ | 721ms | Clicked: 당해년도 / Waited 300ms | +| step-5 | 필수 검증 #3: 정렬 옵션 확인 | - | ✅ | 422ms | Clicked: 최신순 | +| step-6 | 필터 초기화 | - | ✅ | 929ms | Pressed key: Escape / Waited 300ms / Clicked: 초기화 | +| step-7 | 빈 상태 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/customer-center/events | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_event-board_2026-03-07_21-18-42.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 482 | +| 테이블 행 | 1 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-expected-expenses_2026-03-07_21-21-04.md b/Fail-expected-expenses_2026-03-07_21-21-04.md new file mode 100644 index 0000000..8fad5ad --- /dev/null +++ b/Fail-expected-expenses_2026-03-07_21-21-04.md @@ -0,0 +1,118 @@ +# ❌ E2E 테스트 실패: 예상비용 관리 테스트 + +**테스트 ID**: expected-expenses | **실행**: 2026-03-07_21-21-04 | **결과**: FAIL +**소요 시간**: 142.8초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 43 | 1 | 33 | 9 | 2% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 2단계 메뉴 진입: 회계관리 > 예상비용 | - | Element not found: 예상비용 [context: btn:79,input:1,text:not-on-page] | +| step-3 | 기간 설정 (2년) | - | Element not found: 기간 선택 버튼 [context: btn:79,input:1,text:not-on-page]; Element not found: 적용 버튼 [co | +| step-5 | 등록 버튼 클릭 | - | Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-7 | 예상 지급일 입력 | - | Element not found: 예상 지급일 필드 [context: btn:79,input:1,text:not-on-page] | +| step-8 | 결제일 입력 | - | Element not found: 결제일 필드 [context: btn:79,input:1,text:not-on-page] | +| step-9 | 거래유형 선택 | - | Element not found: 거래유형 Select [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 목록 [ | +| step-10 | 거래처 입력 | - | Element not found: 거래처 Combobox [context: btn:79,input:1,text:found-on-page]; Input not found: 거래처 입 | +| step-11 | 지출금액 입력 | - | Element not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 지출금액 필드 [con | +| step-12 | 계좌 선택 | - | Element not found: 계좌 Select [context: btn:79,input:1,text:found-on-page]; Select not found: 계좌 옵션 [ | +| step-13 | 계정과목 선택 | - | Element not found: 계정과목 Select [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 목록 [ | +| step-14 | 적요 입력 | - | Element not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 적요/메모 필드 [c | +| step-15 | 등록 버튼 클릭 및 저장 | - | Element not found: 등록 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] | +| step-17 | 수정 아이콘 클릭 | - | Element not found: 신규 등록 행의 수정 아이콘 [context: btn:79,input:1,text:not-on-page] | +| step-18 | 지출금액 수정 | - | Element not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 지출금액 필드 [con | +| step-19 | 적요 수정 | - | Element not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page]; Input not found: 적요/메모 필드 [c | +| step-20 | 수정 버튼 클릭 및 저장 | - | Element not found: 수정 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] | +| step-22 | 체크박스 선택 (단일) | - | Element not found: 수정된 행의 체크박스 [context: btn:79,input:1,text:not-on-page] | +| step-23 | 예상 지급일 변경 버튼 클릭 | - | Element not found: 예상 지급일 변경 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-24 | 새로운 예상 지급일 선택 | - | Element not found: 날짜 선택 필드 [context: btn:79,input:1,text:not-on-page] | +| step-25 | 예상 지급일 변경 확인 | - | Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-27 | 전자결재 버튼 클릭 | - | Element not found: 전자결재 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-29 | 추가 데이터 등록 (일괄삭제 테스트용) | - | Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page]; Element not found: 등록 버튼 (모달 내) | +| step-30 | 복수 체크박스 선택 | - | Element not found: 첫 번째 테스트 데이터 체크박스 [context: btn:79,input:1,text:not-on-page]; Element not found: | +| step-31 | 일괄삭제 버튼 클릭 | - | Element not found: 일괄삭제 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-32 | 일괄삭제 취소 | - | Element not found: 취소 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-33 | 일괄삭제 재시도 | - | Element not found: 일괄삭제 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-34 | 일괄삭제 확인 | - | Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-36 | 단일 삭제 테스트 준비 | - | Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page]; Element not found: 등록 버튼 (모달 내) | +| step-37 | 단일 삭제 아이콘 클릭 | - | Element not found: 신규 등록 행의 삭제 아이콘 [context: btn:79,input:1,text:not-on-page] | +| step-38 | 단일 삭제 확인 | - | Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-40 | 필터 기능 테스트 - 거래유형 | - | Element not found: 거래유형 필터 [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 [context | +| step-41 | 필터 기능 테스트 - 지급상태 | - | Element not found: 지급상태 필터 [context: btn:79,input:1,text:not-on-page]; Select not found: 옵션 [context | +| step-42 | 필터 초기화 | - | Element not found: 거래유형 필터 [context: btn:79,input:1,text:not-on-page]; Dropdown option "undefined" n | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 507ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 2단계 메뉴 진입: 회계관리 > 예상비용 | - | ❌ | 12179ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / scrollAndFind: "예상비용" not found aft | +| step-2 | 페이지 구조 확인 | - | ⚠️ | 1510ms | Element not found: 페이지 구조 | +| step-3 | 기간 설정 (2년) | - | ❌ | 4062ms | Element not found: 기간 선택 버튼 [context: btn:79,input:1,text:not-on-page] / Unknown | +| step-4 | 초기 데이터 확인 | - | ⚠️ | 1525ms | Element not found: 테이블 데이터 및 통계 | +| step-5 | 등록 버튼 클릭 | - | ❌ | 2533ms | Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 100 | +| step-6 | 등록 모달 필드 확인 | - | ⚠️ | 1523ms | Element not found: 모달 입력 필드 | +| step-7 | 예상 지급일 입력 | - | ❌ | 1511ms | Element not found: 예상 지급일 필드 [context: btn:79,input:1,text:not-on-page] / Unknow | +| step-8 | 결제일 입력 | - | ❌ | 1524ms | Element not found: 결제일 필드 [context: btn:79,input:1,text:not-on-page] / Unknown a | +| step-9 | 거래유형 선택 | - | ❌ | 3024ms | Element not found: 거래유형 Select [context: btn:79,input:1,text:not-on-page] / Sele | +| step-10 | 거래처 입력 | - | ❌ | 5569ms | Element not found: 거래처 Combobox [context: btn:79,input:1,text:found-on-page] / I | +| step-11 | 지출금액 입력 | - | ❌ | 4556ms | Element not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page] / Input no | +| step-12 | 계좌 선택 | - | ❌ | 3067ms | Element not found: 계좌 Select [context: btn:79,input:1,text:found-on-page] / Sele | +| step-13 | 계정과목 선택 | - | ❌ | 3053ms | Element not found: 계정과목 Select [context: btn:79,input:1,text:not-on-page] / Sele | +| step-14 | 적요 입력 | - | ❌ | 3027ms | Element not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page] / Input n | +| step-15 | 등록 버튼 클릭 및 저장 | - | ❌ | 2527ms | Element not found: 등록 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] / Wai | +| step-16 | 등록 결과 확인 | - | ⚠️ | 2523ms | Waited 1000ms / Element not found: 신규 데이터 행 | +| step-17 | 수정 아이콘 클릭 | - | ❌ | 2517ms | Element not found: 신규 등록 행의 수정 아이콘 [context: btn:79,input:1,text:not-on-page] / | +| step-18 | 지출금액 수정 | - | ❌ | 4571ms | Element not found: 지출금액 필드 [context: btn:79,input:1,text:not-on-page] / Input no | +| step-19 | 적요 수정 | - | ❌ | 4556ms | Element not found: 적요/메모 필드 [context: btn:79,input:1,text:not-on-page] / Input n | +| step-20 | 수정 버튼 클릭 및 저장 | - | ❌ | 2519ms | Element not found: 수정 버튼 (모달 내) [context: btn:79,input:1,text:not-on-page] / Wai | +| step-21 | 수정 결과 확인 | - | ⚠️ | 2528ms | Waited 1000ms / Element not found: 수정된 데이터 행 | +| step-22 | 체크박스 선택 (단일) | - | ❌ | 1515ms | Element not found: 수정된 행의 체크박스 [context: btn:79,input:1,text:not-on-page] | +| step-23 | 예상 지급일 변경 버튼 클릭 | - | ❌ | 2528ms | Element not found: 예상 지급일 변경 버튼 [context: btn:79,input:1,text:not-on-page] / Wai | +| step-24 | 새로운 예상 지급일 선택 | - | ❌ | 1521ms | Element not found: 날짜 선택 필드 [context: btn:79,input:1,text:not-on-page] / Unknown | +| step-25 | 예상 지급일 변경 확인 | - | ❌ | 2532ms | Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 100 | +| step-26 | 예상 지급일 변경 결과 확인 | - | ⚠️ | 2522ms | Waited 1000ms / Element not found: 변경된 데이터 행 | +| step-27 | 전자결재 버튼 클릭 | - | ❌ | 4050ms | Element not found: 체크박스 선택 상태 (여전히 선택됨) / Element not found: 전자결재 버튼 [context: b | +| step-28 | 전자결재 결과 확인 | - | ⚠️ | 2523ms | Waited 1000ms / Element not found: 전자결재 상태 컬럼 | +| step-29 | 추가 데이터 등록 (일괄삭제 테스트용) | - | ❌ | 5046ms | Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 100 | +| step-30 | 복수 체크박스 선택 | - | ❌ | 3034ms | Element not found: 첫 번째 테스트 데이터 체크박스 [context: btn:79,input:1,text:not-on-page] | +| step-31 | 일괄삭제 버튼 클릭 | - | ❌ | 2530ms | Element not found: 일괄삭제 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 1 | +| step-32 | 일괄삭제 취소 | - | ❌ | 1519ms | Element not found: 취소 버튼 [context: btn:79,input:1,text:not-on-page] | +| step-33 | 일괄삭제 재시도 | - | ❌ | 2517ms | Element not found: 일괄삭제 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 1 | +| step-34 | 일괄삭제 확인 | - | ❌ | 2545ms | Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 100 | +| step-35 | 일괄삭제 결과 확인 | - | ⚠️ | 2527ms | Waited 1000ms / Element not found: 삭제된 행 부재 | +| step-36 | 단일 삭제 테스트 준비 | - | ❌ | 4047ms | Element not found: 등록 버튼 [context: btn:79,input:1,text:not-on-page] / Unknown ac | +| step-37 | 단일 삭제 아이콘 클릭 | - | ❌ | 2521ms | Element not found: 신규 등록 행의 삭제 아이콘 [context: btn:79,input:1,text:not-on-page] / | +| step-38 | 단일 삭제 확인 | - | ❌ | 2527ms | Element not found: 확인 버튼 [context: btn:79,input:1,text:not-on-page] / Waited 100 | +| step-39 | 단일 삭제 결과 확인 | - | ⚠️ | 2536ms | Waited 1000ms / Element not found: 삭제된 행 부재 | +| step-40 | 필터 기능 테스트 - 거래유형 | - | ❌ | 4047ms | Element not found: 거래유형 필터 [context: btn:79,input:1,text:not-on-page] / Select n | +| step-41 | 필터 기능 테스트 - 지급상태 | - | ❌ | 4041ms | Element not found: 지급상태 필터 [context: btn:79,input:1,text:not-on-page] / Select n | +| step-42 | 필터 초기화 | - | ❌ | 9136ms | Element not found: 거래유형 필터 [context: btn:79,input:1,text:not-on-page] / Dropdown | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 8 | 8 | 0 | 111ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/expected-expenses | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_expected-expenses_2026-03-07_21-21-04.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1384 | +| 테이블 행 | 30 | +| API 호출 수 | 8 | +| 로딩 스피너 | No | diff --git a/Fail-faq_2026-03-07_21-21-17.md b/Fail-faq_2026-03-07_21-21-17.md new file mode 100644 index 0000000..017109e --- /dev/null +++ b/Fail-faq_2026-03-07_21-21-17.md @@ -0,0 +1,51 @@ +# ❌ E2E 테스트 실패: FAQ 테스트 + +**테스트 ID**: faq | **실행**: 2026-03-07_21-21-17 | **결과**: FAIL +**소요 시간**: 12.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 8 | 7 | 1 | 0 | 88% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 고객센터 메뉴 진입 | - | Element not found: FAQ [context: btn:29,input:1] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 516ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 고객센터 메뉴 진입 | - | ❌ | 2642ms | Found: 고객센터 / Clicked: 고객센터 / Waited 500ms / Element not found: FAQ [context: bt | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 카테고리 탭 전환 - 계정 | - | ✅ | 728ms | Clicked: 계정 / Waited 300ms | +| step-4 | 필수 검증 #3: 카테고리 탭 전환 - 서비스 | - | ✅ | 722ms | Clicked: 서비스 / Waited 300ms | +| step-5 | 전체 탭으로 복귀 | - | ✅ | 720ms | Clicked: 전체 / Waited 300ms | +| step-6 | FAQ 항목 펼치기 | - | ✅ | 416ms | Clicked: FAQ 사용방법 | +| step-7 | FAQ 항목 접기 | - | ✅ | 417ms | Clicked: FAQ 사용방법 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/customer-center/faq | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_faq_2026-03-07_21-21-17.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 355 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-free-board_2026-03-07_21-21-48.md b/Fail-free-board_2026-03-07_21-21-48.md new file mode 100644 index 0000000..12e49de --- /dev/null +++ b/Fail-free-board_2026-03-07_21-21-48.md @@ -0,0 +1,73 @@ +# ❌ E2E 테스트 실패: 자유게시판 E2E 테스트 + +**테스트 ID**: free-board | **실행**: 2026-03-07_21-21-48 | **결과**: FAIL +**소요 시간**: 30.9초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 25 | 19 | 3 | 3 | 76% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 14 | 정렬 복원 (최신순) | - | Dropdown option "최신순" not found [context: btn:70,input:1] | +| 16 | 게시글 작성 페이지 진입 확인 | - | URL pattern mismatch: /ko/boards/free/create | +| 24 | 게시글 등록 완료 (URL 안정성 검증) | - | URL pattern mismatch: /ko/boards/free/\d+ | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 초기화 | - | ✅ | 515ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 게시판 > 자유게시판 | - | ✅ | 2544ms | Found: 게시판 / Clicked: 게시판 / Waited 500ms / Clicked: 자유게시판 / Waited 1000ms | +| 2 | 초기 게시글 목록 확인 | - | ✅ | 0ms | Table: 7 cols, 10 rows | +| 3 | 게시글 총 건수 확인 | - | ✅ | 1ms | Text pattern found: 총 \d+건 | +| 4 | 검색 기능 확인 (검색창 존재) | - | ✅ | 0ms | Element exists: input[placeholder*='제목'] | +| 5 | 필터 드롭다운 확인 (상태) | - | ⚠️ | 1514ms | Element not found: select, [role='combobox']:has-text('상태') | +| 6 | 정렬 드롭다운 확인 | - | ✅ | 1ms | Element exists: select, [role='combobox']:has-text('최신순') | +| 7 | 날짜 범위 선택기 확인 | - | ⚠️ | 1502ms | Count 0 < 2: input[type='date'] | +| 8 | 검색 테스트 (제목) | - | ✅ | 1212ms | Filled "input[placeholder*='제목']" with "테스트" | +| 9 | 검색 결과 확인 | - | ✅ | 0ms | Table: 7 cols, 1 rows | +| 10 | 검색어 초기화 | - | ✅ | 205ms | Filled "input[placeholder*='제목']" with "" | +| 11 | 상태 필터 테스트 (게시됨) | - | ✅ | 807ms | Selected dropdown: 게시됨 | +| 12 | 상태 필터 초기화 (전체) | - | ✅ | 807ms | Selected dropdown: 전체 | +| 13 | 정렬 변경 (오래된순) | - | ✅ | 818ms | Selected dropdown: 오래된순 | +| 14 | 정렬 복원 (최신순) | - | ❌ | 3019ms | Dropdown option "최신순" not found [context: btn:70,input:1] | +| 15 | 글쓰기 버튼 클릭 | - | ✅ | 412ms | Clicked: button:has-text('글쓰기') | +| 16 | 게시글 작성 페이지 진입 확인 | - | ❌ | 1508ms | URL pattern mismatch: /ko/boards/free/create | +| 17 | 제목 필드 확인 | - | ✅ | 0ms | Element exists: input#title | +| 18 | 내용 필드 확인 | - | ✅ | 1ms | Element exists: textarea#content | +| 19 | 비밀글 체크박스 확인 | - | ⚠️ | 1511ms | Element not found: input#isSecret | +| 20 | 게시글 제목 입력 | - | ✅ | 222ms | Filled "input#title" with "E2E 테스트 게시글" | +| 21 | 게시글 내용 입력 | - | ✅ | 217ms | Filled "textarea#content" with "이것은 E2E 자동화 테스트를 위한 게시글입니다." | +| 22 | 현재 URL 저장 (등록 전) | - | ✅ | 0ms | Saved URL → url_before_submit | +| 23 | 게시글 등록 버튼 클릭 | - | ✅ | 415ms | Clicked: button:has-text('등록') | +| 24 | 게시글 등록 완료 (URL 안정성 검증) | - | ❌ | 7545ms | URL pattern mismatch: /ko/boards/free/\d+ | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 11 | 11 | 0 | 57ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/boards/free | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_free-board_2026-03-07_21-21-47.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 424 | +| 테이블 행 | 0 | +| API 호출 수 | 11 | +| 로딩 스피너 | No | diff --git a/Fail-inspection-management_2026-03-07_21-22-33.md b/Fail-inspection-management_2026-03-07_21-22-33.md new file mode 100644 index 0000000..ca5b6a1 --- /dev/null +++ b/Fail-inspection-management_2026-03-07_21-22-33.md @@ -0,0 +1,66 @@ +# ❌ E2E 테스트 실패: 검사관리 테스트 + +**테스트 ID**: inspection-management | **실행**: 2026-03-07_21-22-33 | **결과**: FAIL +**소요 시간**: 45.7초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 15 | 9 | 6 | 0 | 60% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 품질관리 메뉴 진입 | - | Element not found: 검사관리 [context: btn:81,input:1,text:not-on-page] | +| step-4 | 필수 검증 #2: 검사 등록 모달 열기 | - | Timeout waiting for modal [context: btn:81,input:1,text:found-on-page] | +| step-5 | 검사 등록 폼 입력 | - | Dropdown option "{testData.inspection.worker}" not found [context: btn:81,input:1,text:not-on-page]; | +| step-8 | 등록된 검사 상세 열기 | - | Row with "undefined" not found | +| step-9 | 검사 정보 수정 | - | Element not found: 수정 [context: btn:28,input:24,text:not-on-page]; Input not found: 특이사항 [context: b | +| step-11 | 검사 삭제 준비 | - | Row with "undefined" not found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 503ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 품질관리 메뉴 진입 | - | ❌ | 2631ms | Found: 품질관리 / Clicked: 품질관리 / Waited 500ms / Element not found: 검사관리 [context: b | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 탭 기능 확인 | - | ✅ | 2576ms | Clicked: 대기 / Waited 300ms / Clicked: 진행중 / Waited 300ms / Clicked: 완료 / Waited | +| step-4 | 필수 검증 #2: 검사 등록 모달 열기 | - | ❌ | 16843ms | Timeout waiting for modal [context: btn:81,input:1,text:found-on-page] | +| step-5 | 검사 등록 폼 입력 | - | ❌ | 9298ms | Filled "수량" with "{testData.inspection.quantity}" / Dropdown option "{testData.i | +| step-6 | 필수 검증 #2: 검사 등록 저장 | - | ✅ | 411ms | Clicked: 등록 | +| step-7 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-8 | 등록된 검사 상세 열기 | - | ❌ | 1511ms | Row with "undefined" not found | +| step-9 | 검사 정보 수정 | - | ❌ | 3451ms | Element not found: 수정 [context: btn:28,input:24,text:not-on-page] / Input not fo | +| step-10 | 필수 검증 #4: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-11 | 검사 삭제 준비 | - | ❌ | 1527ms | Row with "undefined" not found | +| step-12 | 검사 삭제 | - | ✅ | 409ms | Clicked: 삭제 | +| step-13 | 삭제 확인 | - | ✅ | 414ms | Clicked: 확인 | +| step-14 | 필수 검증 #4: 삭제 데이터 반영 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 3 | 3 | 0 | 90ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/quality/inspections | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_inspection-management_2026-03-07_21-22-33.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 502 | +| 테이블 행 | 0 | +| API 호출 수 | 3 | +| 로딩 스피너 | No | diff --git a/Fail-inspection-management_2026-03-07_23-03-26.md b/Fail-inspection-management_2026-03-07_23-03-26.md new file mode 100644 index 0000000..993b912 --- /dev/null +++ b/Fail-inspection-management_2026-03-07_23-03-26.md @@ -0,0 +1,81 @@ +# ❌ E2E 테스트 실패: 제품검사관리 CRUD 테스트 + +**테스트 ID**: inspection-management | **실행**: 2026-03-07_23-03-26 | **결과**: FAIL +**소요 시간**: 28.7초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 26 | 16 | 10 | 0 | 62% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 10 | [CREATE] 수량 입력 | CREATE | Input not found: input[name*='quantity'], input[placeholder*='수량'] [context: btn:28,input:24,text:no | +| 11 | [CREATE] 작업자 선택 | CREATE | Dropdown option "홍킬동" not found [context: btn:28,input:24,text:not-on-page] | +| 12 | [CREATE] 특이사항 입력 | CREATE | Input not found: textarea, input[name*='note'], input[placeholder*='특이'] [context: btn:28,input:24,t | +| 16 | [READ] 등록된 검사 행 클릭 | READ | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 17 | [UPDATE] 수정 버튼 클릭 | UPDATE | Button "수정" not found [context: btn:28,input:24,text:not-on-page] | +| 18 | [UPDATE] 특이사항 수정 | UPDATE | Input not found: textarea, input[name*='note'], input[placeholder*='특이'] [context: btn:28,input:24,t | +| 19 | [UPDATE] 수정 저장 | UPDATE | Button "저장" not found [context: btn:28,input:24,text:not-on-page] | +| 22 | [DELETE] 삭제할 검사 행 클릭 | DELETE | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 23 | [DELETE] 삭제 버튼 클릭 | DELETE | Button "삭제" not found [context: btn:28,input:24,text:not-on-page] | +| 24 | [DELETE] 삭제 확인 | DELETE | No dialog found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 품질관리 > 제품검사관리 | - | ✅ | 508ms | Menu navigation: 품질관리 > 제품검사관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3001ms | Waited 3000ms | +| 3 | URL 검증 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/quality/inspections | +| 4 | 목업 감지 | - | ✅ | 0ms | Real page: 1 inputs, 81 buttons | +| 5 | 테이블 로드 대기 | - | ✅ | 0ms | Table loaded: 1 rows | +| 6 | 페이지 구조 확인 | - | ✅ | 1ms | Element exists: table | +| 7 | 탭 필터 - 전체 | - | ✅ | 418ms | Clicked: 전체 | +| 8 | 탭 대기 | - | ✅ | 501ms | Waited 500ms | +| 9 | [CREATE] 검사 등록 버튼 클릭 | CREATE | ✅ | 302ms | Clicked button: 검사 등록 | +| 10 | [CREATE] 수량 입력 | CREATE | ❌ | 1515ms | Input not found: input[name*='quantity'], input[placeholder*='수량'] [context: btn | +| 11 | [CREATE] 작업자 선택 | CREATE | ❌ | 3054ms | Dropdown option "홍킬동" not found [context: btn:28,input:24,text:not-on-page] | +| 12 | [CREATE] 특이사항 입력 | CREATE | ❌ | 1511ms | Input not found: textarea, input[name*='note'], input[placeholder*='특이'] [contex | +| 13 | [CREATE] 등록 저장 | CREATE | ✅ | 306ms | Clicked button: 등록 | +| 14 | [CREATE] 모달 닫기 확인 | CREATE | ✅ | 0ms | No modal open | +| 15 | [CREATE] 등록 데이터 반영 확인 | CREATE | ✅ | 0ms | No text to verify | +| 16 | [READ] 등록된 검사 행 클릭 | READ | ❌ | 1520ms | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 17 | [UPDATE] 수정 버튼 클릭 | UPDATE | ❌ | 1527ms | Button "수정" not found [context: btn:28,input:24,text:not-on-page] | +| 18 | [UPDATE] 특이사항 수정 | UPDATE | ❌ | 1513ms | Input not found: textarea, input[name*='note'], input[placeholder*='특이'] [contex | +| 19 | [UPDATE] 수정 저장 | UPDATE | ❌ | 1511ms | Button "저장" not found [context: btn:28,input:24,text:not-on-page] | +| 20 | [UPDATE] 모달 닫기 확인 | UPDATE | ✅ | 0ms | No modal open | +| 21 | [UPDATE] 수정 데이터 반영 확인 | UPDATE | ✅ | 0ms | No text to verify | +| 22 | [DELETE] 삭제할 검사 행 클릭 | DELETE | ❌ | 1510ms | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 23 | [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 1509ms | Button "삭제" not found [context: btn:28,input:24,text:not-on-page] | +| 24 | [DELETE] 삭제 확인 | DELETE | ❌ | 2421ms | No dialog found | +| 25 | [DELETE] 모달 닫기 확인 | DELETE | ✅ | 0ms | No modal open | +| 26 | [DELETE] 삭제 데이터 반영 확인 | DELETE | ✅ | 0ms | No text to verify | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 11ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/quality/inspections | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_inspection-management_2026-03-07_23-03-26.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 502 | +| 테이블 행 | 0 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-inspection-management_2026-03-08_09-09-18.md b/Fail-inspection-management_2026-03-08_09-09-18.md new file mode 100644 index 0000000..ba5f8bc --- /dev/null +++ b/Fail-inspection-management_2026-03-08_09-09-18.md @@ -0,0 +1,113 @@ +# ❌ E2E 테스트 실패: 제품검사관리 CRUD 테스트 + +**테스트 ID**: inspection-management | **실행**: 2026-03-08_09-09-18 | **결과**: FAIL +**소요 시간**: 24.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 25 | 17 | 8 | 0 | 68% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 10 | [CREATE] 검사 정보 입력 (fill_form) | CREATE | fill_form: no fields filled (2 not found) | +| 16 | [READ] 등록된 검사 행 클릭 | READ | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 17 | [UPDATE] 수정 버튼 클릭 | UPDATE | Button "수정" not found [context: btn:28,input:24,text:not-on-page] | +| 18 | [UPDATE] 특이사항 수정 | UPDATE | fill_form: no fields filled (1 not found) | +| 19 | [UPDATE] 수정 저장 | UPDATE | Button "저장" not found [context: btn:28,input:24,text:not-on-page] | +| 22 | [DELETE] 삭제할 검사 행 클릭 | DELETE | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 23 | [DELETE] 삭제 버튼 클릭 | DELETE | Button "삭제" not found [context: btn:28,input:24,text:not-on-page] | +| 24 | [DELETE] 삭제 확인 | DELETE | No dialog found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 메뉴 진입: 품질관리 > 제품검사관리 | - | ✅ | 507ms | Menu navigation: 품질관리 > 제품검사관리 | +| 2 | 페이지 로드 대기 | - | ✅ | 3002ms | Waited 3000ms | +| 3 | URL 검증 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/quality/inspections | +| 4 | 목업 감지 | - | ✅ | 1ms | Real page: 1 inputs, 81 buttons | +| 5 | 테이블 로드 대기 | - | ✅ | 0ms | Table loaded: 1 rows | +| 6 | 페이지 구조 확인 | - | ✅ | 0ms | Element exists: table | +| 7 | 탭 필터 - 전체 | - | ✅ | 410ms | Clicked: 전체 | +| 8 | 탭 대기 | - | ✅ | 500ms | Waited 500ms | +| 9 | [CREATE] 검사 등록 버튼 클릭 | CREATE | ✅ | 313ms | Clicked button: 검사 등록 | +| 10 | [CREATE] 검사 정보 입력 (fill_form) | CREATE | ❌ | 1514ms | fill_form: no fields filled (2 not found) | +| 11 | [CREATE] 작업자 선택 | CREATE | ✅ | 0ms | json_fail:Unexpected token 'N', "No combobox found" is not valid JSON/raw:No com | +| 13 | [CREATE] 등록 저장 | CREATE | ✅ | 314ms | Clicked button: 등록 | +| 14 | [CREATE] 모달 닫기 확인 | CREATE | ✅ | 0ms | No modal open | +| 15 | [CREATE] 등록 데이터 반영 확인 | CREATE | ✅ | 1ms | No text to verify | +| 16 | [READ] 등록된 검사 행 클릭 | READ | ❌ | 1528ms | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 17 | [UPDATE] 수정 버튼 클릭 | UPDATE | ❌ | 1511ms | Button "수정" not found [context: btn:28,input:24,text:not-on-page] | +| 18 | [UPDATE] 특이사항 수정 | UPDATE | ❌ | 1512ms | fill_form: no fields filled (1 not found) | +| 19 | [UPDATE] 수정 저장 | UPDATE | ❌ | 1521ms | Button "저장" not found [context: btn:28,input:24,text:not-on-page] | +| 20 | [UPDATE] 모달 닫기 확인 | UPDATE | ✅ | 0ms | No modal open | +| 21 | [UPDATE] 수정 데이터 반영 확인 | UPDATE | ✅ | 0ms | No text to verify | +| 22 | [DELETE] 삭제할 검사 행 클릭 | DELETE | ❌ | 1518ms | Row with "홍킬동" not found [context: btn:28,input:24,text:found-on-page] | +| 23 | [DELETE] 삭제 버튼 클릭 | DELETE | ❌ | 1517ms | Button "삭제" not found [context: btn:28,input:24,text:not-on-page] | +| 24 | [DELETE] 삭제 확인 | DELETE | ❌ | 2436ms | No dialog found | +| 25 | [DELETE] 모달 닫기 확인 | DELETE | ✅ | 0ms | No modal open | +| 26 | [DELETE] 삭제 데이터 반영 확인 | DELETE | ✅ | 0ms | No text to verify | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 12ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/quality/inspections | + +### 콘솔 에러 (Health Check) +1. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +2. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +3. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` +4. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +5. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_inspection-management_2026-03-08_09-09-18.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 콘솔 에러 (진단) +1. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +2. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +3. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` +4. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +5. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +6. `CardManagement API Error: TypeError: Failed to fetch + at i (https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:35386) + at https://dev.codebridge-x.com/_next/static/chun` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 502 | +| 테이블 행 | 0 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-inventory-status_2026-03-07_21-22-52.md b/Fail-inventory-status_2026-03-07_21-22-52.md new file mode 100644 index 0000000..631ba33 --- /dev/null +++ b/Fail-inventory-status_2026-03-07_21-22-52.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: 재고현황 테스트 + +**테스트 ID**: inventory-status | **실행**: 2026-03-07_21-22-52 | **결과**: FAIL +**소요 시간**: 18.9초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 11 | 7 | 4 | 0 | 64% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 자재관리 메뉴 진입 | - | Element not found: 재고현황 [context: btn:37,input:1,text:not-on-page] | +| step-3 | 필수 검증 #3: 품목유형 탭 필터 - 원자재 | - | Element not found: 원자재 [context: btn:37,input:1,text:not-on-page] | +| step-4 | 필수 검증 #3: 품목유형 탭 필터 - 부자재 | - | Element not found: 부자재 [context: btn:37,input:1,text:not-on-page] | +| step-5 | 필수 검증 #3: 품목유형 탭 필터 - 소모품 | - | Element not found: 소모품 [context: btn:37,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 506ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 자재관리 메뉴 진입 | - | ❌ | 2647ms | Found: 자재관리 / Clicked: 자재관리 / Waited 500ms / Element not found: 재고현황 [context: b | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 품목유형 탭 필터 - 원자재 | - | ❌ | 2026ms | Element not found: 원자재 [context: btn:37,input:1,text:not-on-page] / Waited 500ms | +| step-4 | 필수 검증 #3: 품목유형 탭 필터 - 부자재 | - | ❌ | 2035ms | Element not found: 부자재 [context: btn:37,input:1,text:not-on-page] / Waited 500ms | +| step-5 | 필수 검증 #3: 품목유형 탭 필터 - 소모품 | - | ❌ | 2018ms | Element not found: 소모품 [context: btn:37,input:1,text:not-on-page] / Waited 500ms | +| step-6 | 전체 탭으로 복귀 | - | ✅ | 711ms | Clicked: 전체 / Waited 300ms | +| step-7 | 필수 검증 #1: 엑셀 다운로드 | - | ✅ | 1425ms | Clicked: 엑셀 다운로드 / Waited 1000ms | +| step-8 | 재고 상세 열기 | - | ✅ | 0ms | eval_type:undefined/isPromise:false/val:undefined | +| step-9 | 상세 닫기 | - | ✅ | 515ms | Pressed key: Escape / Waited 300ms | +| step-10 | 페이지네이션 확인 | - | ✅ | 918ms | Clicked: 다음 / Waited 500ms | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 1 | 1 | 0 | 82ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/material/stock-status | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_inventory-status_2026-03-07_21-22-52.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 579 | +| 테이블 행 | 1 | +| API 호출 수 | 1 | +| 로딩 스피너 | No | diff --git a/Fail-item-management_2026-03-07_21-23-32.md b/Fail-item-management_2026-03-07_21-23-32.md new file mode 100644 index 0000000..321b1e4 --- /dev/null +++ b/Fail-item-management_2026-03-07_21-23-32.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: undefined + +**테스트 ID**: item-management | **실행**: 2026-03-07_21-23-32 | **결과**: FAIL +**소요 시간**: 39.7초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 11 | 1 | 1 | 9 | 9% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 10 | ⚠️ 필수 검증: 검색 기능 테스트 | - | Input not found: textbox:품목코드, 품목명, 규격 검색... [context: btn:46,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7269ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| 1 | 2단계 메뉴 진입: 생산관리 > 품목관리 | - | ✅ | 11734ms | Found: 생산관리 / Clicked: 생산관리 / Waited 500ms / Found: 품목관리 / Clicked: 품목관리 / Waite | +| 2 | 통계 카드 표시 확인 | - | ⚠️ | 1514ms | Element not found: statistics-cards | +| 3 | 품목 등록 버튼 표시 확인 | - | ⚠️ | 1517ms | Element not found: button:품목 등록 | +| 4 | 검색 입력 필드 표시 확인 | - | ⚠️ | 1520ms | Element not found: textbox:품목코드, 품목명, 규격 검색... | +| 5 | 탭 필터 버튼 표시 확인 | - | ⚠️ | 1516ms | Element not found: tab-buttons | +| 6 | 데이터 테이블 헤더 확인 | - | ⚠️ | 1502ms | Element not found: table-headers | +| 7 | 데이터 행 표시 확인 | - | ⚠️ | 1517ms | Element not found: table-rows | +| 8 | 페이지네이션 표시 확인 | - | ⚠️ | 1502ms | Element not found: pagination | +| 9 | 액션 버튼 표시 확인 (첫 번째 행) | - | ⚠️ | 1518ms | Element not found: row[1]:action-buttons | +| 10 | ⚠️ 필수 검증: 검색 기능 테스트 | - | ❌ | 2510ms | Captured count: 0 / Input not found: textbox:품목코드, 품목명, 규격 검색... [context: btn:4 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 107ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_item-management_2026-03-07_21-23-32.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 786 | +| 테이블 행 | 0 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-item-management_2026-03-07_23-03-40.md b/Fail-item-management_2026-03-07_23-03-40.md new file mode 100644 index 0000000..26137b9 --- /dev/null +++ b/Fail-item-management_2026-03-07_23-03-40.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 품목관리 테스트 + +**테스트 ID**: item-management | **실행**: 2026-03-07_23-03-40 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 생산관리 > 스크린 생산 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-item-standard-management_2026-03-07_21-23-45.md b/Fail-item-standard-management_2026-03-07_21-23-45.md new file mode 100644 index 0000000..e29691e --- /dev/null +++ b/Fail-item-standard-management_2026-03-07_21-23-45.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 품목기준관리 테스트 + +**테스트 ID**: item-standard-management | **실행**: 2026-03-07_21-23-45 | **결과**: FAIL +**소요 시간**: 13.4초 | **에러**: Menu navigation failed: 기준정보 관리 > 품목기준관리 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-leave-policy_2026-03-07_21-24-10.md b/Fail-leave-policy_2026-03-07_21-24-10.md new file mode 100644 index 0000000..5b3d769 --- /dev/null +++ b/Fail-leave-policy_2026-03-07_21-24-10.md @@ -0,0 +1,56 @@ +# ❌ E2E 테스트 실패: 설정 - 휴가정책 + +**테스트 ID**: leave-policy | **실행**: 2026-03-07_21-24-10 | **결과**: FAIL +**소요 시간**: 24.5초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 13 | 2 | 1 | 10 | 15% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 12 | 기준 셀렉트 클릭 | - | Element not found: 기준 셀렉트 [context: btn:26,input:5,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 준비 | - | ⚠️ | 510ms | Unknown action type: execute / Waited 500ms | +| 1 | 2단계 메뉴 진입: 설정 > 휴가관리 | - | ✅ | 2757ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 휴가관리 / Clicked: 휴가관리 / Waited 10 | +| 2 | 로딩 스피너 표시 확인 | - | ⚠️ | 1513ms | Element not found: loading | +| 3 | 페이지 제목 확인 | - | ⚠️ | 1523ms | Element not found: heading | +| 4 | 설명 텍스트 확인 | - | ⚠️ | 1505ms | Element not found: description | +| 5 | 저장 버튼 확인 | - | ✅ | 0ms | Element exists: button | +| 6 | 기준 설정 카드 확인 | - | ⚠️ | 1528ms | Element not found: card | +| 7 | 연차 설정 카드 확인 | - | ⚠️ | 1512ms | Element not found: card | +| 8 | 이월 설정 카드 확인 | - | ⚠️ | 1508ms | Element not found: card | +| 9 | 초기 기준 타입 확인 | - | ⚠️ | 1515ms | Element not found: combobox | +| 10 | 초기 기준일 - 월 확인 | - | ⚠️ | 1512ms | Element not found: combobox | +| 11 | 초기 기준일 - 일 확인 | - | ⚠️ | 1514ms | Element not found: combobox | +| 12 | 기준 셀렉트 클릭 | - | ❌ | 1515ms | Element not found: 기준 셀렉트 [context: btn:26,input:5,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/leave-policy | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_leave-policy_2026-03-07_21-24-10.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 425 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-login-test_2026-03-07_21-24-42.md b/Fail-login-test_2026-03-07_21-24-42.md new file mode 100644 index 0000000..015e9cf --- /dev/null +++ b/Fail-login-test_2026-03-07_21-24-42.md @@ -0,0 +1,96 @@ +# ❌ E2E 테스트 실패: 로그인 테스트 (끝판왕) + +**테스트 ID**: login-test | **실행**: 2026-03-07_21-24-42 | **결과**: FAIL +**소요 시간**: 32.4초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 23 | 10 | 12 | 1 | 43% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 5 | 비밀번호 표시/숨김 토글 테스트 | - | Element not found: passwordToggle [context: btn:46,input:0] | +| 6 | 비밀번호 숨김 복원 | - | Element not found: passwordToggle [context: btn:46,input:0] | +| 7 | 로그인 실패 테스트 - 빈 필드 | - | Element not found: loginButton [context: btn:46,input:0] | +| 8 | 아이디 입력 | - | Input not found: usernameInput [context: btn:46,input:0] | +| 9 | 로그인 실패 테스트 - 잘못된 비밀번호 | - | Input not found: passwordInput [context: btn:46,input:0] | +| 10 | 잘못된 비밀번호로 로그인 시도 | - | Element not found: loginButton [context: btn:46,input:0] | +| 11 | 비밀번호 필드 초기화 | - | Input not found: passwordInput [context: btn:46,input:0] | +| 12 | 올바른 비밀번호 입력 | - | Input not found: passwordInput [context: btn:46,input:0] | +| 13 | 필수 검증 #2: 로그인 버튼 클릭 | - | Element not found: loginButton [context: btn:46,input:0] | +| 19 | 로그아웃 버튼 클릭 | - | Element not found: logoutButton [context: btn:46,input:0] | +| 20 | 로그아웃 후 로그인 페이지 확인 | - | URL missing: /login | +| 22 | 재로그인 테스트 | - | Input not found: usernameInput [context: btn:46,input:0]; Input not found: passwordInput [context: b | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 로그인 페이지 접속 | - | ✅ | 1ms | Navigate to /ko/login | +| 2 | 필수 검증 #5: 목업 페이지 감지 | - | ⚠️ | 1510ms | Possible mockup page (score: 2) | +| 3 | UI 요소 검증 - 입력 필드 | - | ✅ | 0ms | Checks: 1/3 verified | +| 4 | UI 요소 검증 - 옵션 | - | ✅ | 0ms | Checks: 1/3 verified | +| 5 | 비밀번호 표시/숨김 토글 테스트 | - | ❌ | 1516ms | Element not found: passwordToggle [context: btn:46,input:0] | +| 6 | 비밀번호 숨김 복원 | - | ❌ | 1512ms | Element not found: passwordToggle [context: btn:46,input:0] | +| 7 | 로그인 실패 테스트 - 빈 필드 | - | ❌ | 1507ms | Element not found: loginButton [context: btn:46,input:0] | +| 8 | 아이디 입력 | - | ❌ | 1514ms | Input not found: usernameInput [context: btn:46,input:0] | +| 9 | 로그인 실패 테스트 - 잘못된 비밀번호 | - | ❌ | 1522ms | Input not found: passwordInput [context: btn:46,input:0] | +| 10 | 잘못된 비밀번호로 로그인 시도 | - | ❌ | 1519ms | Element not found: loginButton [context: btn:46,input:0] | +| 11 | 비밀번호 필드 초기화 | - | ❌ | 1518ms | Input not found: passwordInput [context: btn:46,input:0] | +| 12 | 올바른 비밀번호 입력 | - | ❌ | 1518ms | Input not found: passwordInput [context: btn:46,input:0] | +| 13 | 필수 검증 #2: 로그인 버튼 클릭 | - | ❌ | 1505ms | Element not found: loginButton [context: btn:46,input:0] | +| 14 | 대시보드 페이지 확인 | - | ✅ | 2005ms | Navigation ok: https://dev.codebridge-x.com/dashboard | +| 15 | 사용자 정보 표시 확인 | - | ✅ | 0ms | Checks: 3/3 verified | +| 16 | 세션 유지 확인 - 페이지 새로고침 | - | ✅ | 1ms | Page reload | +| 17 | 새로고침 후 대시보드 유지 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/dashboard | +| 18 | 사용자 프로필 메뉴 열기 | - | ✅ | 412ms | Clicked: userProfileButton | +| 19 | 로그아웃 버튼 클릭 | - | ❌ | 1503ms | Element not found: logoutButton [context: btn:46,input:0] | +| 20 | 로그아웃 후 로그인 페이지 확인 | - | ❌ | 1504ms | URL missing: /login | +| 21 | 로그아웃 후 보호된 페이지 접근 시도 | - | ✅ | 1ms | Navigate to /ko/dashboard | +| 22 | 재로그인 테스트 | - | ❌ | 4553ms | Input not found: usernameInput [context: btn:46,input:0] / Input not found: pass | +| 23 | 최종 확인 - 대시보드 진입 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/dashboard | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_login-test_2026-03-07_21-24-42.png | + +### 콘솔 에러 (진단) +1. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +2. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +3. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +4. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` +5. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +6. `CardManagement API Error: TypeError: Failed to fetch + at i (https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:35386) + at https://dev.codebridge-x.com/_next/static/chun` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 786 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-login-test_2026-03-07_23-04-24.md b/Fail-login-test_2026-03-07_23-04-24.md new file mode 100644 index 0000000..cc6494e --- /dev/null +++ b/Fail-login-test_2026-03-07_23-04-24.md @@ -0,0 +1,97 @@ +# ❌ E2E 테스트 실패: 로그인 테스트 (끝판왕) + +**테스트 ID**: login-test | **실행**: 2026-03-07_23-04-24 | **결과**: FAIL +**소요 시간**: 32.7초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 23 | 10 | 11 | 2 | 43% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 5 | 비밀번호 표시/숨김 토글 테스트 | - | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context | +| 6 | 비밀번호 숨김 복원 | - | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context | +| 7 | 로그인 실패 테스트 - 빈 필드 | - | Element not found: button[type='submit'] [context: btn:47,input:0] | +| 8 | 아이디 입력 | - | Input not found: #userId [context: btn:47,input:0] | +| 9 | 로그인 실패 테스트 - 잘못된 비밀번호 | - | Input not found: #password [context: btn:47,input:0] | +| 10 | 잘못된 비밀번호로 로그인 시도 | - | Element not found: button[type='submit'] [context: btn:47,input:0] | +| 11 | 비밀번호 필드 초기화 | - | Input not found: #password [context: btn:47,input:0] | +| 12 | 올바른 비밀번호 입력 | - | Input not found: #password [context: btn:47,input:0] | +| 13 | 필수 검증 #2: 로그인 버튼 클릭 | - | Element not found: button[type='submit'] [context: btn:47,input:0] | +| 20 | 로그아웃 후 로그인 페이지 확인 | - | URL missing: /login | +| 22 | 재로그인 테스트 | - | Input not found: #userId [context: btn:47,input:0]; Input not found: #password [context: btn:47,inpu | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 로그인 페이지 접속 | - | ✅ | 0ms | Navigate to /ko/login | +| 2 | 필수 검증 #5: 목업 페이지 감지 | - | ⚠️ | 1504ms | Possible mockup page (score: 2) | +| 3 | UI 요소 검증 - 입력 필드 | - | ⚠️ | 1504ms | Checks: 0/3 verified | +| 4 | UI 요소 검증 - 옵션 | - | ✅ | 0ms | Checks: 1/3 verified | +| 5 | 비밀번호 표시/숨김 토글 테스트 | - | ❌ | 1510ms | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.luci | +| 6 | 비밀번호 숨김 복원 | - | ❌ | 1511ms | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.luci | +| 7 | 로그인 실패 테스트 - 빈 필드 | - | ❌ | 1503ms | Element not found: button[type='submit'] [context: btn:47,input:0] | +| 8 | 아이디 입력 | - | ❌ | 1516ms | Input not found: #userId [context: btn:47,input:0] | +| 9 | 로그인 실패 테스트 - 잘못된 비밀번호 | - | ❌ | 1509ms | Input not found: #password [context: btn:47,input:0] | +| 10 | 잘못된 비밀번호로 로그인 시도 | - | ❌ | 1522ms | Element not found: button[type='submit'] [context: btn:47,input:0] | +| 11 | 비밀번호 필드 초기화 | - | ❌ | 1507ms | Input not found: #password [context: btn:47,input:0] | +| 12 | 올바른 비밀번호 입력 | - | ❌ | 1518ms | Input not found: #password [context: btn:47,input:0] | +| 13 | 필수 검증 #2: 로그인 버튼 클릭 | - | ❌ | 1501ms | Element not found: button[type='submit'] [context: btn:47,input:0] | +| 14 | 대시보드 페이지 확인 | - | ✅ | 2002ms | Navigation ok: https://dev.codebridge-x.com/dashboard | +| 15 | 사용자 정보 표시 확인 | - | ✅ | 1ms | Checks: 3/3 verified | +| 16 | 세션 유지 확인 - 페이지 새로고침 | - | ✅ | 0ms | Page reload | +| 17 | 새로고침 후 대시보드 유지 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/dashboard | +| 18 | 사용자 프로필 메뉴 열기 | - | ✅ | 419ms | Clicked: button:has-text('홍킬동') | +| 19 | 로그아웃 버튼 클릭 | - | ✅ | 418ms | Clicked: 로그아웃 | +| 20 | 로그아웃 후 로그인 페이지 확인 | - | ❌ | 1507ms | URL missing: /login | +| 21 | 로그아웃 후 보호된 페이지 접근 시도 | - | ✅ | 0ms | Navigate to /ko/dashboard | +| 22 | 재로그인 테스트 | - | ❌ | 4525ms | Input not found: #userId [context: btn:47,input:0] / Input not found: #password | +| 23 | 최종 확인 - 대시보드 진입 | - | ✅ | 1ms | URL verified: https://dev.codebridge-x.com/dashboard | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_login-test_2026-03-07_23-04-23.png | + +### 콘솔 에러 (진단) +1. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +2. `Dashboard API Error [expected-expenses/summary?start_date=2026-03-01&end_date=2026-03-31]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:` +3. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +4. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +5. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +6. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` +7. `CardManagement API Error: TypeError: Failed to fetch + at i (https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:35386) + at https://dev.codebridge-x.com/_next/static/chun` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 798 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-login-test_2026-03-08_01-27-27.md b/Fail-login-test_2026-03-08_01-27-27.md new file mode 100644 index 0000000..9f003bd --- /dev/null +++ b/Fail-login-test_2026-03-08_01-27-27.md @@ -0,0 +1,99 @@ +# ❌ E2E 테스트 실패: 로그인 테스트 (끝판왕) + +**테스트 ID**: login-test | **실행**: 2026-03-08_01-27-27 | **결과**: FAIL +**소요 시간**: 26.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 23 | 12 | 10 | 1 | 52% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 5 | 비밀번호 표시/숨김 토글 테스트 | - | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context | +| 6 | 비밀번호 숨김 복원 | - | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.lucide-eye-off) [context | +| 7 | 로그인 실패 테스트 - 빈 필드 | - | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 8 | 아이디 입력 | - | Input not found: #userId [context: btn:46,input:0] | +| 9 | 로그인 실패 테스트 - 잘못된 비밀번호 | - | Input not found: #password [context: btn:46,input:0] | +| 10 | 잘못된 비밀번호로 로그인 시도 | - | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 11 | 비밀번호 필드 초기화 | - | Input not found: #password [context: btn:46,input:0] | +| 12 | 올바른 비밀번호 입력 | - | Input not found: #password [context: btn:46,input:0] | +| 13 | 필수 검증 #2: 로그인 버튼 클릭 | - | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 20 | 로그아웃 후 로그인 페이지 확인 | - | URL missing: /login | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 로그인 페이지 접속 | - | ✅ | 1ms | Navigate to /ko/login | +| 2 | 필수 검증 #5: 목업 페이지 감지 | - | ⚠️ | 1510ms | Possible mockup page (score: 2) | +| 3 | UI 요소 검증 - 입력 필드 | - | ✅ | 0ms | Checks: 1/3 verified | +| 4 | UI 요소 검증 - 옵션 | - | ✅ | 0ms | Checks: 1/3 verified | +| 5 | 비밀번호 표시/숨김 토글 테스트 | - | ❌ | 1507ms | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.luci | +| 6 | 비밀번호 숨김 복원 | - | ❌ | 1507ms | Element not found: #password ~ button, button:has(.lucide-eye), button:has(.luci | +| 7 | 로그인 실패 테스트 - 빈 필드 | - | ❌ | 1511ms | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 8 | 아이디 입력 | - | ❌ | 1509ms | Input not found: #userId [context: btn:46,input:0] | +| 9 | 로그인 실패 테스트 - 잘못된 비밀번호 | - | ❌ | 1510ms | Input not found: #password [context: btn:46,input:0] | +| 10 | 잘못된 비밀번호로 로그인 시도 | - | ❌ | 1502ms | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 11 | 비밀번호 필드 초기화 | - | ❌ | 1518ms | Input not found: #password [context: btn:46,input:0] | +| 12 | 올바른 비밀번호 입력 | - | ❌ | 1518ms | Input not found: #password [context: btn:46,input:0] | +| 13 | 필수 검증 #2: 로그인 버튼 클릭 | - | ❌ | 1513ms | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 14 | 대시보드 페이지 확인 | - | ✅ | 2007ms | Navigation ok: https://dev.codebridge-x.com/dashboard | +| 15 | 사용자 정보 표시 확인 | - | ✅ | 1ms | Checks: 3/3 verified | +| 16 | 세션 유지 확인 - 페이지 새로고침 | - | ✅ | 0ms | Page reload | +| 17 | 새로고침 후 대시보드 유지 확인 | - | ✅ | 1ms | URL verified: https://dev.codebridge-x.com/dashboard | +| 18 | 사용자 프로필 메뉴 열기 | - | ✅ | 0ms | json_fail:Unexpected token 'P', "Profile menu clicked" is not valid JSON/raw:Pro | +| 19 | 로그아웃 버튼 클릭 | - | ✅ | 411ms | Clicked: 로그아웃 | +| 20 | 로그아웃 후 로그인 페이지 확인 | - | ❌ | 1501ms | URL missing: /login | +| 21 | 로그아웃 후 보호된 페이지 접근 시도 | - | ✅ | 0ms | Navigate to /ko/dashboard | +| 22 | 재로그인 테스트 | - | ✅ | 0ms | json_fail:Unexpected token 'L', "Login form not found" is not valid JSON/raw:Log | +| 23 | 최종 확인 - 대시보드 진입 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/dashboard | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_login-test_2026-03-08_01-27-27.png | + +### 콘솔 에러 (진단) +1. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +2. `Dashboard API Error [expected-expenses/summary?start_date=2026-03-01&end_date=2026-03-31]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:` +3. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +4. `Dashboard API Error [dashboard/attendance/summary]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-x` +5. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +6. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` +7. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +8. `CardManagement API Error: TypeError: Failed to fetch + at i (https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:35386) + at https://dev.codebridge-x.com/_next/static/chun` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 786 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-login-test_2026-03-08_01-31-56.md b/Fail-login-test_2026-03-08_01-31-56.md new file mode 100644 index 0000000..035d4fe --- /dev/null +++ b/Fail-login-test_2026-03-08_01-31-56.md @@ -0,0 +1,72 @@ +# ❌ E2E 테스트 실패: 로그인 테스트 + +**테스트 ID**: login-test | **실행**: 2026-03-08_01-31-56 | **결과**: FAIL +**소요 시간**: 25.8초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 21 | 11 | 9 | 1 | 52% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 4 | 로그인 페이지 확인 | - | URL missing: /ko/login | +| 8 | 로그인 실패 테스트 - 빈 필드 | - | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 10 | 아이디 입력 | - | Input not found: #userId [context: btn:46,input:0] | +| 11 | 잘못된 비밀번호 입력 | - | Input not found: #password [context: btn:46,input:0] | +| 12 | 잘못된 비밀번호로 로그인 시도 | - | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 14 | 실패 후 로그인 페이지 유지 확인 | - | URL missing: /login | +| 15 | 비밀번호 필드 초기화 | - | Input not found: #password [context: btn:46,input:0] | +| 16 | 올바른 비밀번호 입력 | - | Input not found: #password [context: btn:46,input:0] | +| 17 | 로그인 버튼 클릭 | - | Element not found: button[type='submit'] [context: btn:46,input:0] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 프로필 메뉴 열기 (로그아웃 준비) | - | ✅ | 1ms | json_fail:Unexpected token 'P', "Profile menu clicked" is not valid JSON/raw:Pro | +| 2 | 로그아웃 클릭 | - | ✅ | 412ms | Clicked: 로그아웃 | +| 3 | 로그인 페이지 도착 대기 | - | ✅ | 3005ms | Waited 3000ms | +| 4 | 로그인 페이지 확인 | - | ❌ | 1509ms | URL missing: /ko/login | +| 5 | 필수 검증 #5: 목업 페이지 감지 | - | ⚠️ | 1501ms | Possible mockup page (score: 2) | +| 6 | UI 요소 검증 - 입력 필드 | - | ✅ | 1ms | json_fail:Unexpected token 'u', "userId: fa"... is not valid JSON/raw:userId: fa | +| 7 | 비밀번호 토글 버튼 테스트 | - | ✅ | 0ms | json_fail:Unexpected token 'N', "No password field" is not valid JSON/raw:No pas | +| 8 | 로그인 실패 테스트 - 빈 필드 | - | ❌ | 1511ms | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 9 | 빈 필드 제출 후 에러 확인 | - | ✅ | 0ms | json_fail:Unexpected token 'E', "Error disp"... is not valid JSON/raw:Error disp | +| 10 | 아이디 입력 | - | ❌ | 1509ms | Input not found: #userId [context: btn:46,input:0] | +| 11 | 잘못된 비밀번호 입력 | - | ❌ | 1509ms | Input not found: #password [context: btn:46,input:0] | +| 12 | 잘못된 비밀번호로 로그인 시도 | - | ❌ | 1510ms | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 13 | 로그인 실패 메시지 확인 | - | ✅ | 2001ms | Waited 2000ms | +| 14 | 실패 후 로그인 페이지 유지 확인 | - | ❌ | 1502ms | URL missing: /login | +| 15 | 비밀번호 필드 초기화 | - | ❌ | 1509ms | Input not found: #password [context: btn:46,input:0] | +| 16 | 올바른 비밀번호 입력 | - | ❌ | 1511ms | Input not found: #password [context: btn:46,input:0] | +| 17 | 로그인 버튼 클릭 | - | ❌ | 1506ms | Element not found: button[type='submit'] [context: btn:46,input:0] | +| 18 | 대시보드 페이지 도착 대기 | - | ✅ | 2005ms | Navigation ok: https://dev.codebridge-x.com/dashboard | +| 19 | 대시보드 UI 확인 | - | ✅ | 0ms | Checks: 2/2 verified | +| 20 | 세션 유지 확인 - 페이지 새로고침 | - | ✅ | 1ms | Page reload | +| 21 | 새로고침 후 대시보드 유지 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/dashboard | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_login-test_2026-03-08_01-31-56.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 786 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-login-test_2026-03-08_01-36-20.md b/Fail-login-test_2026-03-08_01-36-20.md new file mode 100644 index 0000000..2c27ece --- /dev/null +++ b/Fail-login-test_2026-03-08_01-36-20.md @@ -0,0 +1,87 @@ +# ❌ E2E 테스트 실패: 로그인 테스트 + +**테스트 ID**: login-test | **실행**: 2026-03-08_01-36-20 | **결과**: FAIL +**소요 시간**: 24.9초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 21 | 12 | 8 | 1 | 57% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 8 | 로그인 실패 테스트 - 빈 필드 | - | Element not found: button[type='submit'] [context: btn:30,input:0] | +| 10 | 아이디 입력 | - | Input not found: #userId [context: btn:30,input:0] | +| 11 | 잘못된 비밀번호 입력 | - | Input not found: #password [context: btn:30,input:0] | +| 12 | 잘못된 비밀번호로 로그인 시도 | - | Element not found: button[type='submit'] [context: btn:30,input:0] | +| 14 | 실패 후 로그인 페이지 유지 확인 | - | URL missing: /login | +| 15 | 비밀번호 필드 초기화 | - | Input not found: #password [context: btn:30,input:0] | +| 16 | 올바른 비밀번호 입력 | - | Input not found: #password [context: btn:30,input:0] | +| 17 | 로그인 버튼 클릭 | - | Element not found: button[type='submit'] [context: btn:30,input:0] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 1 | 세션 클리어 (로그아웃 효과) | - | ✅ | 1ms | json_fail:Unexpected token 'S', "Session cleared" is not valid JSON/raw:Session | +| 2 | 로그인 페이지 이동 | - | ✅ | 0ms | Navigate to /ko/login | +| 3 | 로그인 페이지 도착 대기 | - | ✅ | 2008ms | Waited 2000ms | +| 4 | 로그인 폼 존재 확인 | - | ✅ | 0ms | json_fail:Unexpected token 'F', "Form not f"... is not valid JSON/raw:Form not f | +| 5 | 필수 검증 #5: 목업 페이지 감지 | - | ⚠️ | 1507ms | Possible mockup page (score: 2) | +| 6 | UI 요소 검증 - 입력 필드 | - | ✅ | 0ms | json_fail:Unexpected token 'u', "userId: fa"... is not valid JSON/raw:userId: fa | +| 7 | 비밀번호 토글 버튼 테스트 | - | ✅ | 0ms | json_fail:Unexpected token 'N', "No password field" is not valid JSON/raw:No pas | +| 8 | 로그인 실패 테스트 - 빈 필드 | - | ❌ | 1513ms | Element not found: button[type='submit'] [context: btn:30,input:0] | +| 9 | 빈 필드 제출 후 에러 확인 | - | ✅ | 1ms | json_fail:Unexpected token 'E', "Error disp"... is not valid JSON/raw:Error disp | +| 10 | 아이디 입력 | - | ❌ | 1508ms | Input not found: #userId [context: btn:30,input:0] | +| 11 | 잘못된 비밀번호 입력 | - | ❌ | 1509ms | Input not found: #password [context: btn:30,input:0] | +| 12 | 잘못된 비밀번호로 로그인 시도 | - | ❌ | 1509ms | Element not found: button[type='submit'] [context: btn:30,input:0] | +| 13 | 로그인 실패 메시지 확인 | - | ✅ | 2001ms | Waited 2000ms | +| 14 | 실패 후 로그인 페이지 유지 확인 | - | ❌ | 1513ms | URL missing: /login | +| 15 | 비밀번호 필드 초기화 | - | ❌ | 1517ms | Input not found: #password [context: btn:30,input:0] | +| 16 | 올바른 비밀번호 입력 | - | ❌ | 1502ms | Input not found: #password [context: btn:30,input:0] | +| 17 | 로그인 버튼 클릭 | - | ❌ | 1507ms | Element not found: button[type='submit'] [context: btn:30,input:0] | +| 18 | 대시보드 페이지 도착 대기 | - | ✅ | 2002ms | Navigation ok: https://dev.codebridge-x.com/dashboard | +| 19 | 대시보드 UI 확인 | - | ✅ | 0ms | Checks: 2/2 verified | +| 20 | 세션 유지 확인 - 페이지 새로고침 | - | ✅ | 1ms | Page reload | +| 21 | 새로고침 후 대시보드 유지 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/dashboard | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_login-test_2026-03-08_01-36-20.png | + +### 콘솔 에러 (진단) +1. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +2. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +3. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +4. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +5. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 595 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-notification-settings_2026-03-07_21-27-28.md b/Fail-notification-settings_2026-03-07_21-27-28.md new file mode 100644 index 0000000..0546931 --- /dev/null +++ b/Fail-notification-settings_2026-03-07_21-27-28.md @@ -0,0 +1,146 @@ +# ❌ E2E 테스트 실패: 설정 - 알림설정 + +**테스트 ID**: notification-settings | **실행**: 2026-03-07_21-27-28 | **결과**: FAIL +**소요 시간**: 135.1초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 91 | 9 | 13 | 69 | 10% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 40 | 마스터 스위치 ON 테스트 - 수주/발주 알림 활성화 | - | Element not found: heading:has-text('수주/발주 알림') + switch [context: btn:102,input:0,text:not-on-page] | +| 43 | 하위 알림 스위치 ON - 수주 등록 알림 | - | Element not found: text='수주 등록 알림' >> .. >> switch [context: btn:102,input:0,text:found-on-page] | +| 47 | 알림 소리 선택 - combobox 클릭 | - | Element not found: text='수주 등록 알림' >> .. >> combobox [context: btn:102,input:0,text:found-on-page] | +| 51 | 알림 소리 선택 - SAM 보이스 | - | Element not found: option:has-text('SAM 보이스') [context: btn:102,input:0,text:found-on-page] | +| 53 | 이메일 알림 활성화 | - | Element not found: text='수주 등록 알림' >> .. >> checkbox [context: btn:102,input:0,text:found-on-page] | +| 55 | 마스터 스위치 ON 테스트 - 전자결재 알림 활성화 | - | Element not found: heading:has-text('전자결재 알림') + switch [context: btn:102,input:0,text:found-on-page | +| 60 | 결재요청 알림 스위치 ON | - | Element not found: text='결재요청 알림' >> .. >> switch [context: btn:102,input:0,text:found-on-page] | +| 61 | 결재요청 알림 소리 변경 - combobox 클릭 | - | Element not found: text='결재요청 알림' >> .. >> combobox [context: btn:102,input:0,text:found-on-page] | +| 62 | 결재요청 알림 소리 선택 - 무음 | - | Element not found: option:has-text('무음') [context: btn:102,input:0,text:found-on-page] | +| 63 | 결재요청 알림 이메일 활성화 | - | Element not found: text='결재요청 알림' >> .. >> checkbox [context: btn:102,input:0,text:found-on-page] | +| 64 | 마스터 스위치 ON 테스트 - 생산 알림 활성화 | - | Element not found: heading:has-text('생산 알림') + switch [context: btn:102,input:0,text:found-on-page] | +| 67 | 안전재고 알림 스위치 ON | - | Element not found: text='안전재고 알림' >> .. >> switch [context: btn:102,input:0,text:found-on-page] | +| 86 | 마스터 스위치 OFF 테스트 - 수주/발주 알림 비활성화 | - | Element not found: heading:has-text('수주/발주 알림') + switch [context: btn:132,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 초기화 | - | ✅ | 500ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 설정 > 알림설정 | - | ✅ | 2748ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 알림설정 / Clicked: 알림설정 / Waited 10 | +| 2 | 페이지 제목 확인 | - | ⚠️ | 1518ms | Element not found: heading[level=1] | +| 3 | 설명 텍스트 확인 | - | ⚠️ | 1514ms | Element not found: paragraph | +| 4 | 항목 설정 버튼 존재 확인 | - | ✅ | 0ms | Element exists: button:has-text('항목 설정') | +| 5 | 저장 버튼 존재 확인 | - | ✅ | 1ms | Element exists: button:has-text('저장') | +| 6 | 공지 알림 카테고리 확인 | - | ⚠️ | 1526ms | Element not found: heading:has-text('공지 알림') | +| 7 | 공지 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1516ms | Element not found: heading:has-text('공지 알림') + switch | +| 8 | 공지사항 알림 항목 확인 | - | ⚠️ | 1512ms | Element not found: text='공지사항 알림' | +| 9 | 이벤트 알림 항목 확인 | - | ⚠️ | 1515ms | Element not found: text='이벤트 알림' | +| 10 | 일정 알림 카테고리 확인 | - | ⚠️ | 1508ms | Element not found: heading:has-text('일정 알림') | +| 11 | 일정 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1512ms | Element not found: heading:has-text('일정 알림') + switch | +| 12 | 부가세 신고 알림 항목 확인 | - | ⚠️ | 1513ms | Element not found: text='부가세 신고 알림' | +| 13 | 부가세 신고 알림 소리 설정 확인 | - | ⚠️ | 1508ms | Element not found: text='부가세 신고 알림' >> .. >> combobox | +| 14 | 종합소득세 신고 알림 항목 확인 | - | ⚠️ | 1508ms | Element not found: text='종합소득세 신고 알림' | +| 15 | 종합소득세 신고 알림 소리 설정 확인 | - | ⚠️ | 1511ms | Element not found: text='종합소득세 신고 알림' >> .. >> combobox | +| 16 | 거래처 알림 카테고리 확인 | - | ⚠️ | 1524ms | Element not found: heading:has-text('거래처 알림') | +| 17 | 거래처 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1519ms | Element not found: heading:has-text('거래처 알림') + switch | +| 18 | 신규 업체 등록 알림 항목 확인 | - | ⚠️ | 1535ms | Element not found: text='신규 업체 등록 알림' | +| 19 | 신용등급 등록 알림 항목 확인 | - | ⚠️ | 1512ms | Element not found: text='신용등급 등록 알림' | +| 20 | 근태 알림 카테고리 확인 | - | ⚠️ | 1509ms | Element not found: heading:has-text('근태 알림') | +| 21 | 근태 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1515ms | Element not found: heading:has-text('근태 알림') + switch | +| 22 | 연차 알림 항목 확인 | - | ⚠️ | 1506ms | Element not found: text='연차 알림' | +| 23 | 출근 알림 항목 확인 | - | ⚠️ | 1527ms | Element not found: text='출근 알림' | +| 24 | 지각 알림 항목 확인 | - | ⚠️ | 1513ms | Element not found: text='지각 알림' | +| 25 | 결근 알림 항목 확인 | - | ⚠️ | 1529ms | Element not found: text='결근 알림' | +| 26 | 수주/발주 알림 카테고리 확인 | - | ⚠️ | 1511ms | Element not found: heading:has-text('수주/발주 알림') | +| 27 | 수주/발주 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1516ms | Element not found: heading:has-text('수주/발주 알림') + switch | +| 28 | 수주 등록 알림 스위치 disabled 확인 | - | ⚠️ | 1511ms | Element not found: text='수주 등록 알림' >> .. >> switch | +| 29 | 발주 알림 스위치 disabled 확인 | - | ⚠️ | 1517ms | Element not found: text='발주 알림' >> .. >> switch | +| 30 | 전자결재 알림 카테고리 확인 | - | ⚠️ | 1517ms | Element not found: heading:has-text('전자결재 알림') | +| 31 | 전자결재 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1514ms | Element not found: heading:has-text('전자결재 알림') + switch | +| 32 | 결재요청 알림 항목 확인 | - | ⚠️ | 1507ms | Element not found: text='결재요청 알림' | +| 33 | 기안 > 승인 알림 항목 확인 | - | ⚠️ | 1524ms | Element not found: text='기안 > 승인 알림' | +| 34 | 기안 > 반려 알림 항목 확인 | - | ⚠️ | 1514ms | Element not found: text='기안 > 반려 알림' | +| 35 | 기안 > 완료 알림 항목 확인 | - | ⚠️ | 1516ms | Element not found: text='기안 > 완료 알림' | +| 36 | 생산 알림 카테고리 확인 | - | ⚠️ | 1519ms | Element not found: heading:has-text('생산 알림') | +| 37 | 생산 알림 마스터 스위치 상태 확인 | - | ⚠️ | 1535ms | Element not found: heading:has-text('생산 알림') + switch | +| 38 | 안전재고 알림 항목 확인 | - | ⚠️ | 1520ms | Element not found: text='안전재고 알림' | +| 39 | 생산완료 알림 항목 확인 | - | ⚠️ | 1528ms | Element not found: text='생산완료 알림' | +| 40 | 마스터 스위치 ON 테스트 - 수주/발주 알림 활성화 | - | ❌ | 1515ms | Element not found: heading:has-text('수주/발주 알림') + switch [context: btn:102,input | +| 41 | 하위 스위치 활성화 확인 - 수주 등록 알림 | - | ⚠️ | 1512ms | Element not found: text='수주 등록 알림' >> .. >> switch | +| 42 | 하위 스위치 활성화 확인 - 발주 알림 | - | ⚠️ | 1501ms | Element not found: text='발주 알림' >> .. >> switch | +| 43 | 하위 알림 스위치 ON - 수주 등록 알림 | - | ❌ | 1527ms | Element not found: text='수주 등록 알림' >> .. >> switch [context: btn:102,input:0,tex | +| 44 | 알림 소리 combobox 활성화 확인 | - | ⚠️ | 1514ms | Element not found: text='수주 등록 알림' >> .. >> combobox | +| 45 | 이메일 checkbox 활성화 확인 | - | ⚠️ | 1513ms | Element not found: text='수주 등록 알림' >> .. >> checkbox | +| 46 | 소리 테스트 버튼 활성화 확인 | - | ⚠️ | 1531ms | Element not found: text='수주 등록 알림' >> .. >> button:has(img) | +| 47 | 알림 소리 선택 - combobox 클릭 | - | ❌ | 1520ms | Element not found: text='수주 등록 알림' >> .. >> combobox [context: btn:102,input:0,t | +| 48 | 알림 소리 옵션 확인 - 기본 알림음 | - | ⚠️ | 1529ms | Element not found: option:has-text('기본 알림음') | +| 49 | 알림 소리 옵션 확인 - SAM 보이스 | - | ⚠️ | 1518ms | Element not found: option:has-text('SAM 보이스') | +| 50 | 알림 소리 옵션 확인 - 무음 | - | ⚠️ | 1508ms | Element not found: option:has-text('무음') | +| 51 | 알림 소리 선택 - SAM 보이스 | - | ❌ | 1519ms | Element not found: option:has-text('SAM 보이스') [context: btn:102,input:0,text:fou | +| 52 | 선택된 알림 소리 확인 | - | ⚠️ | 1521ms | Element not found: text='수주 등록 알림' >> .. >> combobox | +| 53 | 이메일 알림 활성화 | - | ❌ | 1514ms | Element not found: text='수주 등록 알림' >> .. >> checkbox [context: btn:102,input:0,t | +| 54 | 이메일 checkbox 상태 확인 | - | ⚠️ | 1514ms | Element not found: text='수주 등록 알림' >> .. >> checkbox | +| 55 | 마스터 스위치 ON 테스트 - 전자결재 알림 활성화 | - | ❌ | 1508ms | Element not found: heading:has-text('전자결재 알림') + switch [context: btn:102,input: | +| 56 | 전자결재 하위 스위치 활성화 확인 - 결재요청 알림 | - | ⚠️ | 1516ms | Element not found: text='결재요청 알림' >> .. >> switch | +| 57 | 전자결재 하위 스위치 활성화 확인 - 기안 > 승인 알림 | - | ⚠️ | 1519ms | Element not found: text='기안 > 승인 알림' >> .. >> switch | +| 58 | 전자결재 하위 스위치 활성화 확인 - 기안 > 반려 알림 | - | ⚠️ | 1506ms | Element not found: text='기안 > 반려 알림' >> .. >> switch | +| 59 | 전자결재 하위 스위치 활성화 확인 - 기안 > 완료 알림 | - | ⚠️ | 1514ms | Element not found: text='기안 > 완료 알림' >> .. >> switch | +| 60 | 결재요청 알림 스위치 ON | - | ❌ | 1516ms | Element not found: text='결재요청 알림' >> .. >> switch [context: btn:102,input:0,text | +| 61 | 결재요청 알림 소리 변경 - combobox 클릭 | - | ❌ | 1505ms | Element not found: text='결재요청 알림' >> .. >> combobox [context: btn:102,input:0,te | +| 62 | 결재요청 알림 소리 선택 - 무음 | - | ❌ | 1520ms | Element not found: option:has-text('무음') [context: btn:102,input:0,text:found-on | +| 63 | 결재요청 알림 이메일 활성화 | - | ❌ | 1515ms | Element not found: text='결재요청 알림' >> .. >> checkbox [context: btn:102,input:0,te | +| 64 | 마스터 스위치 ON 테스트 - 생산 알림 활성화 | - | ❌ | 1519ms | Element not found: heading:has-text('생산 알림') + switch [context: btn:102,input:0, | +| 65 | 생산 하위 스위치 활성화 확인 - 안전재고 알림 | - | ⚠️ | 1516ms | Element not found: text='안전재고 알림' >> .. >> switch | +| 66 | 생산 하위 스위치 활성화 확인 - 생산완료 알림 | - | ⚠️ | 1519ms | Element not found: text='생산완료 알림' >> .. >> switch | +| 67 | 안전재고 알림 스위치 ON | - | ❌ | 1516ms | Element not found: text='안전재고 알림' >> .. >> switch [context: btn:102,input:0,text | +| 68 | 저장 버튼 클릭 전 URL 저장 | - | ⚠️ | 0ms | Unknown action type: saveUrl | +| 69 | 저장 버튼 클릭 | - | ✅ | 414ms | Clicked: button:has-text('저장') | +| 70 | 저장 후 URL 변경 여부 확인 | - | ⚠️ | 1523ms | Element not found: currentUrl | +| 71 | 에러 페이지 텍스트 확인 | - | ✅ | 0ms | Element exists: body | +| 72 | 성공 토스트 메시지 확인 | - | ✅ | 1004ms | Waited 1000ms | +| 73 | Network Request 확인 - PUT API | - | ⚠️ | 0ms | Unknown action type: verifyNetwork | +| 74 | 페이지 새로고침 | - | ✅ | 1ms | Page reload | +| 75 | 페이지 로드 대기 | - | ✅ | 1003ms | Waited 1000ms | +| 76 | 저장된 값 확인 - 수주/발주 알림 마스터 스위치 | - | ⚠️ | 1519ms | Element not found: heading:has-text('수주/발주 알림') + switch | +| 77 | 저장된 값 확인 - 수주 등록 알림 스위치 | - | ⚠️ | 1505ms | Element not found: text='수주 등록 알림' >> .. >> switch | +| 78 | 저장된 값 확인 - 수주 등록 알림 소리 | - | ⚠️ | 1526ms | Element not found: text='수주 등록 알림' >> .. >> combobox | +| 79 | 저장된 값 확인 - 수주 등록 알림 이메일 | - | ⚠️ | 1505ms | Element not found: text='수주 등록 알림' >> .. >> checkbox | +| 80 | 저장된 값 확인 - 전자결재 알림 마스터 스위치 | - | ⚠️ | 1511ms | Element not found: heading:has-text('전자결재 알림') + switch | +| 81 | 저장된 값 확인 - 결재요청 알림 스위치 | - | ⚠️ | 1522ms | Element not found: text='결재요청 알림' >> .. >> switch | +| 82 | 저장된 값 확인 - 결재요청 알림 소리 | - | ⚠️ | 1523ms | Element not found: text='결재요청 알림' >> .. >> combobox | +| 83 | 저장된 값 확인 - 결재요청 알림 이메일 | - | ⚠️ | 1518ms | Element not found: text='결재요청 알림' >> .. >> checkbox | +| 84 | 저장된 값 확인 - 생산 알림 마스터 스위치 | - | ⚠️ | 1513ms | Element not found: heading:has-text('생산 알림') + switch | +| 85 | 저장된 값 확인 - 안전재고 알림 스위치 | - | ⚠️ | 1523ms | Element not found: text='안전재고 알림' >> .. >> switch | +| 86 | 마스터 스위치 OFF 테스트 - 수주/발주 알림 비활성화 | - | ❌ | 1520ms | Element not found: heading:has-text('수주/발주 알림') + switch [context: btn:132,input | +| 87 | 하위 스위치 비활성화 확인 - 수주 등록 알림 | - | ⚠️ | 1517ms | Element not found: text='수주 등록 알림' >> .. >> switch | +| 88 | 하위 combobox 비활성화 확인 | - | ⚠️ | 1513ms | Element not found: text='수주 등록 알림' >> .. >> combobox | +| 89 | 하위 checkbox 비활성화 확인 | - | ⚠️ | 1509ms | Element not found: text='수주 등록 알림' >> .. >> checkbox | +| 90 | 하위 소리 테스트 버튼 비활성화 확인 | - | ⚠️ | 1531ms | Element not found: text='수주 등록 알림' >> .. >> button:has(img) | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/notification-settings | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_notification-settings_2026-03-07_21-27-28.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 942 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-order-management_2026-03-07_21-27-58.md b/Fail-order-management_2026-03-07_21-27-58.md new file mode 100644 index 0000000..40d47c9 --- /dev/null +++ b/Fail-order-management_2026-03-07_21-27-58.md @@ -0,0 +1,65 @@ +# ❌ E2E 테스트 실패: 수주관리 테스트 + +**테스트 ID**: order-management | **실행**: 2026-03-07_21-27-58 | **결과**: FAIL +**소요 시간**: 30.1초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 17 | 11 | 6 | 0 | 65% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 판매관리 메뉴 진입 | - | Element not found: 수주관리 [context: btn:61,input:1,text:not-on-page] | +| step-4 | 필수 검증 #3: 수주확정 탭 필터 | - | Element not found: 수주확정 [context: btn:61,input:1,text:not-on-page] | +| step-7 | 수주 등록 폼 입력 | - | Element not found: 발주처 [context: btn:31,input:12,text:not-on-page]; Element not found: {testData.ord | +| step-10 | 수주 상세 열기 | - | Row with "undefined" not found | +| step-11 | 수주 정보 수정 | - | Element not found: 수정 [context: btn:31,input:12,text:not-on-page]; Element not found: 상차 [context: b | +| step-13 | 수주 삭제 준비 | - | Row with "undefined" not found | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 503ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 판매관리 메뉴 진입 | - | ❌ | 2635ms | Found: 판매관리 / Clicked: 판매관리 / Waited 500ms / Element not found: 수주관리 [context: b | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 상태 탭 필터 테스트 | - | ✅ | 719ms | Clicked: 수주등록 / Waited 300ms | +| step-4 | 필수 검증 #3: 수주확정 탭 필터 | - | ❌ | 1819ms | Element not found: 수주확정 [context: btn:61,input:1,text:not-on-page] / Waited 300m | +| step-5 | 전체 탭으로 복귀 | - | ✅ | 731ms | Clicked: 전체 / Waited 300ms | +| step-6 | 필수 검증 #2: 수주 등록 모달/페이지 열기 | - | ✅ | 410ms | Clicked: 수주 등록 | +| step-7 | 수주 등록 폼 입력 | - | ❌ | 6699ms | Element not found: 발주처 [context: btn:31,input:12,text:not-on-page] / Element not | +| step-8 | 필수 검증 #2: 수주 등록 저장 | - | ✅ | 417ms | Clicked: 저장 | +| step-9 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | Navigate: undefined | +| step-10 | 수주 상세 열기 | - | ❌ | 1510ms | Row with "undefined" not found | +| step-11 | 수주 정보 수정 | - | ❌ | 4180ms | Element not found: 수정 [context: btn:31,input:12,text:not-on-page] / Waited 300ms | +| step-12 | 필수 검증 #4: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-13 | 수주 삭제 준비 | - | ❌ | 1514ms | Row with "undefined" not found | +| step-14 | 수주 삭제 | - | ✅ | 410ms | Clicked: 삭제 | +| step-15 | 삭제 확인 | - | ✅ | 417ms | Clicked: 확인 | +| step-16 | 필수 검증 #4: 삭제 데이터 반영 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/sales/order-management-sales | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_order-management_2026-03-07_21-27-58.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 581 | +| 테이블 행 | 1 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-permission-management_2026-03-07_21-29-13.md b/Fail-permission-management_2026-03-07_21-29-13.md new file mode 100644 index 0000000..86d98a1 --- /dev/null +++ b/Fail-permission-management_2026-03-07_21-29-13.md @@ -0,0 +1,106 @@ +# ❌ E2E 테스트 실패: 설정 - 권한관리 + +**테스트 ID**: permission-management | **실행**: 2026-03-07_21-29-13 | **결과**: FAIL +**소요 시간**: 40.4초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 15 | 4 | 10 | 1 | 27% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-05 | 탭 필터 테스트 - 공개 | - | Element not found: 공개 탭 [context: btn:42,input:1,text:not-on-page] | +| step-06 | 탭 필터 테스트 - 숨김 | - | Element not found: 숨김 탭 [context: btn:42,input:1,text:not-on-page] | +| step-07 | 탭 필터 테스트 - 전체 | - | Element not found: 전체 탭 [context: btn:42,input:1,text:not-on-page] | +| step-08 | 검색 기능 테스트 | - | Input not found: 검색 입력 필드 [context: btn:42,input:1,text:not-on-page] | +| step-09 | 검색 초기화 | - | Input not found: 검색 입력 필드 [context: btn:42,input:1,text:not-on-page] | +| step-10 | 역할 등록 페이지 이동 | - | Element not found: 역할 등록 버튼 [context: btn:42,input:1,text:not-on-page] | +| step-11 | 역할명 입력 | - | Input not found: 권한명 입력 필드 [context: btn:42,input:1,text:not-on-page] | +| step-12 | 설명 입력 | - | Input not found: 설명 입력 필드 (있는 경우) [context: btn:42,input:1,text:not-on-page] | +| step-13 | 상태 선택 | - | Select not found: 상태 드롭다운 [context: btn:42,input:1,text:not-on-page] | +| step-14 | 역할 등록 | - | Element not found: 등록 버튼 [context: btn:42,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-00 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7336ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| step-01 | 2단계 메뉴 진입: 설정 > 권한관리 | - | ✅ | 11745ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 권한관리 / Clicked: 권한관리 / Waited 10 | +| step-02 | 통계 카드 확인 | - | ✅ | 0ms | No checks defined | +| step-03 | 탭 확인 | - | ✅ | 0ms | No checks defined | +| step-04 | 테이블 구조 확인 | - | ✅ | 0ms | No checks defined | +| step-05 | 탭 필터 테스트 - 공개 | - | ❌ | 1515ms | Element not found: 공개 탭 [context: btn:42,input:1,text:not-on-page] | +| step-06 | 탭 필터 테스트 - 숨김 | - | ❌ | 1528ms | Element not found: 숨김 탭 [context: btn:42,input:1,text:not-on-page] | +| step-07 | 탭 필터 테스트 - 전체 | - | ❌ | 1519ms | Element not found: 전체 탭 [context: btn:42,input:1,text:not-on-page] | +| step-08 | 검색 기능 테스트 | - | ❌ | 1533ms | Input not found: 검색 입력 필드 [context: btn:42,input:1,text:not-on-page] | +| step-09 | 검색 초기화 | - | ❌ | 1521ms | Input not found: 검색 입력 필드 [context: btn:42,input:1,text:not-on-page] | +| step-10 | 역할 등록 페이지 이동 | - | ❌ | 1510ms | Element not found: 역할 등록 버튼 [context: btn:42,input:1,text:not-on-page] | +| step-11 | 역할명 입력 | - | ❌ | 1522ms | Input not found: 권한명 입력 필드 [context: btn:42,input:1,text:not-on-page] | +| step-12 | 설명 입력 | - | ❌ | 1521ms | Input not found: 설명 입력 필드 (있는 경우) [context: btn:42,input:1,text:not-on-page] | +| step-13 | 상태 선택 | - | ❌ | 1519ms | Select not found: 상태 드롭다운 [context: btn:42,input:1,text:not-on-page] | +| step-14 | 역할 등록 | - | ❌ | 1527ms | Element not found: 등록 버튼 [context: btn:42,input:1,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 126ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/permissions | + +### 콘솔 에러 (Health Check) +1. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +2. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +3. `Dashboard API Error [dashboard/attendance/summary]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-x` +4. `Dashboard API Error [expected-expenses/summary?start_date=2026-03-01&end_date=2026-03-31]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:` +5. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_permission-management_2026-03-07_21-29-13.png | + +### 콘솔 에러 (진단) +1. `Dashboard API Error [today-issues/summary?limit=30]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-` +2. `Dashboard API Error [entertainment/summary?limit_type=quarterly&company_type=medium]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:344` +3. `Dashboard API Error [dashboard/attendance/summary]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridge-x` +4. `Dashboard API Error [expected-expenses/summary?start_date=2026-03-01&end_date=2026-03-31]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:` +5. `Dashboard API Error [vat/summary?period_type=quarter]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.codebridg` +6. `Dashboard API Error [calendar/schedules?department_filter=all]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 + at https://dev.` +7. `Dashboard API Error [welfare/summary?limit_type=quarterly&calculation_type=fixed]: TypeError: Failed to fetch + at https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:34474 +` +8. `CardManagement API Error: TypeError: Failed to fetch + at i (https://dev.codebridge-x.com/_next/static/chunks/86875-bc2ea7651b838be6.js:1:35386) + at https://dev.codebridge-x.com/_next/static/chun` + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 603 | +| 테이블 행 | 3 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-popup-management_2026-03-07_21-31-32.md b/Fail-popup-management_2026-03-07_21-31-32.md new file mode 100644 index 0000000..b19b80e --- /dev/null +++ b/Fail-popup-management_2026-03-07_21-31-32.md @@ -0,0 +1,150 @@ +# ❌ E2E 테스트 실패: 설정 - 팝업관리 + +**테스트 ID**: popup-management | **실행**: 2026-03-07_21-31-32 | **결과**: FAIL +**소요 시간**: 138.8초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 89 | 5 | 19 | 65 | 6% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 9 | 검색 기능 - 제목으로 검색 | - | Input not found: textbox '제목, 작성자로 검색...' [context: btn:45,input:1,text:not-on-page] | +| 11 | 검색어 초기화 | - | Input not found: textbox '제목, 작성자로 검색...' [context: btn:45,input:1,text:not-on-page] | +| 13 | 팝업 등록 페이지 이동 | - | Element not found: button '팝업 등록' [context: btn:45,input:1,text:found-on-page] | +| 18 | 대상 Combobox 클릭 | - | Element not found: combobox (대상) [context: btn:45,input:1,text:found-on-page] | +| 20 | 대상 '부서별' 선택 | - | Element not found: option '부서별' [context: btn:45,input:1,text:found-on-page] | +| 24 | 제목 입력 | - | Input not found: textbox '제목 *' [context: btn:45,input:1,text:found-on-page] | +| 27 | 내용 입력 | - | Input not found: editor content area [context: btn:45,input:1] | +| 30 | 상태 '사용함' 선택 | - | Element not found: radio '사용함' [context: btn:45,input:1,text:found-on-page] | +| 36 | 등록 버튼 클릭 | - | Element not found: button '등록' [context: btn:45,input:1,text:found-on-page] | +| 41 | 첫 번째 팝업 행 클릭 | - | Element not found: row (첫 번째 팝업) [context: btn:45,input:1,text:not-on-page] | +| 56 | 수정 페이지 이동 | - | Element not found: button '수정' [context: btn:45,input:1,text:not-on-page] | +| 63 | 제목 수정 | - | Input not found: textbox '제목 *' [context: btn:45,input:1,text:found-on-page] | +| 64 | 내용 수정 | - | Input not found: editor content area [context: btn:45,input:1] | +| 65 | 상태 변경 - 사용안함 선택 | - | Element not found: radio '사용안함' [context: btn:45,input:1,text:found-on-page] | +| 68 | 저장 버튼 클릭 | - | Element not found: button '저장' [context: btn:45,input:1,text:not-on-page] | +| 75 | 목록으로 이동 | - | Element not found: button '목록으로' [context: btn:45,input:1,text:not-on-page] | +| 80 | 삭제 테스트 - 팝업 상세 페이지 이동 | - | Element not found: row (수정한 팝업) [context: btn:75,input:1,text:not-on-page] | +| 81 | 삭제 버튼 클릭 | - | Element not found: button '삭제' [context: btn:75,input:1,text:not-on-page] | +| 83 | 삭제 확인 | - | Element not found: button '확인' (dialog) [context: btn:75,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 준비 | - | ✅ | 507ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 설정 > 팝업관리 | - | ✅ | 2777ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 팝업관리 / Clicked: 팝업관리 / Waited 10 | +| 2 | 페이지 제목 확인 | - | ⚠️ | 1517ms | Element not found: heading '팝업관리' | +| 3 | 페이지 설명 확인 | - | ⚠️ | 1520ms | Element not found: paragraph '팝업 목록을 관리합니다.' | +| 4 | 팝업 등록 버튼 확인 | - | ⚠️ | 1519ms | Element not found: button '팝업 등록' | +| 5 | 검색 입력 필드 확인 | - | ⚠️ | 1515ms | Element not found: textbox '제목, 작성자로 검색...' | +| 6 | 테이블 헤더 확인 | - | ⚠️ | 1516ms | Element not found: table headers | +| 7 | 테이블 데이터 행 확인 | - | ⚠️ | 1510ms | Element not found: table rows | +| 8 | 전체 항목 수 표시 확인 | - | ⚠️ | 1513ms | Element not found: text '전체 8개 중 1-8개 표시' | +| 9 | 검색 기능 - 제목으로 검색 | - | ❌ | 1516ms | Input not found: textbox '제목, 작성자로 검색...' [context: btn:45,input:1,text:not-on-p | +| 10 | 검색 결과 확인 | - | ⚠️ | 1519ms | Element not found: table rows | +| 11 | 검색어 초기화 | - | ❌ | 1519ms | Input not found: textbox '제목, 작성자로 검색...' [context: btn:45,input:1,text:not-on-p | +| 12 | 전체 목록 재표시 확인 | - | ⚠️ | 1517ms | Element not found: table rows | +| 13 | 팝업 등록 페이지 이동 | - | ❌ | 1505ms | Element not found: button '팝업 등록' [context: btn:45,input:1,text:found-on-page] | +| 14 | 등록 페이지 URL 확인 | - | ⚠️ | 1514ms | Element not found: url | +| 15 | 등록 페이지 제목 확인 | - | ⚠️ | 1520ms | Element not found: heading '팝업관리 상세' | +| 16 | 팝업 정보 섹션 확인 | - | ⚠️ | 1519ms | Element not found: heading '팝업 정보 *' | +| 17 | 대상 Combobox 확인 | - | ⚠️ | 1517ms | Element not found: combobox (대상) | +| 18 | 대상 Combobox 클릭 | - | ❌ | 1517ms | Element not found: combobox (대상) [context: btn:45,input:1,text:found-on-page] | +| 19 | 대상 옵션 확인 | - | ⚠️ | 1518ms | Element not found: combobox options | +| 20 | 대상 '부서별' 선택 | - | ❌ | 1504ms | Element not found: option '부서별' [context: btn:45,input:1,text:found-on-page] | +| 21 | 기간 시작일 필드 확인 | - | ⚠️ | 1517ms | Element not found: textbox (기간 시작일) | +| 22 | 기간 종료일 필드 확인 | - | ⚠️ | 1517ms | Element not found: textbox (기간 종료일) | +| 23 | 제목 필드 확인 | - | ⚠️ | 1519ms | Element not found: textbox '제목 *' | +| 24 | 제목 입력 | - | ❌ | 1512ms | Input not found: textbox '제목 *' [context: btn:45,input:1,text:found-on-page] | +| 25 | 내용 편집기 확인 | - | ⚠️ | 1521ms | Element not found: editor toolbar | +| 26 | 내용 입력 영역 확인 | - | ⚠️ | 1506ms | Element not found: paragraph '내용을 입력해주세요' | +| 27 | 내용 입력 | - | ❌ | 1527ms | Input not found: editor content area [context: btn:45,input:1] | +| 28 | 상태 Radio 버튼 확인 | - | ⚠️ | 1514ms | Element not found: radiogroup (상태) | +| 29 | 기본 상태 확인 | - | ⚠️ | 1511ms | Element not found: radio '사용안함' | +| 30 | 상태 '사용함' 선택 | - | ❌ | 1519ms | Element not found: radio '사용함' [context: btn:45,input:1,text:found-on-page] | +| 31 | 작성자 필드 확인 | - | ⚠️ | 1513ms | Element not found: textbox (작성자) [disabled] | +| 32 | 등록일시 필드 확인 | - | ⚠️ | 1521ms | Element not found: textbox (등록일시) [disabled] | +| 33 | 취소 버튼 확인 | - | ⚠️ | 1521ms | Element not found: button '취소' | +| 34 | 등록 버튼 확인 | - | ⚠️ | 1513ms | Element not found: button '등록' | +| 35 | 등록 전 URL 저장 | - | ✅ | 0ms | Saved URL → saved_url | +| 36 | 등록 버튼 클릭 | - | ❌ | 1523ms | Element not found: button '등록' [context: btn:45,input:1,text:found-on-page] | +| 37 | 등록 후 URL 확인 | - | ⚠️ | 1504ms | Element not found: url | +| 38 | 등록 성공 토스트 확인 | - | ⚠️ | 1520ms | Element not found: toast message | +| 39 | 등록 API 호출 확인 | - | ⚠️ | 1508ms | Element not found: network request | +| 40 | 신규 팝업 목록 확인 | - | ⚠️ | 1513ms | Element not found: table rows | +| 41 | 첫 번째 팝업 행 클릭 | - | ❌ | 1509ms | Element not found: row (첫 번째 팝업) [context: btn:45,input:1,text:not-on-page] | +| 42 | 상세 페이지 URL 확인 | - | ⚠️ | 1505ms | Element not found: url | +| 43 | 상세 페이지 제목 확인 | - | ⚠️ | 1511ms | Element not found: heading '팝업관리 상세' | +| 44 | 팝업 정보 섹션 확인 | - | ⚠️ | 1511ms | Element not found: heading '팝업 정보' | +| 45 | 상태 뱃지 확인 | - | ⚠️ | 1531ms | Element not found: badge (상태) | +| 46 | 대상 정보 확인 | - | ⚠️ | 1510ms | Element not found: definition (대상) | +| 47 | 작성자 정보 확인 | - | ⚠️ | 1512ms | Element not found: definition (작성자) | +| 48 | 제목 정보 확인 | - | ⚠️ | 1522ms | Element not found: definition (제목) | +| 49 | 상태 정보 확인 | - | ⚠️ | 1515ms | Element not found: definition (상태) | +| 50 | 기간 정보 확인 | - | ⚠️ | 1520ms | Element not found: definition (기간) | +| 51 | 등록일시 정보 확인 | - | ⚠️ | 1515ms | Element not found: definition (등록일시) | +| 52 | 내용 정보 확인 | - | ⚠️ | 1516ms | Element not found: definition (내용) | +| 53 | 목록으로 버튼 확인 | - | ⚠️ | 1514ms | Element not found: button '목록으로' | +| 54 | 삭제 버튼 확인 | - | ⚠️ | 1508ms | Element not found: button '삭제' | +| 55 | 수정 버튼 확인 | - | ⚠️ | 1523ms | Element not found: button '수정' | +| 56 | 수정 페이지 이동 | - | ❌ | 1515ms | Element not found: button '수정' [context: btn:45,input:1,text:not-on-page] | +| 57 | 수정 페이지 URL 확인 | - | ⚠️ | 1515ms | Element not found: url | +| 58 | 수정 페이지 제목 확인 | - | ⚠️ | 1513ms | Element not found: heading '팝업관리 상세' | +| 59 | 기존 데이터 로드 확인 - 대상 | - | ⚠️ | 1524ms | Element not found: combobox (대상) | +| 60 | 기존 데이터 로드 확인 - 제목 | - | ⚠️ | 1518ms | Element not found: textbox '제목 *' | +| 61 | 기존 데이터 로드 확인 - 내용 | - | ⚠️ | 1512ms | Element not found: editor content area | +| 62 | 기존 데이터 로드 확인 - 상태 | - | ⚠️ | 1523ms | Element not found: radio '사용함' | +| 63 | 제목 수정 | - | ❌ | 1520ms | Input not found: textbox '제목 *' [context: btn:45,input:1,text:found-on-page] | +| 64 | 내용 수정 | - | ❌ | 1519ms | Input not found: editor content area [context: btn:45,input:1] | +| 65 | 상태 변경 - 사용안함 선택 | - | ❌ | 1529ms | Element not found: radio '사용안함' [context: btn:45,input:1,text:found-on-page] | +| 66 | 저장 버튼 확인 | - | ⚠️ | 1521ms | Element not found: button '저장' | +| 67 | 저장 전 URL 저장 | - | ✅ | 0ms | Saved URL → saved_url | +| 68 | 저장 버튼 클릭 | - | ❌ | 1521ms | Element not found: button '저장' [context: btn:45,input:1,text:not-on-page] | +| 69 | 저장 후 URL 확인 | - | ⚠️ | 1506ms | Element not found: url | +| 70 | 저장 성공 토스트 확인 | - | ⚠️ | 1507ms | Element not found: toast message | +| 71 | 수정 API 호출 확인 | - | ⚠️ | 1514ms | Element not found: network request | +| 72 | 수정된 데이터 확인 - 제목 | - | ⚠️ | 1512ms | Element not found: definition (제목) | +| 73 | 수정된 데이터 확인 - 내용 | - | ⚠️ | 1509ms | Element not found: definition (내용) | +| 74 | 수정된 데이터 확인 - 상태 | - | ⚠️ | 1512ms | Element not found: definition (상태) | +| 75 | 목록으로 이동 | - | ❌ | 1516ms | Element not found: button '목록으로' [context: btn:45,input:1,text:not-on-page] | +| 76 | 목록 페이지 URL 확인 | - | ⚠️ | 1513ms | Element not found: url | +| 77 | 수정된 팝업 목록 확인 | - | ⚠️ | 1508ms | Element not found: table rows | +| 78 | 페이지 새로고침 | - | ✅ | 1ms | Page reload | +| 79 | 새로고침 후 데이터 유지 확인 | - | ⚠️ | 1519ms | Element not found: table rows | +| 80 | 삭제 테스트 - 팝업 상세 페이지 이동 | - | ❌ | 1514ms | Element not found: row (수정한 팝업) [context: btn:75,input:1,text:not-on-page] | +| 81 | 삭제 버튼 클릭 | - | ❌ | 1514ms | Element not found: button '삭제' [context: btn:75,input:1,text:not-on-page] | +| 82 | 삭제 확인 다이얼로그 확인 | - | ⚠️ | 1515ms | Element not found: dialog | +| 83 | 삭제 확인 | - | ❌ | 1521ms | Element not found: button '확인' (dialog) [context: btn:75,input:1,text:not-on-pag | +| 84 | 삭제 후 URL 확인 | - | ⚠️ | 1515ms | Element not found: url | +| 85 | 삭제 성공 토스트 확인 | - | ⚠️ | 1504ms | Element not found: toast message | +| 86 | 삭제 API 호출 확인 | - | ⚠️ | 1517ms | Element not found: network request | +| 87 | 삭제된 팝업 목록에서 제거 확인 | - | ⚠️ | 1518ms | Element not found: table rows | +| 88 | 전체 항목 수 갱신 확인 | - | ⚠️ | 1529ms | Element not found: text (전체 항목 수) | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/popup-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_popup-management_2026-03-07_21-31-32.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 902 | +| 테이블 행 | 9 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-position-management_2026-03-07_21-32-03.md b/Fail-position-management_2026-03-07_21-32-03.md new file mode 100644 index 0000000..f4c4611 --- /dev/null +++ b/Fail-position-management_2026-03-07_21-32-03.md @@ -0,0 +1,61 @@ +# ❌ E2E 테스트 실패: 직책관리 테스트 + +**테스트 ID**: position-management | **실행**: 2026-03-07_21-32-03 | **결과**: FAIL +**소요 시간**: 30.9초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 13 | 8 | 3 | 2 | 62% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-3 | 필수 검증 #2: 직책 추가 모달 열기 | - | Timeout waiting for modal [context: btn:136,input:1,text:found-on-page] | +| step-4 | 직책 추가 폼 입력 | - | Input not found: 직책명 [context: btn:136,input:1,text:not-on-page] | +| step-8 | 직책 정보 수정 | - | Input not found: 직책명 [context: btn:136,input:1,text:not-on-page]; Input not found: 직책명 [context: btn | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 502ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 설정 메뉴 진입 | - | ✅ | 1525ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Clicked: 직책관리 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #2: 직책 추가 모달 열기 | - | ❌ | 16966ms | Timeout waiting for modal [context: btn:136,input:1,text:found-on-page] | +| step-4 | 직책 추가 폼 입력 | - | ❌ | 1507ms | Input not found: 직책명 [context: btn:136,input:1,text:not-on-page] | +| step-5 | 필수 검증 #2: 직책 추가 저장 | - | ✅ | 414ms | Clicked: 저장 | +| step-6 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-7 | 직책 수정 버튼 클릭 | - | ⚠️ | 0ms | Unknown action type: findItem | +| step-8 | 직책 정보 수정 | - | ❌ | 3474ms | Input not found: 직책명 [context: btn:136,input:1,text:not-on-page] / Input not fou | +| step-9 | 필수 검증 #4: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-10 | 직책 삭제 버튼 클릭 | - | ⚠️ | 0ms | Unknown action type: findItem | +| step-11 | 삭제 확인 | - | ✅ | 412ms | Clicked: 확인 | +| step-12 | 필수 검증 #4: 삭제 데이터 반영 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 99ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/titles | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_position-management_2026-03-07_21-32-03.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1259 | +| 테이블 행 | 0 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-price-management_2026-03-07_21-32-23.md b/Fail-price-management_2026-03-07_21-32-23.md new file mode 100644 index 0000000..5ea9021 --- /dev/null +++ b/Fail-price-management_2026-03-07_21-32-23.md @@ -0,0 +1,61 @@ +# ❌ E2E 테스트 실패: 단가관리 테스트 + +**테스트 ID**: price-management | **실행**: 2026-03-07_21-32-23 | **결과**: FAIL +**소요 시간**: 20.3초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 15 | 11 | 4 | 0 | 73% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 판매관리 메뉴 진입 | - | Element not found: 단가관리 [context: btn:83,input:1,text:not-on-page] | +| step-6 | 미등록 품목 선택 | - | Row with "undefined" not found | +| step-10 | 등록된 단가 품목 선택 | - | Row with "undefined" not found | +| step-11 | 단가 정보 수정 | - | Element not found: 수정 [context: btn:83,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 516ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 판매관리 메뉴 진입 | - | ❌ | 2630ms | Found: 판매관리 / Clicked: 판매관리 / Waited 500ms / Element not found: 단가관리 [context: b | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 품목유형 탭 필터 - 제품 | - | ✅ | 728ms | Clicked: 제품 / Waited 300ms | +| step-4 | 필수 검증 #3: 품목유형 탭 필터 - 소모품 | - | ✅ | 718ms | Clicked: 소모품 / Waited 300ms | +| step-5 | 전체 탭으로 복귀 | - | ✅ | 725ms | Clicked: 전체 / Waited 300ms | +| step-6 | 미등록 품목 선택 | - | ❌ | 1515ms | Row with "undefined" not found | +| step-7 | 필수 검증 #2: 단가 등록 폼 입력 | - | ✅ | 618ms | Filled "매입단가" with "{testData.price.purchasePrice}" / Filled "가공비" with "{testDa | +| step-8 | 필수 검증 #2: 단가 등록 저장 | - | ✅ | 413ms | Clicked: 저장 | +| step-9 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-10 | 등록된 단가 품목 선택 | - | ❌ | 1523ms | Row with "undefined" not found | +| step-11 | 단가 정보 수정 | - | ❌ | 2648ms | Element not found: 수정 [context: btn:83,input:1,text:not-on-page] / Waited 300ms | +| step-12 | 필수 검증 #4: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-13 | 품목 마스터 동기화 버튼 테스트 | - | ✅ | 1409ms | Clicked: 품목 마스터 동기화 / Waited 1000ms | +| step-14 | 페이지네이션 확인 | - | ✅ | 720ms | Clicked: 다음 / Waited 300ms | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/sales/pricing-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_price-management_2026-03-07_21-32-23.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1529 | +| 테이블 행 | 20 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-process-management_2026-03-07_21-33-11.md b/Fail-process-management_2026-03-07_21-33-11.md new file mode 100644 index 0000000..d0e1d22 --- /dev/null +++ b/Fail-process-management_2026-03-07_21-33-11.md @@ -0,0 +1,69 @@ +# ❌ E2E 테스트 실패: 공정관리 테스트 + +**테스트 ID**: process-management | **실행**: 2026-03-07_21-33-11 | **결과**: FAIL +**소요 시간**: 48.2초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 16 | 8 | 8 | 0 | 50% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 기준정보 관리 메뉴 진입 | - | Element not found: 공정관리 [context: btn:45,input:1,text:not-on-page] | +| step-3 | 탭 기능 확인 | - | Element not found: 사용중 [context: btn:45,input:1,text:not-on-page] | +| step-4 | 필수 검증 #2: 공정 등록 모달 열기 | - | Timeout waiting for modal [context: btn:128,input:0,text:not-on-page] | +| step-5 | 공정 등록 폼 입력 | - | Input not found: 공정코드 [context: btn:128,input:0,text:not-on-page]; Dropdown option "{testData.proces | +| step-8 | 등록된 공정 상세 열기 | - | Row with "undefined" not found | +| step-9 | 공정 정보 수정 | - | Element not found: 수정 [context: btn:38,input:2,text:not-on-page]; Input not found: 공정명 [context: btn | +| step-11 | 공정 삭제 준비 | - | Row with "undefined" not found | +| step-15 | 날짜 필터 확인 | - | Element not found: 당월 [context: btn:38,input:2,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 516ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 기준정보 관리 메뉴 진입 | - | ❌ | 2639ms | Found: 기준정보 관리 / Clicked: 기준정보 관리 / Waited 500ms / Element not found: 공정관리 [cont | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 탭 기능 확인 | - | ❌ | 2970ms | Element not found: 사용중 [context: btn:45,input:1,text:not-on-page] / Waited 300ms | +| step-4 | 필수 검증 #2: 공정 등록 모달 열기 | - | ❌ | 17065ms | Timeout waiting for modal [context: btn:128,input:0,text:not-on-page] | +| step-5 | 공정 등록 폼 입력 | - | ❌ | 9376ms | Input not found: 공정코드 [context: btn:128,input:0,text:not-on-page] / Filled "공정명" | +| step-6 | 필수 검증 #2: 공정 등록 저장 | - | ✅ | 413ms | Clicked: 등록 | +| step-7 | 필수 검증 #4: 등록 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-8 | 등록된 공정 상세 열기 | - | ❌ | 1508ms | Row with "undefined" not found | +| step-9 | 공정 정보 수정 | - | ❌ | 3450ms | Element not found: 수정 [context: btn:38,input:2,text:not-on-page] / Input not fou | +| step-10 | 필수 검증 #4: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-11 | 공정 삭제 준비 | - | ❌ | 1520ms | Row with "undefined" not found | +| step-12 | 공정 삭제 | - | ✅ | 418ms | Clicked: 삭제 | +| step-13 | 삭제 확인 | - | ✅ | 416ms | Clicked: 확인 | +| step-14 | 필수 검증 #4: 삭제 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-15 | 날짜 필터 확인 | - | ❌ | 1832ms | Element not found: 당월 [context: btn:38,input:2,text:not-on-page] / Waited 300ms | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 6 | 6 | 0 | 74ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/master-data/process-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_process-management_2026-03-07_21-33-11.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 451 | +| 테이블 행 | 0 | +| API 호출 수 | 6 | +| 로딩 스피너 | No | diff --git a/Fail-production-dashboard_2026-03-07_21-33-36.md b/Fail-production-dashboard_2026-03-07_21-33-36.md new file mode 100644 index 0000000..13883af --- /dev/null +++ b/Fail-production-dashboard_2026-03-07_21-33-36.md @@ -0,0 +1,129 @@ +# ❌ E2E 테스트 실패: undefined + +**테스트 ID**: production-dashboard | **실행**: 2026-03-07_21-33-36 | **결과**: FAIL +**소요 시간**: 24.5초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 81 | 13 | 6 | 62 | 16% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 25 | 스크린 탭 클릭 | - | Element not found: undefined | +| 29 | 전체 탭으로 복귀 | - | Element not found: undefined | +| 33 | 지연 작업 카드 클릭 | - | Element not found: undefined | +| 55 | 목록 버튼 클릭 | - | Element not found: undefined | +| 67 | 작업자 화면 버튼 클릭 | - | Element not found: undefined | +| 72 | 작업지시 목록 버튼 클릭 | - | Element not found: undefined | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 초기화 | - | ✅ | 508ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 2단계 메뉴 진입: 생산관리 > 생산 현황판 | - | ✅ | 2753ms | Found: 생산관리 / Clicked: 생산관리 / Waited 500ms / Found: 생산 현황판 / Clicked: 생산 현황판 / W | +| 2 | 페이지 로딩 대기 | - | ✅ | 4ms | Waited 3ms | +| 3 | 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 4 | 페이지 설명 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 5 | 작업자 화면 버튼 존재 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 6 | 작업지시 목록 버튼 존재 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 7 | 공장 탭 필터 확인 - 전체 탭 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 8 | 공장 탭 필터 확인 - 스크린 탭 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 9 | 통계 카드 6개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyCount | +| 10 | 전체 작업 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 11 | 작업 대기 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 12 | 작업중 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 13 | 작업 완료 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 14 | 긴급 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 15 | 지연 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 16 | 긴급 작업 섹션 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 17 | 긴급 작업 개수 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 18 | 지연 작업 섹션 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 19 | 지연 작업 개수 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 20 | 지연 작업 카드 존재 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 21 | 지연 작업 카드 - 작업상태 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 22 | 지연 작업 카드 - 발주처 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 23 | 지연 작업 카드 - 지연일수 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 24 | 작업자별 현황 섹션 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 25 | 스크린 탭 클릭 | - | ❌ | 1519ms | Element not found: undefined | +| 26 | 스크린 탭 선택 확인 | - | ⚠️ | 0ms | Unknown action type: verifyAttribute | +| 27 | 스크린 공장 - 통계 변경 확인 | - | ⚠️ | 0ms | Unknown action type: verifyStatChange | +| 28 | 스크린 공장 - 지연 작업 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 29 | 전체 탭으로 복귀 | - | ❌ | 1520ms | Element not found: undefined | +| 30 | 전체 탭 선택 확인 | - | ⚠️ | 0ms | Unknown action type: verifyAttribute | +| 31 | 전체 필터 - 통계 복귀 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 32 | 전체 필터 - 지연 작업 복귀 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 33 | 지연 작업 카드 클릭 | - | ❌ | 1528ms | Element not found: undefined | +| 34 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/dashboard | +| 35 | 작업지시 상세 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 36 | 수정 버튼 존재 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 37 | 작업일지 버튼 존재 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 38 | 목록 버튼 존재 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 39 | 기본 정보 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 40 | 작업지시번호 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 41 | 로트번호 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 42 | 작업상태 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 43 | 발주처 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 44 | 현장명 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 45 | 납기일 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 46 | 우선순위 확인 | - | ⚠️ | 0ms | Unknown action type: verifyData | +| 47 | 공정 진행 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 48 | 공정 단계 1 - 원단절단 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 49 | 공정 단계 2 - 미싱 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 50 | 공정 단계 3 - 앤드락작업 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 51 | 공정 단계 4 - 중간검사 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 52 | 공정 단계 5 - 포장 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 53 | 작업 품목 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 54 | 작업 품목 없음 메시지 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 55 | 목록 버튼 클릭 | - | ❌ | 1522ms | Element not found: undefined | +| 56 | URL 변경 확인 - 작업지시 목록 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/dashboard | +| 57 | 작업지시 목록 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 58 | 작업지시 목록 - 등록 버튼 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 59 | 작업지시 목록 - 통계 카드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyCount | +| 60 | 작업지시 목록 - 검색창 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 61 | 작업지시 목록 - 상태 탭 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 62 | 작업지시 목록 - 테이블 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 63 | 작업지시 목록 - 테이블 헤더 확인 | - | ⚠️ | 0ms | Unknown action type: verifyTableHeaders | +| 64 | 작업지시 목록 - 데이터 행 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 65 | 생산 현황판으로 복귀 | - | ✅ | 0ms | Navigate: undefined | +| 66 | 페이지 로딩 대기 | - | ✅ | 4ms | Waited 3ms | +| 67 | 작업자 화면 버튼 클릭 | - | ❌ | 1502ms | Element not found: undefined | +| 68 | URL 변경 확인 - 작업자 화면 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/dashboard | +| 69 | 작업자 화면 페이지 확인 | - | ⚠️ | 0ms | Unknown action type: verifyPage | +| 70 | 생산 현황판으로 재복귀 | - | ✅ | 0ms | Navigate: undefined | +| 71 | 페이지 로딩 대기 | - | ✅ | 4ms | Waited 3ms | +| 72 | 작업지시 목록 버튼 클릭 | - | ❌ | 1506ms | Element not found: undefined | +| 73 | URL 변경 확인 - 작업지시 목록 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/dashboard | +| 74 | 작업지시 목록 페이지 재확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 75 | 최종 검증 - 생산 현황판 복귀 | - | ✅ | 0ms | Navigate: undefined | +| 76 | 페이지 로딩 대기 | - | ✅ | 4ms | Waited 3ms | +| 77 | 최종 검증 - 페이지 제목 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 78 | 최종 검증 - 전체 탭 선택 | - | ⚠️ | 0ms | Unknown action type: verifyAttribute | +| 79 | 최종 검증 - 통계 카드 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 80 | 최종 검증 - 지연 작업 | - | ⚠️ | 0ms | Unknown action type: verifyElement | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/production/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_production-dashboard_2026-03-07_21-33-36.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 493 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-quality-certification_2026-03-07_21-33-51.md b/Fail-quality-certification_2026-03-07_21-33-51.md new file mode 100644 index 0000000..89d2de1 --- /dev/null +++ b/Fail-quality-certification_2026-03-07_21-33-51.md @@ -0,0 +1,57 @@ +# ❌ E2E 테스트 실패: 품질인정심사 시스템 테스트 + +**테스트 ID**: quality-certification | **실행**: 2026-03-07_21-33-51 | **결과**: FAIL +**소요 시간**: 15.5초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 12 | 8 | 3 | 1 | 67% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-3 | 필수 검증 #3: 년도 필터 기능 | - | Element not found: 년도 [context: btn:52,input:1,text:not-on-page] | +| step-7 | 점검 항목 선택 | - | Element not found: 수입검사 기준 확인 [context: btn:49,input:1,text:not-on-page] | +| step-8 | 필수 검증 #2: 체크 상태 변경 | - | Element not found: 자재 보관 기준 확인 [context: btn:49,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 508ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 품질관리 메뉴 진입 | - | ✅ | 1538ms | Found: 품질관리 / Clicked: 품질관리 / Waited 500ms / Clicked: 품질인정심사 시스템 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 년도 필터 기능 | - | ❌ | 1926ms | Element not found: 년도 [context: btn:52,input:1,text:not-on-page] / Clicked: 2025 | +| step-4 | 필수 검증 #3: 분기 필터 기능 | - | ✅ | 410ms | Clicked: 1분기 | +| step-5 | 필수 검증 #3: 조회 버튼 동작 | - | ✅ | 431ms | Clicked: 조회 | +| step-6 | 점검표 항목 펼치기 | - | ✅ | 422ms | Clicked: 원재료 품질관리 기준 | +| step-7 | 점검 항목 선택 | - | ❌ | 1515ms | Element not found: 수입검사 기준 확인 [context: btn:49,input:1,text:not-on-page] | +| step-8 | 필수 검증 #2: 체크 상태 변경 | - | ❌ | 2236ms | Element not found: 자재 보관 기준 확인 [context: btn:49,input:1,text:not-on-page] / Wait | +| step-9 | 필수 검증 #4: 체크 상태 반영 확인 | - | ✅ | 0ms | No action | +| step-10 | 다른 카테고리 확인 | - | ✅ | 403ms | Clicked: 제조공정 관리 기준 | +| step-11 | 화면 설정 확인 | - | ⚠️ | 0ms | Unknown action type: conditionalClick | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/quality/qms | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_quality-certification_2026-03-07_21-33-51.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 491 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-rank-management_2026-03-07_21-34-23.md b/Fail-rank-management_2026-03-07_21-34-23.md new file mode 100644 index 0000000..36522c2 --- /dev/null +++ b/Fail-rank-management_2026-03-07_21-34-23.md @@ -0,0 +1,59 @@ +# ❌ E2E 테스트 실패: 설정 - 직급관리 + +**테스트 ID**: rank-management | **실행**: 2026-03-07_21-34-23 | **결과**: FAIL +**소요 시간**: 31.2초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 10 | 5 | 4 | 1 | 50% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-06 | 직급 추가 - 빈 값 입력 시도 | - | Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] | +| step-07 | 직급 추가 - 공백만 입력 시도 | - | Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] | +| step-08 | 직급 추가 - 정상 입력 | - | Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] | +| step-09 | 직급 추가 실행 (버튼 클릭) | - | Element not found: 추가 버튼 [context: btn:154,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-00 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7307ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| step-01 | 2단계 메뉴 진입: 설정 > 직급관리 | - | ✅ | 11743ms | Found: 설정 / Clicked: 설정 / Waited 500ms / Found: 직급관리 / Clicked: 직급관리 / Waited 10 | +| step-02 | 직급 추가 입력 영역 확인 | - | ✅ | 0ms | No checks defined | +| step-03 | 직급 목록 카드 확인 | - | ✅ | 0ms | No checks defined | +| step-04 | 드래그 핸들 아이콘 확인 | - | ✅ | 0ms | No checks defined | +| step-05 | 안내 문구 확인 | - | ✅ | 0ms | No checks defined | +| step-06 | 직급 추가 - 빈 값 입력 시도 | - | ❌ | 1521ms | Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] | +| step-07 | 직급 추가 - 공백만 입력 시도 | - | ❌ | 1520ms | Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] | +| step-08 | 직급 추가 - 정상 입력 | - | ❌ | 1516ms | Input not found: 직급명 입력 필드 [context: btn:154,input:1,text:not-on-page] | +| step-09 | 직급 추가 실행 (버튼 클릭) | - | ❌ | 1514ms | Element not found: 추가 버튼 [context: btn:154,input:1,text:not-on-page] | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 107ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/settings/ranks | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_rank-management_2026-03-07_21-34-22.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1403 | +| 테이블 행 | 0 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-receivables-status_2026-03-07_21-35-02.md b/Fail-receivables-status_2026-03-07_21-35-02.md new file mode 100644 index 0000000..23a8181 --- /dev/null +++ b/Fail-receivables-status_2026-03-07_21-35-02.md @@ -0,0 +1,54 @@ +# ❌ E2E 테스트 실패: 미수금현황 테스트 + +**테스트 ID**: receivables-status | **실행**: 2026-03-07_21-35-02 | **결과**: FAIL +**소요 시간**: 39.3초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 9 | 0 | 3 | 2 | 0% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-6 | 연도 선택 드롭다운 옵션 확인 | - | Element not found: 연도 선택 드롭다운 [context: btn:272,input:1,text:not-on-page] | +| step-7 | 정렬 드롭다운 옵션 확인 | - | Element not found: 정렬 드롭다운 [context: btn:272,input:1,text:not-on-page] | +| step-8 | ⚠️ 필수 검증: 거래처 검색 기능 테스트 | - | Input not found: 검색 입력 필드 [context: btn:272,input:1,text:not-on-page]; Input not found: 검색 입력 필드 [co | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7350ms | Requires native screenshot | +| 1 | 1차 메뉴 찾기: 회계관리 (스크롤 포함) | - | ⚠️ | 1437ms | Requires native screenshot | +| 2 | 2차 메뉴 찾기: 미수금현황 (스크롤 포함) | - | ⚠️ | 10823ms | Requires native screenshot | +| 3 | 404 에러 감지 및 대체 경로 시도 | - | ⚠️ | 3028ms | Requires native screenshot | +| 4 | 페이지 정상 로드 확인 | - | ⚠️ | 3049ms | Element not found: pageTitle / Element not found: pageContent | +| step-5 | 목록 페이지 구조 확인 | - | ⚠️ | 1539ms | Element not found: 페이지 구조 | +| step-6 | 연도 선택 드롭다운 옵션 확인 | - | ❌ | 3075ms | Element not found: 연도 선택 드롭다운 [context: btn:272,input:1,text:not-on-page] / Elem | +| step-7 | 정렬 드롭다운 옵션 확인 | - | ❌ | 3070ms | Element not found: 정렬 드롭다운 [context: btn:272,input:1,text:not-on-page] / Element | +| step-8 | ⚠️ 필수 검증: 거래처 검색 기능 테스트 | - | ❌ | 4082ms | Captured count: 350 / Input not found: 검색 입력 필드 [context: btn:272,input:1,text:n | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 109ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/dashboard | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_receivables-status_2026-03-07_21-35-02.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 8315 | +| 테이블 행 | 350 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-receiving-management_2026-03-07_21-35-13.md b/Fail-receiving-management_2026-03-07_21-35-13.md new file mode 100644 index 0000000..6b9a972 --- /dev/null +++ b/Fail-receiving-management_2026-03-07_21-35-13.md @@ -0,0 +1,51 @@ +# ❌ E2E 테스트 실패: 입고관리 테스트 + +**테스트 ID**: receiving-management | **실행**: 2026-03-07_21-35-13 | **결과**: FAIL +**소요 시간**: 11.4초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 8 | 7 | 1 | 0 | 88% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-1 | 자재관리 메뉴 진입 | - | Element not found: 입고관리 [context: btn:51,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 505ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 자재관리 메뉴 진입 | - | ❌ | 2635ms | Found: 자재관리 / Clicked: 자재관리 / Waited 500ms / Element not found: 입고관리 [context: b | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 상태 탭 필터 - 입고대기 | - | ✅ | 719ms | Clicked: 입고대기 / Waited 300ms | +| step-4 | 필수 검증 #3: 상태 탭 필터 - 입고완료 | - | ✅ | 732ms | Clicked: 입고완료 / Waited 300ms | +| step-5 | 전체 탭으로 복귀 | - | ✅ | 735ms | Clicked: 전체 / Waited 300ms | +| step-6 | 빈 상태 확인 | - | ✅ | 0ms | No action | +| step-7 | 통계 카드 값 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/material/receiving-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_receiving-management_2026-03-07_21-35-13.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1064 | +| 테이블 행 | 7 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-reference-box_2026-03-07_21-35-41.md b/Fail-reference-box_2026-03-07_21-35-41.md new file mode 100644 index 0000000..29f18ad --- /dev/null +++ b/Fail-reference-box_2026-03-07_21-35-41.md @@ -0,0 +1,51 @@ +# ❌ E2E 테스트 실패: undefined + +**테스트 ID**: reference-box | **실행**: 2026-03-07_21-35-41 | **결과**: FAIL +**소요 시간**: 27.7초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 8 | 1 | 1 | 6 | 13% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 7 | ⚠️ 필수 검증: 검색 기능 - 기안자 검색 | - | Input not found: 검색창 [context: btn:43,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7317ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| 1 | 2단계 메뉴 진입: 결재관리 > 참조함 | - | ✅ | 11737ms | Found: 결재관리 / Clicked: 결재관리 / Waited 500ms / Found: 참조함 / Clicked: 참조함 / Waited | +| 2 | 데이터 로딩 대기 | - | ⚠️ | 0ms | Unknown action type: 3초 대기하여 API 데이터 로드 완료 | +| 3 | 통계 카드 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: 통계 카드의 숫자 확인 | +| 4 | 탭 전환 - 열람 탭 | - | ⚠️ | 0ms | Unknown action type: '열람' 탭 클릭 | +| 5 | 탭 전환 - 미열람 탭 | - | ⚠️ | 0ms | Unknown action type: '미열람' 탭 클릭 | +| 6 | 탭 전환 - 전체 탭으로 복귀 | - | ⚠️ | 0ms | Unknown action type: '전체' 탭 클릭 | +| 7 | ⚠️ 필수 검증: 검색 기능 - 기안자 검색 | - | ❌ | 2531ms | Captured count: 1 / Input not found: 검색창 [context: btn:43,input:1,text:not-on-pa | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/approval/reference | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_reference-box_2026-03-07_21-35-41.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 599 | +| 테이블 행 | 1 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-salary-management_2026-03-07_21-35-53.md b/Fail-salary-management_2026-03-07_21-35-53.md new file mode 100644 index 0000000..929be00 --- /dev/null +++ b/Fail-salary-management_2026-03-07_21-35-53.md @@ -0,0 +1,50 @@ +# ❌ E2E 테스트 실패: 급여관리 테스트 + +**테스트 ID**: salary-management | **실행**: 2026-03-07_21-35-53 | **결과**: FAIL +**소요 시간**: 11.9초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 7 | 6 | 1 | 0 | 86% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-5-1 | ⚠️ 필수 검증: 날짜 필터 검색 | - | Input not found: 시작일 [context: btn:37,input:1,text:not-on-page]; Input not found: 종료일 [context: btn: | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 509ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 인사관리 메뉴 진입 | - | ✅ | 1740ms | Found: 인사관리 / Clicked: 인사관리 / Waited 500ms / Found: 급여관리 / Clicked: 급여관리 | +| step-2 | 필수 검증 #5: 목업 페이지 감지 | - | ✅ | 0ms | No action | +| step-3 | 급여 현황 대시보드 확인 | - | ✅ | 0ms | No action | +| step-4 | 급여 테이블 구조 확인 | - | ✅ | 0ms | No action | +| step-5 | 날짜 필터 확인 | - | ✅ | 0ms | No action | +| step-5-1 | ⚠️ 필수 검증: 날짜 필터 검색 | - | ❌ | 3544ms | Captured count: 2 / Input not found: 시작일 [context: btn:37,input:1,text:not-on-pa | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/salary-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_salary-management_2026-03-07_21-35-53.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 728 | +| 테이블 행 | 2 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-sales-management_2026-03-07_21-37-02.md b/Fail-sales-management_2026-03-07_21-37-02.md new file mode 100644 index 0000000..4932f71 --- /dev/null +++ b/Fail-sales-management_2026-03-07_21-37-02.md @@ -0,0 +1,119 @@ +# ❌ E2E 테스트 실패: 매출관리 테스트 + +**테스트 ID**: sales-management | **실행**: 2026-03-07_21-37-02 | **결과**: FAIL +**소요 시간**: 69.5초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 53 | 24 | 24 | 5 | 45% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 1 | 로그인 | - | fill_form: no fields filled (0 not found) [context: btn:241,input:1] | +| 6 | 계정과목명 드롭박스 옵션 확인 | - | Dropdown trigger not found: accountSubject [context: btn:205,input:1] | +| 7 | 체크박스 선택 (계정과목 저장용) | - | Checkbox not found: first_row [context: btn:205,input:1] | +| 8 | 계정과목 변경 - 제품매출 선택 | - | Dropdown trigger not found: accountSubject [context: btn:205,input:1] | +| 10 | 저장 확인 다이얼로그 - 확인 클릭 | - | No dialog found | +| 15 | 거래처명 드롭박스 클릭 | - | Dropdown trigger not found: vendorId [context: btn:30,input:5] | +| 16 | 거래처명 선택 | - | Dropdown trigger not found: vendorId [context: btn:30,input:5] | +| 17 | 매출유형 드롭박스 확인 | - | Dropdown trigger not found: salesType [context: btn:30,input:5] | +| 18 | 매출유형 선택 - 제품매출 | - | Dropdown trigger not found: salesType [context: btn:30,input:5] | +| 20 | 품목 동적 추가 - 추가 버튼 클릭 | - | Button "품목 추가" not found [context: btn:30,input:5,text:not-on-page] | +| 22 | 품목 동적 삭제 - 두 번째 행 삭제 | - | Button "remove_item_row_2" not found [context: btn:30,input:5] | +| 24 | 품목명 입력 | - | Input not found: items[0].itemName [context: btn:30,input:5] | +| 25 | 수량 입력 | - | Input not found: items[0].quantity [context: btn:30,input:5] | +| 26 | 단가 입력 | - | Input not found: items[0].unitPrice [context: btn:30,input:5] | +| 29 | 적요 입력 (선택사항) | - | Input not found: items[0].note [context: btn:30,input:5] | +| 31 | 세금계산서 발행 Switch ON | - | Checkbox not found: taxInvoiceSwitch [context: btn:30,input:5] | +| 32 | 세금계산서 발행 Switch OFF | - | Checkbox not found: taxInvoiceSwitch [context: btn:30,input:5] | +| 34 | 거래명세서 발행 Switch ON | - | Checkbox not found: transactionStatementSwitch [context: btn:30,input:5] | +| 35 | 거래명세서 발행 Switch OFF | - | Checkbox not found: transactionStatementSwitch [context: btn:30,input:5] | +| 40 | 등록 테스트용 데이터 입력 - 거래처 선택 | - | Dropdown trigger not found: vendorId [context: btn:30,input:5] | +| 41 | 등록 테스트용 데이터 입력 - 매출유형 | - | Dropdown trigger not found: salesType [context: btn:30,input:5] | +| 42 | 등록 테스트용 데이터 입력 - 품목명 | - | Input not found: items[0].itemName [context: btn:30,input:5] | +| 43 | 등록 테스트용 데이터 입력 - 수량 | - | Input not found: items[0].quantity [context: btn:30,input:5] | +| 44 | 등록 테스트용 데이터 입력 - 단가 | - | Input not found: items[0].unitPrice [context: btn:30,input:5] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 초기화 | - | ✅ | 509ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| 1 | 로그인 | - | ❌ | 1525ms | fill_form: no fields filled (0 not found) [context: btn:241,input:1] | +| 2 | 2단계 메뉴 진입: 회계관리 > 매출관리 | - | ⚠️ | 13646ms | scrollAndFind: "undefined" not found after 10 scrolls / Clicked: 회계관리 / Waited 5 | +| 3 | 필수 검증 #5: 목업 페이지 감지 | - | ✅ | 1ms | Real page: 1 inputs, 205 buttons | +| 4 | 목록 페이지 - 테이블 구조 확인 | - | ✅ | 0ms | Table: 10 cols, 20 rows | +| 5 | 계정과목명 드롭박스 확인 | - | ✅ | 1ms | Checks: 2/3 verified | +| 6 | 계정과목명 드롭박스 옵션 확인 | - | ❌ | 1518ms | Dropdown trigger not found: accountSubject [context: btn:205,input:1] | +| 7 | 체크박스 선택 (계정과목 저장용) | - | ❌ | 1518ms | Checkbox not found: first_row [context: btn:205,input:1] | +| 8 | 계정과목 변경 - 제품매출 선택 | - | ❌ | 1518ms | Dropdown trigger not found: accountSubject [context: btn:205,input:1] | +| 9 | 필수 검증 #2: 계정과목 저장 버튼 클릭 | - | ✅ | 306ms | Clicked button: 저장 | +| 10 | 저장 확인 다이얼로그 - 확인 클릭 | - | ❌ | 2446ms | No dialog found | +| 10-1 | ⚠️ 필수 검증: 계정과목명 변경 데이터 반영 확인 | - | ✅ | 0ms | Data found: "" | +| 11 | 매출 등록 버튼 클릭 | - | ✅ | 305ms | Clicked button: 매출 등록 | +| 12 | 매출 등록 페이지 - URL 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/accounting/sales?mode=new | +| 13 | 매출 등록 페이지 - 기본정보 섹션 확인 | - | ✅ | 0ms | Checks: 3/4 verified | +| 14 | 매출번호 자동생성 확인 | - | ⚠️ | 1514ms | Element not found: salesNo | +| 15 | 거래처명 드롭박스 클릭 | - | ❌ | 1511ms | Dropdown trigger not found: vendorId [context: btn:30,input:5] | +| 16 | 거래처명 선택 | - | ❌ | 1513ms | Dropdown trigger not found: vendorId [context: btn:30,input:5] | +| 17 | 매출유형 드롭박스 확인 | - | ❌ | 1511ms | Dropdown trigger not found: salesType [context: btn:30,input:5] | +| 18 | 매출유형 선택 - 제품매출 | - | ❌ | 1512ms | Dropdown trigger not found: salesType [context: btn:30,input:5] | +| 19 | 품목정보 섹션 확인 | - | ✅ | 1ms | Checks: 4/4 verified | +| 20 | 품목 동적 추가 - 추가 버튼 클릭 | - | ❌ | 1508ms | Button "품목 추가" not found [context: btn:30,input:5,text:not-on-page] | +| 21 | 품목 행 개수 확인 (2개) | - | ✅ | 0ms | Table: 8 cols, 2 rows | +| 22 | 품목 동적 삭제 - 두 번째 행 삭제 | - | ❌ | 1523ms | Button "remove_item_row_2" not found [context: btn:30,input:5] | +| 23 | 품목 행 개수 확인 (1개) | - | ✅ | 0ms | Table: 8 cols, 2 rows | +| 24 | 품목명 입력 | - | ❌ | 1512ms | Input not found: items[0].itemName [context: btn:30,input:5] | +| 25 | 수량 입력 | - | ❌ | 1512ms | Input not found: items[0].quantity [context: btn:30,input:5] | +| 26 | 단가 입력 | - | ❌ | 1516ms | Input not found: items[0].unitPrice [context: btn:30,input:5] | +| 27 | 자동계산 검증 - 공급가액 | - | ✅ | 0ms | No text to verify | +| 28 | 자동계산 검증 - 부가세 | - | ✅ | 0ms | No text to verify | +| 29 | 적요 입력 (선택사항) | - | ❌ | 1513ms | Input not found: items[0].note [context: btn:30,input:5] | +| 30 | 세금계산서 발행 Switch 확인 | - | ⚠️ | 1521ms | Element not found: taxInvoice_section | +| 31 | 세금계산서 발행 Switch ON | - | ❌ | 1507ms | Checkbox not found: taxInvoiceSwitch [context: btn:30,input:5] | +| 32 | 세금계산서 발행 Switch OFF | - | ❌ | 1519ms | Checkbox not found: taxInvoiceSwitch [context: btn:30,input:5] | +| 33 | 거래명세서 발행 Switch 확인 | - | ⚠️ | 1514ms | Element not found: transactionStatement_section | +| 34 | 거래명세서 발행 Switch ON | - | ❌ | 1511ms | Checkbox not found: transactionStatementSwitch [context: btn:30,input:5] | +| 35 | 거래명세서 발행 Switch OFF | - | ❌ | 1507ms | Checkbox not found: transactionStatementSwitch [context: btn:30,input:5] | +| 36 | 합계 금액 확인 | - | ✅ | 0ms | No text to verify | +| 37 | 취소 버튼 동작 테스트 | - | ✅ | 302ms | Clicked button: 취소 | +| 38 | 취소 확인 - 목록 페이지 복귀 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/accounting/sales | +| 39 | 다시 매출 등록 페이지 진입 | - | ✅ | 302ms | Clicked button: 매출 등록 | +| 40 | 등록 테스트용 데이터 입력 - 거래처 선택 | - | ❌ | 1517ms | Dropdown trigger not found: vendorId [context: btn:30,input:5] | +| 41 | 등록 테스트용 데이터 입력 - 매출유형 | - | ❌ | 1528ms | Dropdown trigger not found: salesType [context: btn:30,input:5] | +| 42 | 등록 테스트용 데이터 입력 - 품목명 | - | ❌ | 1511ms | Input not found: items[0].itemName [context: btn:30,input:5] | +| 43 | 등록 테스트용 데이터 입력 - 수량 | - | ❌ | 1515ms | Input not found: items[0].quantity [context: btn:30,input:5] | +| 44 | 등록 테스트용 데이터 입력 - 단가 | - | ❌ | 1530ms | Input not found: items[0].unitPrice [context: btn:30,input:5] | +| 45 | 필수 검증 #2: 등록 버튼 클릭 | - | ✅ | 305ms | Clicked button: 등록 | +| 46 | 등록 성공 확인 - 토스트 메시지 | - | ⚠️ | 3051ms | No toast/notification found | +| 47 | 등록 성공 확인 - 목록 페이지 이동 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/accounting/sales?mode=new | +| 48 | 등록된 매출 목록 확인 | - | ✅ | 0ms | Table: 8 cols, 2 rows | +| 49 | 거래처 미선택 시 유효성 검증 테스트 | - | ✅ | 0ms | Navigate to /ko/accounting/sales?mode=new | +| 50 | 거래처 미선택 상태에서 등록 시도 | - | ✅ | 309ms | Clicked button: 등록 | +| 51 | 유효성 검증 메시지 확인 | - | ✅ | 515ms | Toast visible: "" | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/sales | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_sales-management_2026-03-07_21-37-02.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 686 | +| 테이블 행 | 2 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-shipment-management_2026-03-07_21-37-16.md b/Fail-shipment-management_2026-03-07_21-37-16.md new file mode 100644 index 0000000..0abbeb3 --- /dev/null +++ b/Fail-shipment-management_2026-03-07_21-37-16.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: 출하관리 테스트 + +**테스트 ID**: shipment-management | **실행**: 2026-03-07_21-37-16 | **결과**: FAIL +**소요 시간**: 13.5초 | **에러**: Menu navigation failed: 출고관리 > 출하관리 | **중단 사유**: navigation_failed + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-attendance-management_2026-03-07_21-37-25.md b/Fail-tc-attendance-management_2026-03-07_21-37-25.md new file mode 100644 index 0000000..fb3fc88 --- /dev/null +++ b/Fail-tc-attendance-management_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 근태관리 전체 테스트 + +**테스트 ID**: tc-attendance-management | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-dashboard_2026-03-07_21-37-25.md b/Fail-tc-dashboard_2026-03-07_21-37-25.md new file mode 100644 index 0000000..83fac19 --- /dev/null +++ b/Fail-tc-dashboard_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 대시보드 전체 테스트 + +**테스트 ID**: tc-dashboard | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-department-management_2026-03-07_21-37-25.md b/Fail-tc-department-management_2026-03-07_21-37-25.md new file mode 100644 index 0000000..948ed1c --- /dev/null +++ b/Fail-tc-department-management_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 부서관리 전체 테스트 + +**테스트 ID**: tc-department-management | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-draft-box_2026-03-07_21-37-25.md b/Fail-tc-draft-box_2026-03-07_21-37-25.md new file mode 100644 index 0000000..577ed82 --- /dev/null +++ b/Fail-tc-draft-box_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 기안함 전체 테스트 + +**테스트 ID**: tc-draft-box | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-employee-management_2026-03-07_21-37-25.md b/Fail-tc-employee-management_2026-03-07_21-37-25.md new file mode 100644 index 0000000..c0cc2a9 --- /dev/null +++ b/Fail-tc-employee-management_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 사원관리 전체 테스트 + +**테스트 ID**: tc-employee-management | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-inventory-management_2026-03-07_21-37-25.md b/Fail-tc-inventory-management_2026-03-07_21-37-25.md new file mode 100644 index 0000000..ca8acde --- /dev/null +++ b/Fail-tc-inventory-management_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 재고관리 전체 테스트 + +**테스트 ID**: tc-inventory-management | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-tc-notice-board_2026-03-07_21-37-25.md b/Fail-tc-notice-board_2026-03-07_21-37-25.md new file mode 100644 index 0000000..a8a5328 --- /dev/null +++ b/Fail-tc-notice-board_2026-03-07_21-37-25.md @@ -0,0 +1,19 @@ +# ❌ E2E 테스트 실패: TC 공지사항/게시판 전체 테스트 + +**테스트 ID**: tc-notice-board | **실행**: 2026-03-07_21-37-25 | **결과**: FAIL +**소요 시간**: 0.0초 | **에러**: No steps defined | **중단 사유**: no_steps + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 0 | 0 | 0 | 0 | 0% | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| - | (스텝 없음) | - | - | - | - | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | diff --git a/Fail-vacation-management_2026-03-07_21-37-37.md b/Fail-vacation-management_2026-03-07_21-37-37.md new file mode 100644 index 0000000..091eec1 --- /dev/null +++ b/Fail-vacation-management_2026-03-07_21-37-37.md @@ -0,0 +1,49 @@ +# ❌ E2E 테스트 실패: 휴가관리 테스트 + +**테스트 ID**: vacation-management | **실행**: 2026-03-07_21-37-37 | **결과**: FAIL +**소요 시간**: 11.7초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 6 | 5 | 1 | 0 | 83% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-4-1 | ⚠️ 필수 검증: 날짜 필터 검색 | - | Input not found: 시작일 [context: btn:78,input:1,text:not-on-page]; Input not found: 종료일 [context: btn: | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 516ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 인사관리 메뉴 진입 | - | ✅ | 1562ms | Found: 인사관리 / Clicked: 인사관리 / Waited 300ms / Found: 휴가관리 / Clicked: 휴가관리 | +| step-2 | 필수 검증 #5: 목업 페이지 감지 | - | ✅ | 1ms | No action | +| step-3 | 통계 카드 대시보드 확인 | - | ✅ | 0ms | No action | +| step-4 | 휴가 사용현황 탭 확인 (기본 탭) | - | ✅ | 0ms | No action | +| step-4-1 | ⚠️ 필수 검증: 날짜 필터 검색 | - | ❌ | 3542ms | Captured count: 20 / Input not found: 시작일 [context: btn:78,input:1,text:not-on-p | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/hr/vacation-management | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_vacation-management_2026-03-07_21-37-37.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1481 | +| 테이블 행 | 20 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-vendor-ledger_2026-03-07_21-37-54.md b/Fail-vendor-ledger_2026-03-07_21-37-54.md new file mode 100644 index 0000000..8edadcf --- /dev/null +++ b/Fail-vendor-ledger_2026-03-07_21-37-54.md @@ -0,0 +1,56 @@ +# ❌ E2E 테스트 실패: 거래처원장 테스트 + +**테스트 ID**: vendor-ledger | **실행**: 2026-03-07_21-37-54 | **결과**: FAIL +**소요 시간**: 17.2초 | **중단 사유**: critical_failure + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 10 | 5 | 4 | 1 | 50% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 1 | 로그인 | - | fill_form: no fields filled (0 not found) [context: btn:114,input:1] | +| 6 | 기간 설정 - 시작일 변경 | - | Input not found: startDate [context: btn:78,input:1] | +| 7 | 기간 설정 - 종료일 변경 | - | Input not found: endDate [context: btn:78,input:1] | +| 9 | ⚠️ 필수 검증: 검색 기능 테스트 | - | Input not found: searchInput [context: btn:78,input:1] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 준비 | - | ⚠️ | 301ms | Unknown action type: scrollSidebarToTop / Waited 300ms | +| 1 | 로그인 | - | ❌ | 1507ms | fill_form: no fields filled (0 not found) [context: btn:114,input:1] | +| 2 | 2단계 메뉴 진입: 회계관리 > 거래처원장 | - | ✅ | 2760ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / Found: 거래처원장 / Clicked: 거래처원장 / Wai | +| 3 | 필수 검증 #5: 목업 페이지 감지 | - | ✅ | 0ms | Real page: 1 inputs, 78 buttons | +| 4 | 통계 카드 확인 | - | ✅ | 0ms | Checks: 4/4 verified | +| 5 | 테이블 구조 확인 | - | ✅ | 0ms | Table: 8 cols, 20 rows | +| 6 | 기간 설정 - 시작일 변경 | - | ❌ | 1522ms | Input not found: startDate [context: btn:78,input:1] | +| 7 | 기간 설정 - 종료일 변경 | - | ❌ | 1511ms | Input not found: endDate [context: btn:78,input:1] | +| 8 | 기간 설정 - 데이터 변화 확인 | - | ✅ | 1006ms | Data change check | +| 9 | ⚠️ 필수 검증: 검색 기능 테스트 | - | ❌ | 2520ms | Captured count: 20 / Input not found: searchInput [context: btn:78,input:1] / Wa | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/vendor-ledger | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_vendor-ledger_2026-03-07_21-37-54.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1286 | +| 테이블 행 | 20 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/Fail-vendor-management_2026-03-07_21-38-54.md b/Fail-vendor-management_2026-03-07_21-38-54.md new file mode 100644 index 0000000..baebc79 --- /dev/null +++ b/Fail-vendor-management_2026-03-07_21-38-54.md @@ -0,0 +1,88 @@ +# ❌ E2E 테스트 실패: 거래처관리 테스트 + +**테스트 ID**: vendor-management | **실행**: 2026-03-07_21-38-54 | **결과**: FAIL +**소요 시간**: 60.0초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 34 | 13 | 12 | 9 | 38% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 9 | 구분 필터 테스트 | - | Dropdown trigger not found: categoryFilter [context: btn:84,input:1] | +| 10 | 구분 필터 초기화 | - | Dropdown trigger not found: categoryFilter [context: btn:84,input:1] | +| 11 | 테이블 행 클릭 - 상세 페이지 이동 | - | Row with "first_row" not found [context: btn:84,input:1] | +| 21 | 핵심 테스트: 수정 버튼 클릭 | - | Button "수정" not found [context: btn:84,input:1,text:not-on-page] | +| 24 | 핵심 테스트: 거래처명 수정 | - | Input not found: vendorName [context: btn:84,input:1] | +| 25 | 핵심 테스트: 저장 버튼 클릭 | - | Button "저장" not found [context: btn:84,input:1,text:not-on-page] | +| 27 | 필수 검증 #2: 저장 확인 버튼 클릭 | - | No dialog found [context: btn:84,input:1,text:not-on-page] | +| 29 | 원래 값 복원 - 수정 버튼 클릭 | - | Button "수정" not found [context: btn:84,input:1,text:not-on-page] | +| 30 | 원래 값 복원 - 거래처명 수정 | - | Input not found: vendorName [context: btn:84,input:1] | +| 31 | 원래 값 복원 - 저장 | - | Button "저장" not found [context: btn:84,input:1,text:not-on-page] | +| 32 | 원래 값 복원 - 저장 확인 | - | No dialog found [context: btn:84,input:1,text:not-on-page] | +| 33 | 목록 버튼 클릭 - 목록 복귀 | - | Button "목록" not found [context: btn:84,input:1,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7351ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| step-1 | 2단계 메뉴 진입: 회계관리 > 거래처관리 | - | ✅ | 11744ms | Found: 회계관리 / Clicked: 회계관리 / Waited 500ms / Found: 거래처관리 / Clicked: 거래처관리 / Wai | +| 3 | 필수 검증 #5: 목업 페이지 감지 | - | ✅ | 0ms | Real page: 1 inputs, 84 buttons | +| 4 | 통계 카드 확인 | - | ✅ | 0ms | Checks: 3/3 verified | +| 5 | 테이블 구조 확인 | - | ✅ | 0ms | Table: 11 cols, 20 rows | +| 6 | ⚠️ 필수 검증: 검색 기능 | - | ✅ | 710ms | Captured count: 20 / Filled "검색" with "가우스" / Waited 500ms / Captured count: 20 | +| 7 | 검색 결과 데이터 검증 | - | ✅ | 301ms | Waited 300ms | +| 8 | 검색 초기화 및 복원 확인 | - | ✅ | 716ms | Cleared: 검색 / Waited 500ms / Captured count: 20 | +| 9 | 구분 필터 테스트 | - | ❌ | 1513ms | Dropdown trigger not found: categoryFilter [context: btn:84,input:1] | +| 10 | 구분 필터 초기화 | - | ❌ | 1507ms | Dropdown trigger not found: categoryFilter [context: btn:84,input:1] | +| 11 | 테이블 행 클릭 - 상세 페이지 이동 | - | ❌ | 1514ms | Row with "first_row" not found [context: btn:84,input:1] | +| 12 | 상세 페이지 - URL 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/accounting/vendors | +| 13 | 상세 페이지 - 헤더 확인 | - | ✅ | 1ms | Checks: 1/4 verified | +| 14 | 상세 페이지 - 기본 정보 카드 확인 | - | ⚠️ | 1503ms | Detail checks: 0/7 matched | +| 15 | 상세 페이지 - 연락처 정보 확인 | - | ⚠️ | 1513ms | Detail checks: 0/5 matched | +| 16 | 상세 페이지 - 담당자 정보 확인 | - | ⚠️ | 1507ms | Detail checks: 0/3 matched | +| 17 | 상세 페이지 - 회사 정보 확인 | - | ⚠️ | 1510ms | Detail checks: 0/3 matched | +| 18 | 상세 페이지 - 신용/거래 정보 확인 | - | ⚠️ | 1527ms | Detail checks: 0/6 matched | +| 19 | 상세 페이지 - 추가 정보 확인 | - | ⚠️ | 1508ms | Detail checks: 0/3 matched | +| 20 | 상세 페이지 - 메모 섹션 확인 | - | ⚠️ | 1511ms | Checks: 0/2 verified | +| 21 | 핵심 테스트: 수정 버튼 클릭 | - | ❌ | 1510ms | Button "수정" not found [context: btn:84,input:1,text:not-on-page] | +| 22 | 수정 모드 - URL 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/accounting/vendors | +| 23 | 수정 모드 - 필드 편집 가능 확인 | - | ✅ | 0ms | Edit mode active | +| 24 | 핵심 테스트: 거래처명 수정 | - | ❌ | 1527ms | Input not found: vendorName [context: btn:84,input:1] | +| 25 | 핵심 테스트: 저장 버튼 클릭 | - | ❌ | 1519ms | Button "저장" not found [context: btn:84,input:1,text:not-on-page] | +| 26 | 핵심 테스트: 저장 확인 다이얼로그 | - | ⚠️ | 1518ms | No dialog found | +| 27 | 필수 검증 #2: 저장 확인 버튼 클릭 | - | ❌ | 2435ms | No dialog found [context: btn:84,input:1,text:not-on-page] | +| 28 | 수정 결과 확인 | - | ✅ | 1006ms | Data change check | +| 29 | 원래 값 복원 - 수정 버튼 클릭 | - | ❌ | 1514ms | Button "수정" not found [context: btn:84,input:1,text:not-on-page] | +| 30 | 원래 값 복원 - 거래처명 수정 | - | ❌ | 1508ms | Input not found: vendorName [context: btn:84,input:1] | +| 31 | 원래 값 복원 - 저장 | - | ❌ | 1514ms | Button "저장" not found [context: btn:84,input:1,text:not-on-page] | +| 32 | 원래 값 복원 - 저장 확인 | - | ❌ | 2437ms | No dialog found [context: btn:84,input:1,text:not-on-page] | +| 33 | 목록 버튼 클릭 - 목록 복귀 | - | ❌ | 1514ms | Button "목록" not found [context: btn:84,input:1,text:not-on-page] | +| 34 | 목록 페이지 복귀 확인 | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/accounting/vendors | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 115ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/vendors | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_vendor-management_2026-03-07_21-38-54.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1508 | +| 테이블 행 | 20 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-withdrawal-management_2026-03-07_21-39-19.md b/Fail-withdrawal-management_2026-03-07_21-39-19.md new file mode 100644 index 0000000..973a20c --- /dev/null +++ b/Fail-withdrawal-management_2026-03-07_21-39-19.md @@ -0,0 +1,72 @@ +# ❌ E2E 테스트 실패: 출금관리 테스트 + +**테스트 ID**: withdrawal-management | **실행**: 2026-03-07_21-39-19 | **결과**: FAIL +**소요 시간**: 24.2초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 20 | 13 | 7 | 0 | 65% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-3 | 계정과목명 드롭다운 옵션 확인 | - | Element not found: 계정과목명 드롭다운 [context: btn:125,input:1,text:not-on-page] | +| step-4 | 체크박스 선택 후 계정과목명 일괄변경 | - | Element not found: 첫 번째 행 체크박스 [context: btn:125,input:1,text:not-on-page]; Element not found: 계정과목명 | +| step-5 | 출금 상세 페이지 이동 | - | Element not found: 테이블 첫 번째 행 [context: btn:126,input:1,text:not-on-page] | +| step-9 | 거래처 드롭다운 옵션 확인 | - | Element not found: 거래처 드롭다운 [context: btn:126,input:1,text:not-on-page] | +| step-10 | 출금 유형 드롭다운 옵션 확인 | - | Element not found: 출금 유형 드롭다운 [context: btn:126,input:1,text:not-on-page] | +| step-11 | 수정 데이터 입력 | - | Element not found: 거래처 드롭다운 [context: btn:126,input:1,text:not-on-page]; Element not found: 출금 유형 드롭 | +| step-16 | 날짜 필터 검증 | - | Element not found: 당해년도 [context: btn:60,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 준비 | - | ✅ | 500ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 출금관리 메뉴 진입 | - | ✅ | 0ms | No action | +| step-2 | 목록 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 계정과목명 드롭다운 옵션 확인 | - | ❌ | 1534ms | Element not found: 계정과목명 드롭다운 [context: btn:125,input:1,text:not-on-page] | +| step-4 | 체크박스 선택 후 계정과목명 일괄변경 | - | ❌ | 3879ms | Element not found: 첫 번째 행 체크박스 [context: btn:125,input:1,text:not-on-page] / Ele | +| step-4-1 | ⚠️ 필수 검증: 계정과목명 변경 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-5 | 출금 상세 페이지 이동 | - | ❌ | 1517ms | Element not found: 테이블 첫 번째 행 [context: btn:126,input:1,text:not-on-page] | +| step-6 | 상세 페이지 읽기 모드 필드 확인 | - | ✅ | 0ms | No action | +| step-7 | 수정 모드 전환 | - | ✅ | 0ms | No action | +| step-8 | 수정 모드 필드 활성화 검증 | - | ✅ | 0ms | No action | +| step-9 | 거래처 드롭다운 옵션 확인 | - | ❌ | 1514ms | Element not found: 거래처 드롭다운 [context: btn:126,input:1,text:not-on-page] | +| step-10 | 출금 유형 드롭다운 옵션 확인 | - | ❌ | 1513ms | Element not found: 출금 유형 드롭다운 [context: btn:126,input:1,text:not-on-page] | +| step-11 | 수정 데이터 입력 | - | ❌ | 4957ms | Element not found: 거래처 드롭다운 [context: btn:126,input:1,text:not-on-page] / Clicke | +| step-12 | 저장 및 결과 확인 | - | ✅ | 0ms | No action | +| step-12-1 | ⚠️ 필수 검증: 수정 데이터 반영 확인 | - | ✅ | 0ms | No action | +| step-13 | 취소 버튼 동작 확인 | - | ✅ | 844ms | Clicked: 수정 / Clicked: 취소 | +| step-14 | 목록 버튼 동작 확인 | - | ✅ | 0ms | No action | +| step-15 | 필터 드롭다운 검증 | - | ✅ | 0ms | No action | +| step-16 | 날짜 필터 검증 | - | ❌ | 1517ms | Element not found: 당해년도 [context: btn:60,input:0,text:not-on-page] | +| step-17 | 페이지네이션 동작 확인 | - | ✅ | 415ms | Clicked: 다음 | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 9 | 9 | 0 | 45ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/accounting/withdrawals | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **empty_data** | +| 스크린샷 | diag_withdrawal-management_2026-03-07_21-39-18.png | + +### 권장 조치 +1. API 응답은 있으나 테이블 데이터 없음. 데이터 변환 또는 필터 문제 + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 574 | +| 테이블 행 | 0 | +| API 호출 수 | 9 | +| 로딩 스피너 | No | diff --git a/Fail-work-order-management_2026-03-07_21-40-03.md b/Fail-work-order-management_2026-03-07_21-40-03.md new file mode 100644 index 0000000..4f85226 --- /dev/null +++ b/Fail-work-order-management_2026-03-07_21-40-03.md @@ -0,0 +1,136 @@ +# ❌ E2E 테스트 실패: undefined + +**테스트 ID**: work-order-management | **실행**: 2026-03-07_21-40-03 | **결과**: FAIL +**소요 시간**: 44.8초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 81 | 7 | 13 | 61 | 9% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| 14 | 검색 기능 테스트 - 검색어 입력 (필수 검증 #3) | - | Input not found: undefined | +| 16 | 검색어 초기화 | - | Input not found: undefined | +| 17 | 승인대기 탭 클릭 (필수 검증 #3) | - | Element not found: undefined | +| 19 | 전체 탭 클릭 | - | Element not found: undefined | +| 21 | 등록 버튼 클릭 | - | Element not found: undefined | +| 31 | 수주 선택 버튼 클릭 | - | Element not found: undefined | +| 37 | 모달 닫기 | - | Element not found: undefined | +| 39 | 수동 등록 라디오 버튼 클릭 | - | Element not found: undefined | +| 48 | 취소 버튼 클릭 | - | Element not found: undefined | +| 51 | 작업지시 행 클릭 - 상세 페이지 이동 | - | Element not found: undefined | +| 61 | 수정 버튼 클릭 | - | Element not found: undefined | +| 74 | 취소 버튼 클릭 (수정 페이지) | - | Element not found: undefined | +| 77 | 목록 버튼 클릭 | - | Element not found: undefined | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| 0 | 사이드바 메뉴 탐색 준비 | - | ⚠️ | 7323ms | scrollAndFind: "sidebar" not found after 10 scrolls / Waited 500ms | +| 1 | 2단계 메뉴 진입: 생산관리 > 작업지시 목록 | - | ✅ | 11754ms | Found: 생산관리 / Clicked: 생산관리 / Waited 500ms / Found: 작업지시 목록 / Clicked: 작업지시 목록 / | +| 2 | 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 3 | 페이지 설명 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 4 | 등록 버튼 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 5 | 통계 카드 4개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 6 | 통계 카드 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 7 | 검색 입력 필드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 8 | 상태 필터 탭 6개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 9 | 상태 필터 탭 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 10 | 테이블 헤더 13개 컬럼 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 11 | 테이블 데이터 행 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 12 | 작업지시 데이터 내용 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 13 | 페이지네이션 정보 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 14 | 검색 기능 테스트 - 검색어 입력 (필수 검증 #3) | - | ❌ | 1514ms | Input not found: undefined | +| 15 | 검색 결과 확인 (필수 검증 #3) | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 16 | 검색어 초기화 | - | ❌ | 1514ms | Input not found: undefined | +| 17 | 승인대기 탭 클릭 (필수 검증 #3) | - | ❌ | 1517ms | Element not found: undefined | +| 18 | 승인대기 필터 결과 확인 (필수 검증 #3) | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 19 | 전체 탭 클릭 | - | ❌ | 1502ms | Element not found: undefined | +| 20 | 전체 필터 결과 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 21 | 등록 버튼 클릭 | - | ❌ | 1518ms | Element not found: undefined | +| 22 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/work-orders | +| 23 | 작업지시 등록 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 24 | 취소/등록 버튼 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 25 | 등록 방식 라디오 버튼 2개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 26 | 기본 선택 상태 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 27 | 수주 정보 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 28 | 수주 연동 모드 - 기본 정보 필드 4개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 29 | 작업지시 정보 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 30 | 비고 필드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 31 | 수주 선택 버튼 클릭 | - | ❌ | 1518ms | Element not found: undefined | +| 32 | 수주 선택 모달 열림 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 33 | 모달 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 34 | 모달 검색 필드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 35 | 모달 상태 메시지 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 36 | 모달 닫기 버튼 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 37 | 모달 닫기 | - | ❌ | 1502ms | Element not found: undefined | +| 38 | 모달 닫힘 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 39 | 수동 등록 라디오 버튼 클릭 | - | ❌ | 1508ms | Element not found: undefined | +| 40 | 수동 등록 모드 활성화 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 41 | 수주 정보 섹션 숨김 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 42 | 수동 등록 모드 - 기본 정보 필드 활성화 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 43 | 발주처 필드 placeholder 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 44 | 현장명 필드 placeholder 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 45 | 공정구분 콤보박스 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 46 | 우선순위 콤보박스 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 47 | 담당자 선택 필드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 48 | 취소 버튼 클릭 | - | ❌ | 1518ms | Element not found: undefined | +| 49 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/work-orders | +| 50 | 목록 페이지 복귀 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 51 | 작업지시 행 클릭 - 상세 페이지 이동 | - | ❌ | 1511ms | Element not found: undefined | +| 52 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/work-orders | +| 53 | 작업지시 상세 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 54 | 상세 페이지 버튼 3개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 55 | 기본 정보 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 56 | 기본 정보 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 57 | 공정 진행 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 58 | 공정 5단계 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 59 | 작업 품목 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 60 | 작업 품목 빈 상태 메시지 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 61 | 수정 버튼 클릭 | - | ❌ | 1519ms | Element not found: undefined | +| 62 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/work-orders | +| 63 | 작업지시 수정 페이지 제목 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 64 | 수정 페이지 작업지시번호 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 65 | 수정 페이지 버튼 2개 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 66 | 수정 페이지 기본 정보 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 67 | 수정 페이지 필드 상태 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 68 | 수정 페이지 작업지시 정보 섹션 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 69 | 수정 페이지 공정구분 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 70 | 수정 페이지 출고예정일 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 71 | 수정 페이지 우선순위 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 72 | 수정 페이지 담당자 필드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 73 | 수정 페이지 비고 필드 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | +| 74 | 취소 버튼 클릭 (수정 페이지) | - | ❌ | 1504ms | Element not found: undefined | +| 75 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/work-orders | +| 76 | 상세 페이지 복귀 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 77 | 목록 버튼 클릭 | - | ❌ | 1514ms | Element not found: undefined | +| 78 | URL 변경 확인 (필수 검증 #2) | - | ✅ | 0ms | URL verified: https://dev.codebridge-x.com/production/work-orders | +| 79 | 목록 페이지 복귀 확인 | - | ⚠️ | 0ms | Unknown action type: verifyText | +| 80 | 최종 데이터 확인 | - | ⚠️ | 0ms | Unknown action type: verifyElement | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 2 | 2 | 0 | 109ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/production/work-orders | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_work-order-management_2026-03-07_21-40-03.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 1823 | +| 테이블 행 | 20 | +| API 호출 수 | 2 | +| 로딩 스피너 | No | diff --git a/Fail-worker-screen_2026-03-07_21-40-23.md b/Fail-worker-screen_2026-03-07_21-40-23.md new file mode 100644 index 0000000..c4bc842 --- /dev/null +++ b/Fail-worker-screen_2026-03-07_21-40-23.md @@ -0,0 +1,50 @@ +# ❌ E2E 테스트 실패: 작업자 화면 테스트 + +**테스트 ID**: worker-screen | **실행**: 2026-03-07_21-40-23 | **결과**: FAIL +**소요 시간**: 10.2초 + +## 테스트 요약 +| 전체 | 성공 | 실패 | 경고 | 성공률 | +|------|------|------|------|--------| +| 7 | 6 | 1 | 0 | 86% | + +## 실패 스텝 +| # | 스텝 | Phase | 에러 | +|---|------|-------|------| +| step-3 | 필수 검증 #3: 정렬 옵션 확인 | - | Element not found: 납기일순 [context: btn:45,input:0,text:not-on-page] | + +## 전체 스텝 결과 +| # | 스텝 | Phase | 상태 | 소요시간 | 비고 | +|---|------|-------|------|---------|------| +| step-0 | 사이드바 초기화 | - | ✅ | 505ms | eval_type:undefined/isPromise:false/val:undefined / Waited 500ms | +| step-1 | 생산관리 메뉴 진입 | - | ✅ | 1545ms | Found: 생산관리 / Clicked: 생산관리 / Waited 500ms / Clicked: 작업자 화면 | +| step-2 | 페이지 구조 확인 | - | ✅ | 0ms | No action | +| step-3 | 필수 검증 #3: 정렬 옵션 확인 | - | ❌ | 1516ms | Element not found: 납기일순 [context: btn:45,input:0,text:not-on-page] | +| step-4 | 정렬 옵션 닫기 | - | ✅ | 526ms | Pressed key: Escape / Waited 300ms | +| step-5 | 빈 상태 확인 | - | ✅ | 0ms | No action | +| step-6 | 통계 카드 값 확인 | - | ✅ | 0ms | No action | + +## API 요약 +| 총 호출 | 성공 | 실패 | 평균 응답 | 느린 호출(>2s) | +|---------|------|------|----------|--------------| +| 0 | 0 | 0 | 0ms | 0 | + +## 페이지 건강 검사 +| 항목 | 결과 | +|------|------| +| 상태 | ✅ 정상 | +| URL | https://dev.codebridge-x.com/production/worker-screen | + +## 자동 진단 +| 항목 | 내용 | +|------|------| +| 근본 원인 | **unknown** | +| 스크린샷 | diag_worker-screen_2026-03-07_21-40-23.png | + +### 페이지 상태 +| 항목 | 값 | +|------|----| +| DOM 노드 | 564 | +| 테이블 행 | 0 | +| API 호출 수 | 0 | +| 로딩 스피너 | No | diff --git a/TC_ATTENDANCE_MANAGEMENT_Report_2026-01-30T03-54-59.md b/TC_ATTENDANCE_MANAGEMENT_Report_2026-01-30T03-54-59.md new file mode 100644 index 0000000..9806df9 --- /dev/null +++ b/TC_ATTENDANCE_MANAGEMENT_Report_2026-01-30T03-54-59.md @@ -0,0 +1,233 @@ +# TC 근태관리 테스트 실행 결과 + +## 📊 실행 요약 +- **테스트명**: TC 근태관리 전체 테스트 +- **실행 시간**: 2026. 1. 30. 오후 12:54:59 +- **총 테스트**: 21개 +- **성공**: 18개 +- **실패**: 3개 +- **성공률**: 85.7% +- **실행 시간**: 2026-01-30T03:52:13.568Z ~ 2026-01-30T03:54:59.420Z + +## 📋 카테고리별 결과 + + +### 1. 페이지 로딩 및 기본 UI +- **통과**: 3/3 +- **상세 결과**: + - ✅ L-001: 페이지 접근 테스트 + - ✅ L-002: 대시보드 카드 표시 확인 + - ✅ L-010: 테이블 컬럼 구성 확인 + + +### 2. 기간 필터 테스트 +- **통과**: 3/3 +- **상세 결과**: + - ✅ L-020: 당해년도 필터 + - ✅ L-023: 당월 필터 + - ✅ L-025: 오늘 필터 + + +### 3. 상태 탭 필터 테스트 +- **통과**: 3/3 +- **상세 결과**: + - ✅ L-040: 전체 탭 + - ✅ L-041: 미출근 탭 + - ✅ L-042: 정시 출근 탭 + + +### 4. 검색 기능 테스트 +- **통과**: 2/2 +- **상세 결과**: + - ✅ L-050: 이름 검색 + - ✅ L-052: 검색어 지우기 + + +### 5. 근태 등록 모달 테스트 +- **통과**: 2/4 +- **상세 결과**: + - ✅ D-001: 근태 등록 모달 열기 + - ✅ D-010: 모달 필드 확인 + - ❌ D-020: 근태 데이터 입력 (elementHandle.click: Timeout 30000ms exceeded. +Call log: + - attempting click action + 2 × waiting for element to be visible, enabled and stable + - element is visible, enabled and stable + - scrolling into view if needed + - done scrolling + - from from from from from from