Files
sam-hotfix/testcase/TC_DRAFT_BOX.md

246 lines
11 KiB
Markdown
Raw Permalink Normal View History

# TC - 기안함 (Draft Box)
> **페이지**: https://dev.codebridge-x.com/approval/draft
> **작성일**: 2026-01-29
> **대상**: QC Playwright AI 테스트용
---
2026-01-29 20:33:38 +09:00
## ⚠️ 테스트 환경 안내
| 항목 | 내용 |
|------|------|
| **환경 유형** | 개발/테스트 환경 (Development Environment) |
| **운영 환경 여부** | ❌ 아니오 - 운영 환경이 **아닙니다** |
| **데이터 특성** | 테스트용 시드 데이터 및 개발 중 생성된 샘플 데이터 |
| **테스트 정책** | CRUD 전체 테스트 가능 (생성, 수정, 삭제 포함) |
### 테스트 실행 지침
1. **CRUD 테스트 허용**: 이 환경은 개발/테스트 목적으로, 데이터 생성·수정·삭제를 포함한 전체 기능 테스트를 수행해야 합니다.
2. **데이터 생성 테스트**: 문서 작성 테스트 시 실제 데이터를 생성하여 기능 검증을 수행합니다.
3. **데이터 삭제 테스트**: 삭제 테스트는 테스트 중 생성한 데이터를 대상으로 실행합니다. 기존 시드 데이터는 보존합니다.
4. **테스트 데이터 정리**: 테스트 완료 후 생성된 테스트 데이터는 삭제하여 환경을 정리합니다.
---
## 0. 사이드바 메뉴 탐색 (공통 전제 조건)
### 0.1 메뉴 펼치기
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| NAV-001 | 전제 | 사이드바 최상단 스크롤 | 사이드바가 최상단으로 스크롤 |
| NAV-002 | 전제 | "모두 펼치기" 버튼 클릭 | 사이드바의 모든 메뉴가 펼쳐짐 |
| NAV-003 | 전제 | 메뉴 펼침 대기 | 2초 대기 후 모든 메뉴 펼침 완료 |
| NAV-004 | 기능 | 1차 메뉴 찾기 | 스크롤 없이 1차 메뉴(결재관리) 클릭 가능 |
| NAV-005 | 기능 | 2차 메뉴 클릭 | 펼쳐진 서브메뉴에서 기안함 클릭 |
| NAV-006 | 기능 | 페이지 로드 확인 | 404 없이 정상 페이지 로드 |
> **💡 참고**: "모두 펼치기" 버튼으로 전체 메뉴를 펼친 후 메뉴를 탐색하면 1차 메뉴를 누르지 못해 찾지 못하는 문제를 방지할 수 있습니다.
---
## 1. 목록 페이지 (List View)
### 1.1 페이지 로딩
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-001 | 기본 | 페이지 접근 | `/approval/draft` 정상 로딩, 테이블 표시 |
| L-002 | 기본 | 페이지 제목 | "기안함" + 설명 "작성한 결재 문서를 관리합니다" |
| L-003 | 기본 | 통계 카드 표시 | "진행", "완료", "반려", "임시 저장" 4개 카드 |
| L-004 | 기본 | 빈 목록 | 데이터 없을 때 "데이터가 없습니다" 메시지 |
| L-005 | 기본 | 기본 정렬 | 최신순(created_at desc) 정렬 |
### 1.2 테이블 컬럼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-010 | 기본 | 컬럼 구성 | 체크박스, 번호, 문서번호, 문서유형, 제목, 결재자, 기안일시, 상태, 작업 |
| L-011 | UI | 문서유형 뱃지 | 품의서/지출결의서/예상지출내역 Badge(outline) 표시 |
| L-012 | UI | 결재자 표시 | 단일: "홍길동", 복수: "홍길동 외 2명" |
| L-013 | UI | 상태 뱃지 색상 | 임시저장=회색, 결재대기=노랑, 진행중=파랑, 완료=초록, 반려=빨강 |
### 1.3 검색
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-020 | 기능 | 문서번호 검색 | 문서번호 입력 시 해당 문서만 필터링 |
| L-021 | 기능 | 제목 검색 | 제목 입력 시 해당 문서만 필터링 |
| L-022 | 기능 | 기안자 검색 | 기안자명 입력 시 해당 문서만 필터링 |
| L-023 | 기능 | 검색어 지우기 | 검색어 삭제 시 전체 목록 복원 |
| L-024 | 경계 | 존재하지 않는 검색어 | 빈 결과 + "데이터가 없습니다" 메시지 |
| L-025 | UI | 검색 플레이스홀더 | "문서번호, 제목, 기안자 검색..." 표시 |
### 1.4 필터
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-030 | 기능 | 필터 드롭다운 열기 | 전체, 임시저장, 결재대기, 진행중, 완료, 반려 옵션 표시 |
| L-031 | 기능 | 전체 필터 | 모든 문서 표시 |
| L-032 | 기능 | 임시저장 필터 | 임시저장 상태만 필터링 |
| L-033 | 기능 | 결재대기 필터 | 결재대기 상태만 필터링 |
| L-034 | 기능 | 진행중 필터 | 진행중 상태만 필터링 |
| L-035 | 기능 | 완료 필터 | 완료 상태만 필터링 |
| L-036 | 기능 | 반려 필터 | 반려 상태만 필터링 |
### 1.5 정렬
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-040 | 기능 | 정렬 드롭다운 열기 | 최신순, 오래된순, 제목 오름차순, 제목 내림차순 옵션 |
| L-041 | 기능 | 최신순 정렬 | created_at desc 정렬 |
| L-042 | 기능 | 오래된순 정렬 | created_at asc 정렬 |
| L-043 | 기능 | 제목 오름차순 정렬 | title asc 정렬 |
| L-044 | 기능 | 제목 내림차순 정렬 | title desc 정렬 |
### 1.6 체크박스 선택
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-050 | 기능 | 개별 체크박스 선택 | 해당 행 선택, 상신/삭제 버튼 표시 |
| L-051 | 기능 | 전체 선택 | 현재 페이지 모든 행 선택 |
| L-052 | 기능 | 전체 해제 | 모든 행 선택 해제, 버튼 숨김 |
| L-053 | UI | 임시저장 선택 시 | 작업 컬럼에 수정/삭제 버튼 표시 |
### 1.7 행 동작
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-060 | 기능 | 임시저장 문서 클릭 | 문서 작성 페이지로 이동 (수정 모드) |
| L-061 | 기능 | 결재대기/진행중/완료 클릭 | 문서 상세 모달 열림 |
| L-062 | 기능 | 문서 작성 버튼 | 클릭 시 새 문서 작성 페이지 이동 |
### 1.8 페이지네이션
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| L-070 | 기본 | 기본 페이지 크기 | 20건 표시 |
| L-071 | 기능 | 페이지 이동 | 2페이지 클릭 시 해당 페이지 데이터 로드 |
| L-072 | UI | 페이지 정보 | 현재 페이지/전체 페이지, 총 항목 수 표시 |
---
## 2. 문서 상세 모달
### 2.1 모달 열기
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-001 | 기능 | 문서 행 클릭 | 문서 상세 모달 열림 |
| D-002 | 기본 | 모달 제목 | "문서 상세" |
| D-003 | API | 상세 API 호출 | GET /api/v1/approvals/{id} 호출 |
### 2.2 모달 내용
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-010 | 기본 | 기본 정보 표시 | 문서번호, 기안일시 표시 |
| D-011 | 기본 | 결재자 목록 | 최대 3명 결재자 정보 + 상태 뱃지 |
| D-012 | UI | 결재자 상태 색상 | none=회색, pending=노랑, approved=초록, rejected=빨강 |
### 2.3 문서 유형별 내용
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-020 | 기능 | 품의서 내용 | 거래처, 거래처 지급일, 제목, 내용, 사유, 예상금액, 첨부파일 |
| D-021 | 기능 | 지출결의서 내용 | 신청일, 지급일, 지출 내역, 카드 정보, 총액, 첨부파일 |
| D-022 | 기능 | 예상지출내역 내용 | 예상지급일, 카테고리, 금액, 거래처, 계좌, 총 지출, 계좌 잔액, 최종 차액 |
### 2.4 모달 버튼
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| D-030 | 기능 | 수정 버튼 | 클릭 시 문서 작성 페이지로 이동 (수정 모드) |
| D-031 | 기능 | 복제 버튼 | 클릭 시 문서 작성 페이지로 이동 (복제 모드) |
| D-032 | 기능 | 상신 버튼 (임시저장) | 임시저장 상태일 때만 표시, 결재 상신 |
| D-033 | 기능 | 닫기 | 모달 닫힘, 목록 복귀 |
---
## 3. PDF 다운로드
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| P-001 | 기능 | PDF 버튼 존재 | 모달 내 PDF 버튼 표시 |
| P-002 | 기능 | PDF 다운로드 실행 | 버튼 클릭 시 PDF 파일 다운로드 |
| P-003 | API | PDF API 호출 | GET /api/v1/approvals/{id}/pdf 호출 |
| P-004 | 검증 | ⚠️ PDF 파일 유효성 | %PDF- 시그니처 확인, 1KB 이상 |
### 3.1 PDF 스타일 수동 확인 (Manual Verification)
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| P-010 | 수동 | 테이블 경계선 | 올바르게 표시 |
| P-011 | 수동 | 한글 폰트 | 깨지지 않고 정상 표시 |
| P-012 | 수동 | 숫자/금액 정렬 | 우측 정렬 |
| P-013 | 수동 | 여백(margin/padding) | 적절한 레이아웃 |
| P-014 | 수동 | 헤더/푸터 | 각 페이지에 올바르게 표시 |
| P-015 | 수동 | 로고/이미지 | 정상 표시 |
| P-016 | 수동 | 페이지 나눔 | 적절한 위치에서 발생 |
| P-017 | 수동 | 배경색/강조색 | 올바르게 적용 |
| P-018 | 수동 | 텍스트 오버플로우 | 잘리거나 겹치지 않음 |
| P-019 | 수동 | 결재선 정보 | 정상 표시 |
---
## 4. 결재 상신/삭제
### 4.1 상신
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-001 | 기능 | 상신 버튼 클릭 | 결재 상신 처리 |
| A-002 | API | POST /api/v1/approvals/{id}/submit | 상신 API 호출 |
| A-003 | 비즈 | 상신 후 상태 변경 | 임시저장 → 결재대기 |
| A-004 | 비즈 | ⚠️ 통계 카드 업데이트 | 임시저장 -1, 진행 +1 |
### 4.2 삭제
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| A-010 | 기능 | 삭제 버튼 클릭 | 삭제 확인 다이얼로그 표시 |
| A-011 | 기능 | 삭제 확인 | 문서 삭제 + 목록에서 제거 |
| A-012 | 기능 | 삭제 취소 | 아무 변경 없음 |
| A-013 | 비즈 | 임시저장만 삭제 가능 | 다른 상태는 삭제 불가 |
---
## 5. API 응답 검증
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| API-001 | API | GET /api/v1/approvals/drafts | 페이지네이션 포함 목록 반환 |
| API-002 | API | GET /api/v1/approvals/drafts/summary | 통계 카드 데이터 반환 |
| API-003 | API | GET /api/v1/approvals/{id} | 문서 상세 반환 (content 포함) |
| API-004 | API | POST /api/v1/approvals/{id}/submit | 상신 성공 응답 |
| API-005 | API | DELETE /api/v1/approvals/{id} | 삭제 성공 응답 |
---
## 6. 반응형 레이아웃
| TC# | 구분 | 테스트 항목 | 기대 결과 |
|-----|------|------------|-----------|
| M-001 | UI | 모바일 카드 레이아웃 | 화면 크기에 따라 카드 형태 표시 |
| M-002 | UI | 모바일 카드 필드 | 문서번호, 기안일자, 기안자, 결재자 표시 |
| M-003 | UI | 모바일 액션 버튼 | 임시저장 선택 시 수정/삭제 버튼 |
---
## TC 요약
| 카테고리 | 건수 |
|----------|------|
| 목록 페이지 | 45건 |
| 문서 상세 모달 | 18건 |
| PDF 다운로드 | 14건 |
| 결재 상신/삭제 | 8건 |
| API 응답 검증 | 5건 |
| 반응형 레이아웃 | 3건 |
| **합계** | **93건** |