bibimbap/docs/changes/2026-06-30-screenshot-guide...

2.5 KiB

2026-06-30 스크린샷 가이드 — 인증 후 세부 화면 캡처 추가

세션: sid 20260630-141415 브랜치: feat/v2 커밋: 5dd639f, 6e6d6b2, 872f51c

요약

docs/development/screenshot-guide.py를 전체 재작성해 인증 흐름을 추가했다. 기존 비인증 정적 페이지 7장 캡처에서 인증 후 세부 화면 7장을 추가로 캡처할 수 있게 됐다.


변경 전후 비교

항목 변경 전 변경 후
캡처 장수 7장 (비인증 정적 페이지) 최대 14장 (비인증 7 + 인증 후 7)
로그인 흐름 없음 AJAX fetch + expect_navigation
실행 분기 단일 SCREENSHOT_EMAIL / SCREENSHOT_PASSWORD env var 존재 여부
리뷰/댓글 composer 캡처 불가 (hidden 상태) 5초 대기 후 removeAttribute('hidden') 폴백
테스트 계정 미문서화 tester@bibimbap.local / test1234! (seed-dev.sql user3)

추가된 인증 후 캡처 목록

파일 화면
08-home-loggedin.png 홈 (로그인 후 — 내비게이션 변경)
09-profile.png 프로필 페이지
10-posts-form.png 게시글 작성 폼
11-recruit-form.png 모집 작성 폼
12-game-detail-loggedin.png 게임 상세 (로그인 후 전체 뷰)
13-game-review-form.png 리뷰 작성 폼 (노출 상태)
14-game-comment-form.png 댓글 작성 폼 (노출 상태, 섹션 포커스)

구현 상세

로그인 인증 흐름

Playwright AJAX fetch 방식으로 /auth/login 엔드포인트에 application/x-www-form-urlencoded POST 후 expect_navigation으로 리다이렉트 완료를 감지한다. 기존 wait_for_navigation()은 타이밍 경합이 있어 expect_navigation 컨텍스트 매니저로 교체했다.

hidden 요소 강제 노출 전략

리뷰/댓글 composer는 서버 API 응답(로그인 상태, 기존 리뷰 여부) 이후 JS가 hidden 속성을 제거한다. 스크립트는 최대 5초 자연 노출을 대기하고, 실패하면 page.evaluate("el => el.removeAttribute('hidden')") 폴백으로 강제 노출해 캡처한다.


수정된 파일

파일 변경 유형
docs/development/screenshot-guide.py 전체 재작성
docs/development/screenshot-guide.md 업데이트 (테스트 계정, 전체 실행 명령 추가)

관련 문서