# ❌ 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 |