- claudedocs 폴더 구조 재정리: archive/sessions, guides/migration·mobile·universal-list, refactoring 분류 - 오래된 세션 컨텍스트/체크리스트 문서 정리 (아카이브 이동 또는 삭제) - AuthContext → authStore(Zustand) 전환 시작, RootProvider 간소화 - GenericCRUDDialog 공통 다이얼로그 컴포넌트 추가 - PermissionDialog 삭제 → GenericCRUDDialog로 대체 - RankDialog/TitleDialog GenericCRUDDialog 기반으로 리팩토링 - toast-utils.ts 삭제 (미사용) - fileDownload.ts 개선, excel-download.ts 정리 - menuStore/themeStore Zustand 셀렉터 최적화 - useColumnSettings/useTableColumnStore 기능 보강 - 세금계산서/견적/작업자화면/결재 등 소규모 개선 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9.1 KiB
9.1 KiB
모바일 화면 오버플로우 테스트 계획서
작성일: 2026-01-09 대상 기기: Galaxy Z Fold (접힌 상태) 목표: 모든 페이지에서 텍스트/요소 오버플로우 검출 및 수정
1. 개요
1.1 목적
Galaxy Fold 접힌 상태(344px)에서 UI 요소가 컨테이너를 벗어나거나 텍스트가 잘리는 문제를 사전에 발견하고 수정
1.2 대상 뷰포트
| 기기 | 너비 | 높이 | 비고 |
|---|---|---|---|
| Galaxy Z Fold 5 (접힌) | 344px | 882px | 주요 테스트 대상 |
| Galaxy Z Fold 5 (펼친) | 1812px | 882px | 참고용 |
| iPhone SE | 375px | 667px | 비교 테스트 |
1.3 테스트 범위
총 페이지 수: 185개
| 카테고리 | 페이지 수 | 우선순위 |
|---|---|---|
| construction (시공) | 40 | 🔴 높음 |
| accounting (회계) | 26 | 🔴 높음 |
| sales (영업) | 18 | 🔴 높음 |
| settings (설정) | 17 | 🟡 중간 |
| hr (인사) | 14 | 🟡 중간 |
| production (생산) | 10 | 🟡 중간 |
| quality (품질) | 4 | 🟢 낮음 |
| reports (리포트) | 2 | 🟢 낮음 |
| dashboard | 1 | 🔴 높음 |
| 기타 | ~50 | 🟡 중간 |
2. 테스트 방법
2.1 방법 A: Playwright 자동화 (권장)
장점
- 전체 페이지 일괄 스크린샷
- 반복 테스트 용이
- 수정 후 비교 테스트 가능
단점
- 초기 세팅 필요
- 로그인/인증 처리 필요
구현 방식
// playwright-mobile-test.ts
import { chromium } from 'playwright';
const VIEWPORT = { width: 344, height: 882 };
const BASE_URL = 'http://localhost:3000/ko';
const pages = [
'/dashboard',
'/sales/client-management-sales-admin',
'/accounting/sales',
// ... 전체 페이지 목록
];
async function captureScreenshots() {
const browser = await chromium.launch();
const context = await browser.newContext({
viewport: VIEWPORT,
// 로그인 쿠키 설정
});
for (const page of pages) {
const p = await context.newPage();
await p.goto(`${BASE_URL}${page}`);
await p.screenshot({
path: `screenshots/fold/${page.replace(/\//g, '-')}.png`,
fullPage: true
});
}
}
결과물
screenshots/fold/
├── dashboard.png
├── sales-client-management-sales-admin.png
├── accounting-sales.png
└── ... (185개)
2.2 방법 B: Chrome DevTools 수동 검수
장점
- 즉시 시작 가능
- 실시간 CSS 수정 테스트 가능
- 인터랙션 확인 가능
단점
- 시간 소요 (페이지당 1-2분)
- 반복 테스트 불편
설정 방법
- Chrome DevTools (F12) 열기
- Device Toolbar (Ctrl+Shift+M) 활성화
- 기기 목록 → Edit → Add custom device
- 이름:
Galaxy Z Fold 5 (Folded) - 너비:
344, 높이:882 - Device pixel ratio:
3 - User agent: Mobile
체크리스트
## 페이지: [페이지명]
### 레이아웃
- [ ] 헤더 정상 표시
- [ ] 사이드바 접힘/메뉴 버튼 표시
- [ ] 메인 컨텐츠 영역 정상
### 텍스트
- [ ] 제목 텍스트 오버플로우 없음
- [ ] 버튼 텍스트 잘림 없음
- [ ] 테이블 헤더 가독성 확인
### 테이블/리스트
- [ ] 가로 스크롤 정상 동작
- [ ] 컬럼 최소 너비 확보
- [ ] 체크박스/액션 버튼 접근 가능
### 폼
- [ ] 입력 필드 너비 적절
- [ ] 라벨 텍스트 가독성
- [ ] 버튼 터치 영역 충분 (최소 44px)
### 모달/팝업
- [ ] 화면 내 표시
- [ ] 닫기 버튼 접근 가능
- [ ] 스크롤 정상 동작
2.3 방법 C: 혼합 방식 (권장)
- 1단계: Playwright로 전체 페이지 스크린샷 캡처
- 2단계: 스크린샷에서 문제 있어 보이는 페이지 목록 작성
- 3단계: 문제 페이지만 DevTools로 상세 검수
- 4단계: 수정 후 Playwright로 재검증
3. 예상 문제 패턴
3.1 높은 위험도 🔴
| 패턴 | 예시 | 해결 방법 |
|---|---|---|
| 고정 너비 테이블 | min-w-[800px] |
가로 스크롤 또는 반응형 |
| 긴 텍스트 nowrap | whitespace-nowrap |
truncate 또는 줄바꿈 |
| 고정 px 버튼 그룹 | w-[400px] |
w-full 또는 flex-wrap |
| 큰 모달 | max-w-4xl |
max-w-[calc(100vw-2rem)] |
3.2 중간 위험도 🟡
| 패턴 | 예시 | 해결 방법 |
|---|---|---|
| Flex 오버플로우 | flex gap-4 자식 |
min-w-0 추가 |
| Grid 고정 컬럼 | grid-cols-4 |
grid-cols-1 md:grid-cols-4 |
| 이미지 고정 크기 | w-[200px] |
max-w-full |
3.3 낮은 위험도 🟢
| 패턴 | 예시 | 해결 방법 |
|---|---|---|
| 패딩 과다 | p-8 |
p-4 md:p-8 |
| 폰트 크기 | text-xl |
text-lg md:text-xl |
4. 수정 가이드라인
4.1 테이블 반응형 처리
// Before
<div className="overflow-x-auto">
<table className="min-w-[800px]">
// After
<div className="overflow-x-auto -mx-4 md:mx-0">
<table className="min-w-[600px] md:min-w-[800px]">
4.2 텍스트 오버플로우 처리
// Before
<span className="whitespace-nowrap">{longText}</span>
// After
<span className="truncate max-w-[200px]" title={longText}>{longText}</span>
4.3 버튼 그룹 반응형
// Before
<div className="flex gap-2">
<Button>저장</Button>
<Button>취소</Button>
<Button>삭제</Button>
</div>
// After
<div className="flex flex-wrap gap-2">
<Button className="flex-1 min-w-[80px]">저장</Button>
<Button className="flex-1 min-w-[80px]">취소</Button>
<Button className="flex-1 min-w-[80px]">삭제</Button>
</div>
4.4 모달 반응형
// Before
<DialogContent className="max-w-2xl">
// After
<DialogContent className="max-w-2xl w-[calc(100vw-2rem)]">
5. 실행 계획
5.1 Phase 1: 환경 준비 (30분)
- Playwright 스크립트 작성
- 로그인 토큰/쿠키 설정
- 테스트 페이지 URL 목록 정리
- 스크린샷 저장 폴더 생성
5.2 Phase 2: 스크린샷 캡처 (1-2시간)
- Playwright 스크립트 실행
- 185개 페이지 스크린샷 캡처
- 캡처 실패 페이지 확인 및 재시도
5.3 Phase 3: 문제 페이지 분류 (1시간)
스크린샷 검토 후 분류:
| 상태 | 설명 | 액션 |
|---|---|---|
| ✅ OK | 문제 없음 | 스킵 |
| ⚠️ Minor | 경미한 문제 | 백로그 |
| 🔴 Critical | 사용 불가 수준 | 즉시 수정 |
5.4 Phase 4: 수정 작업 (문제 수에 따라)
- Critical 문제 우선 수정
- 수정 후 해당 페이지 재캡처
- Before/After 비교 확인
5.5 Phase 5: 검증 (30분)
- 전체 재캡처
- 수정 결과 확인
- 결과 보고서 작성
6. 결과물
6.1 스크린샷 폴더 구조
screenshots/
├── fold-344px/
│ ├── dashboard.png
│ ├── sales/
│ │ ├── client-management.png
│ │ └── quote-management.png
│ └── accounting/
│ └── ...
├── issues/
│ ├── critical/
│ └── minor/
└── fixed/
└── before-after/
6.2 이슈 리포트
## 오버플로우 이슈 리포트
### Critical Issues (즉시 수정 필요)
| # | 페이지 | 문제 | 스크린샷 |
|---|--------|------|----------|
| 1 | /sales/quote | 테이블 헤더 잘림 | [링크] |
| 2 | /accounting/daily-report | 차트 오버플로우 | [링크] |
### Minor Issues (백로그)
| # | 페이지 | 문제 | 스크린샷 |
|---|--------|------|----------|
| 1 | /settings/accounts | 버튼 그룹 좁음 | [링크] |
7. 예상 소요 시간
| 단계 | 예상 시간 | 비고 |
|---|---|---|
| 환경 준비 | 30분 | Playwright 세팅 |
| 스크린샷 캡처 | 1-2시간 | 185페이지, 자동화 |
| 문제 분류 | 1시간 | 수동 검토 |
| 수정 작업 | 2-8시간 | 문제 수에 따라 |
| 검증 | 30분 | 재캡처 |
| 총합 | 5-12시간 |
8. 의사결정 포인트
Q1: 자동화 vs 수동?
- 권장: 혼합 방식 (자동 캡처 → 수동 분류 → 수정)
Q2: 전체 vs 우선순위별?
- 권장: 전체 캡처 후, Critical만 우선 수정
Q3: 지금 vs 나중에?
- 현재 수정 비용 < 나중 수정 비용
- 가능하면 빠른 시일 내 진행 권장
9. 시작 전 필요한 것
- 로컬 개발 서버 실행 상태
- 테스트 계정 로그인 정보
- Node.js + Playwright 설치
- 약 2-3시간 집중 시간
부록: 페이지 URL 목록
전체 페이지 목록 (185개) - 클릭하여 펼치기
Dashboard
/dashboard
Sales (18개)
/sales/client-management-sales-admin/sales/quote-management/sales/order-management- ... (상세 목록 필요시 추가)
Accounting (26개)
/accounting/sales/accounting/vendors/accounting/bills- ... (상세 목록 필요시 추가)
Construction (40개)
/construction/sites/construction/work-logs- ... (상세 목록 필요시 추가)
다음 단계: 이 계획서 검토 후, 진행 방식 결정하면 Playwright 스크립트 작성 시작