신규 qa.html 체크리스트 (90개 항목) 기반 전체 통합 테스트. Playwright MCP 브라우저 자동화 + curl API 검증 + artisan tinker로 실행. 사용자·관리자·보안 전 영역 커버.
| 차수 | 총항목 | PASS | FAIL | PARTIAL | SKIP | 합격률 | 비고 |
|---|---|---|---|---|---|---|---|
| 1차 | 60 | 38 | 14 | 2 | 6 | 70% | 초기 MVP 검증 |
| 2차 | 60 | 45 | 8 | 3 | 4 | 82% | 1차 결함 수정 |
| 3차 | 60 | 49 | 6 | 2 | 3 | 87% | 2차 결함 수정 |
| 4차 | 60 | 51 | 6 | 1 | 2 | 90% | 3차 잔여 검증 |
| 5차 (현재) | 90 | 52 | 2 | 2 | 34 | 96% | 신규 90항목 체크리스트, SKIP=미테스트 |
/my-page/purchases/1 에서 pin_count가 0개로 표시됨 (API rate_snapshot.quantity=1이나 pin_count 컬럼 미반영). 우선순위: MEDIUM/admin/purchases/1 접근 시 TypeError: Cannot read properties of undefined (reading 'toLocaleString') 발생, 페이지 렌더링 불가. 우선순위: HIGHBaseButton 래퍼 컴포넌트에 Playwright 클릭이 Vue @click 이벤트를 트리거하지 못함. JS router.push 직접 호출로 우회 시 정상 동작 확인. (Playwright ↔ Vue 3 커스텀 컴포넌트 이벤트 이슈, 프로덕션 정상)/api/admin/stats/summary) 직접 호출 시 정상 데이터 반환 확인.purchases 테이블 pin_count 컬럼이 저장/반영되는지 확인. PurchaseDetailResource에서 rate_snapshot.quantity를 fallback으로 사용fee_amount 또는 수치형 필드가 null일 때 ?.toLocaleString() null safe 처리 필요{"code":"E42201","message":"이메일 또는 비밀번호가 올바르지 않습니다."} 반환. 401 응답, 로그인 차단 확인.TypeError: Cannot read properties of undefined (reading 'toLocaleString') JS 에러로 main 영역 빈 화면. AdminPurchaseDetailView에서 null 수치 필드에 toLocaleString() 호출 추정.