85 lines
6.1 KiB
Markdown
85 lines
6.1 KiB
Markdown
pnpm exec playwright test tests/multi-device-auth.spec.ts --project=chromium
|
||
|
||
|
||
cd frontend/apps/cs
|
||
pnpm test:playwright
|
||
|
||
|
||
💡 요약 및 권장 가이드 device-id의 유지 처리
|
||
로그아웃 시 파기 대상: 인증 토큰 쿠키 (access-token, refresh-token)
|
||
로그아웃 시 유지 대상: 기기 식별자 쿠키 및 로컬 스토리지 데이터 (device-id)
|
||
따라서 현재 구성하신 대로 쿠키/로컬 스토리지 상의 device-id는 로그아웃 시 지우지 않고 브라우저에 영속적으로 남겨두는 설계가 가장 안전하고 올바른 아키텍처입니다.
|
||
|
||
|
||
[WebServer]
|
||
[WebServer] > cs@0.1.0 dev /Users/changwng/workspace.ona/frontend/apps/cs
|
||
[WebServer] > next dev
|
||
[WebServer]
|
||
[WebServer] ⚠ Warning: Next.js inferred your workspace root, but it may not be correct.
|
||
[WebServer] We detected multiple lockfiles and selected the directory of /Users/changwng/package-lock.json as the root directory.
|
||
[WebServer] To silence this warning, set `outputFileTracingRoot` in your Next.js config, or consider removing one of the lockfiles if it's not needed.
|
||
[WebServer] See https://nextjs.org/docs/app/api-reference/config/next-config-js/output#caveats for more information.
|
||
[WebServer] Detected additional lockfiles:
|
||
[WebServer] * /Users/changwng/workspace.ona/frontend/pnpm-lock.yaml
|
||
[WebServer]
|
||
[WebServer] ▲ Next.js 15.5.18
|
||
[WebServer] - Local: http://localhost:3000
|
||
[WebServer] - Network: http://192.168.0.250:3000
|
||
[WebServer] - Environments: .env.local
|
||
[WebServer] - Experiments (use with caution):
|
||
[WebServer] · proxyTimeout: 600000
|
||
[WebServer]
|
||
[WebServer] ✓ Starting...
|
||
[WebServer] ✓ Ready in 1733ms
|
||
[WebServer] ✓ Compiled /middleware in 114ms (161 modules)
|
||
[WebServer] ○ Compiling /dashboard ...
|
||
[WebServer] ✓ Compiled /dashboard in 4.3s (6804 modules)
|
||
|
||
Running 14 tests using 1 worker
|
||
|
||
[WebServer] GET /dashboard 200 in 4913ms
|
||
[WebServer] ○ Compiling /api/proxy/[...url] ...
|
||
[WebServer] ✓ Compiled /api/proxy/[...url] in 10.2s (7070 modules)
|
||
[WebServer] [BFF Proxy Error] Backend returned status 401 for user-service/login
|
||
[WebServer] [BFF Proxy Error Body] {"status":400,"message":"해당 사용자가 없습니다.","code":"B001"}
|
||
[WebServer] POST /api/proxy/user-service/login 401 in 10766ms
|
||
✘ 1 [chromium] › tests/multi-device-auth.spec.ts:64:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 1. 로그인 성공 시 httpOnly refresh-token 쿠키 설정 (10.8s)
|
||
- 2 [chromium] › tests/multi-device-auth.spec.ts:81:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 2. PC/모바일/태블릿 독립 refresh-token 발급
|
||
- 3 [chromium] › tests/multi-device-auth.spec.ts:115:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 3. Silent Refresh RTR - 새 토큰 교체
|
||
- 4 [chromium] › tests/multi-device-auth.spec.ts:138:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 4. PC RTR 갱신 후 모바일 세션 독립 유지
|
||
- 5 [chromium] › tests/multi-device-auth.spec.ts:161:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 5. Replay Attack - 구 토큰 재주입 → 400
|
||
- 6 [chromium] › tests/multi-device-auth.spec.ts:195:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 6. refresh-token 없이 silent refresh → 401
|
||
- 7 [chromium] › tests/multi-device-auth.spec.ts:207:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 7. 잘못된 비밀번호 → 401
|
||
- 8 [chromium] › tests/multi-device-auth.spec.ts:217:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 8. 존재하지 않는 ID → 401
|
||
- 9 [chromium] › tests/multi-device-auth.spec.ts:227:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 9. 로그아웃 후 쿠키 전체 삭제
|
||
- 10 [chromium] › tests/multi-device-auth.spec.ts:250:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 10. PC 로그아웃 후 모바일 세션 독립 유지
|
||
- 11 [chromium] › tests/multi-device-auth.spec.ts:272:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 11. UI 로그인 후 httpOnly 쿠키 E2E 확인
|
||
- 12 [chromium] › tests/multi-device-auth.spec.ts:306:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 12. 동일 계정 3개 브라우저 동시 로그인
|
||
- 13 [chromium] › tests/multi-device-auth.spec.ts:341:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 13. sameSite=Strict 쿠키 속성 확인
|
||
- 14 [chromium] › tests/multi-device-auth.spec.ts:353:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 14. 연속 3회 RTR 갱신 - 4개 고유 토큰
|
||
|
||
|
||
1) [chromium] › tests/multi-device-auth.spec.ts:64:7 › 다중 디바이스 인증 & Refresh Token Rotation (RTR) 테스트 › 1. 로그인 성공 시 httpOnly refresh-token 쿠키 설정
|
||
|
||
Error: expect(received).toBe(expected) // Object.is equality
|
||
|
||
Expected: 200
|
||
Received: 401
|
||
|
||
67 | headers: { "X-Device-Id": DEVICE_PC },
|
||
68 | });
|
||
> 69 | expect(response.status()).toBe(200);
|
||
| ^
|
||
70 |
|
||
71 | const headers = response.headersArray();
|
||
72 | const refreshToken = getCookieValue(headers, "refresh-token");
|
||
at /Users/changwng/workspace.ona/frontend/apps/cs/tests/multi-device-auth.spec.ts:69:31
|
||
|
||
Error Context: test-results/multi-device-auth-다중-디바이스--4f452-ttpOnly-refresh-token-쿠키-설정-chromium/error-context.md
|
||
|
||
attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
|
||
test-results/multi-device-auth-다중-디바이스--4f452-ttpOnly-refresh-token-쿠키-설정-chromium/trace.zip
|
||
Usage:
|
||
|
||
pnpm exec playwright show-trace test-results/multi-device-auth-다중-디바이스--4f452-ttpOnly-refresh-token-쿠키-설정-chromium/trace.zip
|