{
  "issueId": "4297",
  "environment": "dev",
  "source": "user-provided checklist (Redmine #4297)",
  "sourceText": "요청자: 송인준\n[1] QA 요청 배경\n* https://itsm.bix.bz/issues/4297\n[2] 사전 데이터\n* 비스킷페이 계정\n[3] 사전 작업\n* 비스킷페이 계정 준비\n[4] 권한별 테스트\n* (로그인 전 화면, 정상 로그인 확인은 VE)\n[5] 검증 대상\n* 비스킷페이\n[6] 체크리스트\n* 서비스 정보(login-before) 조회 실패 시 Google Chat(비스킷링크 웹훅 테스트 방) 알림: 요청 차단, 서버 오류 500, 응답 형식 이상, 다시 시도 2회, 로그인 버튼, 계정 복구 화면, 링크 결제 화면, 화면·알림 오류 코드 일치, 정상 상황 알림 없음, 알림 내용(섹션·시각·ms·요청ID·개인정보 없음)",
  "scope": "개발계 비스킷페이 웹 서비스 정보(login-before) 조회 실패 진단 알림 QA",
  "checklist": [
    "요청 조작은 Playwright로 재현: login-before 요청 차단(Request blocking), 상태 코드 500(본문은 서버 응답 그대로, Override), 200 + <html>test</html>. 브라우저가 Google Chat(개발 스페이스)으로 보내는 알림 본문과 전송 응답(200)을 기록",
    "1. 요청 차단: 화면 '일시적인 오류가 발생했습니다' + NET-xxxx, 알림 1건, 발생 계기 '로그인 화면 진입', 요청 결과 '응답 없음'",
    "2. 서버 오류 500: 화면 H500-xxxx, 알림에 HTTP 500과 서버 응답",
    "3. 응답 형식 이상: 화면 오류 코드, 알림 응답 본문 <html>test</html>",
    "4. 다시 시도 2회: 누를 때마다 알림 1건, '다시 시도 버튼 (1회째)·(2회째)', 화면 오류 코드 매번 새 값",
    "5. 로그인 버튼(가짜 아이디·비밀번호, 차단 상태): 토스트에 (오류 코드: …), 발생 계기 '로그인 버튼', 입력값 알림 미포함",
    "6. 계정 복구 화면: 발생 계기 '계정 복구 화면' (링크 결제 화면은 요청자 확인으로 제외)",
    "7. 화면과 알림 제목의 오류 코드 일치",
    "8. 정상 상황: 조작 없이 로그인까지 진행, 알림 0건",
    "9. 알림 내용: 📍 발생·💻 환경·🌐 요청·🧾 응답 처리 섹션, 요청마다 시각·소요 시간(ms)·요청ID, 개인정보 없음"
  ],
  "roles": [
    "VE"
  ],
  "routeCandidates": "../../../../qa-results/issues/4297/dev/route-candidates.json",
  "setupSteps": [],
  "pages": [
    {
      "name": "비스킷페이 로그인",
      "application": "store",
      "path": "/sign-in",
      "tenantParam": "tenantId",
      "roles": [
        "VE"
      ],
      "restorePath": "/restore",
      "filters": []
    }
  ],
  "scenario": "store-tenant-diagnostics"
}
