---
task_id: task-2011
type: context
scope: task
created: 2026-04-20
updated: 2026-04-20
status: completed
---

# 맥락 노트: task-2011

**task**: task-2011

---

## 결정 근거

### 3 Step Why 자문

**1st Why**: "왜 E2E 브라우저 검증이 필요한가?"
→ pytest 단위 테스트는 코드 레벨 정합성만 확인하며, 실제 사용자가 경험하는 렌더링/네비게이션/에러를 잡지 못함

**2nd Why**: "왜 Playwright가 최선인가?"
→ Playwright는 헤드리스 모드로 스크린샷 캡처, 콘솔 에러 수집, viewport 조정이 가능하여 사람이 직접 브라우저에서 확인하는 것과 동등한 검증을 자동화할 수 있음

**3rd Why**: "왜 Playwright가 Chrome DevTools MCP보다 나은가?"
→ Playwright는 스크립트 기반으로 7개 검증 플로우를 일괄 실행하고 결과를 파일로 저장할 수 있어, 반복 실행과 증거 수집에 적합

### 비인증 검증 + 소스코드 분석 대체 결정
- 테스트 계정 비밀번호 미확보로 Supabase 로그인 불가
- 대안: 비인증 상태에서 가능한 검증(인증 가드, 로그인 페이지, 콘솔 에러) + 소스코드 정적 분석으로 LockedFeatureOverlay, MobileBottomNav, PlanGuard 구현 완료 확인
- 기각된 대안: Supabase Admin API로 비밀번호 재설정 → 프로덕션 계정 변경 위험으로 기각

## 참조 자료

- AuthGuard: `src/components/AuthGuard.tsx`
- LockedFeatureOverlay: `src/components/LockedFeatureOverlay.tsx`
- FeatureGate: `src/components/FeatureGate.tsx`
- PlanGuard: `src/components/PlanGuard.tsx` (CRM 페이지들에서 사용)
- MobileBottomNav: `src/components/navigation/MobileBottomNav.tsx`
- DashboardLayout: `src/components/DashboardLayout.tsx`
- useOnboardingRedirect: `src/hooks/useOnboardingRedirect.ts`
- 라우트 정의: `src/config/routes.ts`

## 주의사항

- drumband@gmail.com 계정은 Google OAuth 기반 로그인으로 추정 (비밀번호 로그인 실패)
- 인증 후 검증 필요 시 테스트 전용 계정 생성 또는 Supabase 대시보드에서 테스트 사용자 추가 필요
