# E2E 테스트 리포트: 근태 사유 등록

**테스트 ID**: attendance-reason
**실행 시간**: 2026-01-20 18:40:00 (KST)
**소요 시간**: 2분
**테스트 결과**: ✅ PASS

---

## 📊 테스트 요약

| 항목 | 결과 |
|------|------|
| 전체 스텝 수 | 6개 |
| 성공 | 6개 |
| 실패 | 0개 |
| 성공률 | 100% |

---

## 📋 스텝별 상세 결과

| 스텝 | 테스트 항목 | 상태 | 비고 |
|------|------------|------|------|
| 1 | 근태관리 페이지 접근 | ✅ | /ko/hr/attendance-management |
| 2 | 사유 등록 모달 열기 | ✅ | 사유 정보 모달 표시 |
| 3 | 대상 직원 선택 | ✅ | 홍킬동 선택 완료 |
| 4 | 사유 유형 선택 | ✅ | 출장신청서 선택 완료 |
| 5 | 등록 버튼 클릭 | ✅ | 출장신청 페이지로 이동 |
| 6 | 돌아가기 동작 확인 | ✅ | 근태관리로 돌아가기 버튼 동작 |

---

## 📈 검증 결과

### 사유 등록 모달

| 항목 | 예상 | 실제 | 결과 |
|------|------|------|------|
| 모달 제목 | 사유 정보 | 사유 정보 | ✅ |
| 대상 필드 | combobox | combobox | ✅ |
| 기준일 필드 | datepicker | datepicker (2026-01-20) | ✅ |
| 유형 필드 | combobox | combobox | ✅ |

### 사유 유형 옵션

| 유형 | 존재 | 결과 |
|------|------|------|
| 출장신청서 | ✅ | ✅ |
| 휴가신청서 | ✅ | ✅ |
| 외근신청서 | ✅ | ✅ |
| 연장근무신청서 | ✅ | ✅ |

### 등록 플로우

| 단계 | 동작 | 결과 |
|------|------|------|
| 1 | 대상 선택 (홍킬동) | ✅ |
| 2 | 유형 선택 (출장신청서) | ✅ |
| 3 | 등록 버튼 클릭 | ✅ |
| 4 | 출장신청 페이지 이동 | ✅ |

---

## 📊 사유 유형별 페이지 매핑

| 사유 유형 | 이동 URL | 페이지 제목 |
|----------|---------|------------|
| 출장신청서 | /hr/documents/new?type=businessTripRequest | 출장신청 |
| 휴가신청서 | /hr/documents/new?type=vacationRequest | (추정) 휴가신청 |
| 외근신청서 | /hr/documents/new?type=fieldWorkRequest | (추정) 외근신청 |
| 연장근무신청서 | /hr/documents/new?type=overtimeRequest | (추정) 연장근무신청 |

---

## 📊 출장신청 페이지 필드 구조

| 필드 | 타입 | 필수 | 비고 |
|------|------|------|------|
| 제목 | text | * | 신청 제목 |
| 시작일 | datepicker | * | 출장 시작일 |
| 종료일 | datepicker | * | 출장 종료일 |
| 출장지 | text | * | 출장 장소 |
| 목적 | text | * | 출장 목적 |
| 상세 내용 | textarea | - | 추가 설명 |

**버튼**: 취소, 등록, 근태관리로 돌아가기

---

## 📊 UI 요소 검증 결과

| UI 요소 | 검증 수준 | 결과 | 비고 |
|---------|----------|------|------|
| 사유 등록 버튼 | Level 3 | ✅ | 클릭 → 모달 열림 |
| 대상 드롭다운 | Level 4 | ✅ | 직원 목록 표시, 선택 가능 |
| 유형 드롭다운 | Level 4 | ✅ | 4개 옵션 표시, 선택 가능 |
| 등록 버튼 | Level 4 | ✅ | 클릭 → 문서 작성 페이지 이동 |
| 돌아가기 버튼 | Level 3 | ✅ | 클릭 → 근태관리 페이지 복귀 |

---

## 📸 스크린샷

- 사유 등록 모달: `screenshots/004_reason_modal-*.png`
- 유형 드롭다운 옵션: `screenshots/004_reason_type_options-*.png`
- 등록 결과: `screenshots/004_reason_register_result-*.png`
- 출장신청 페이지: `screenshots/004_business_trip_form-*.png`
- 최종 상태: `screenshots/004_attendance_reason_final-*.png`

---

## 📝 테스트 결론

### ✅ 정상 동작 확인된 기능
- 사유 등록 모달 열기/닫기
- 대상 직원 선택 (combobox)
- 기준일 표시 (datepicker)
- 사유 유형 선택 (4개 옵션: 출장/휴가/외근/연장근무)
- 등록 버튼 → 해당 문서 작성 페이지로 이동
- 근태관리로 돌아가기 버튼 동작

### 📌 참고사항
- 사유 등록 시 직접 등록이 아닌 **문서 작성 페이지로 이동**하는 플로우
- 출장신청서 선택 → `/hr/documents/new?type=businessTripRequest`로 이동
- 문서 작성 후 결재 프로세스를 통해 사유가 등록되는 구조로 추정
- 실제 문서 등록은 데이터 보존을 위해 스킵

### 🔄 플로우 요약
```
근태관리 페이지
  → 사유 등록 버튼 클릭
  → 사유 정보 모달 (대상/기준일/유형 선택)
  → 등록 버튼 클릭
  → 해당 유형 문서 작성 페이지 이동
  → 문서 작성 후 제출
  → 결재 프로세스
```

---

**테스트 실행자**: Claude Code (QA Reporter)
**리포트 생성 시간**: 2026-01-20 18:40:00 (KST)
