Files
sam-react-prod/docs/dev/dev_plans/flow-tests/branching-example-flow.json
kimbokon f5bdc5bac8 fix: 11개 FAIL 시나리오 수정 후 재테스트 전체 PASS
Pattern A (4건): 삭제 버튼 미구현 - critical:false + SKIP 처리
Pattern B (7건): 테이블 로드 폴링 + 검색 폴백 추가
추가: VERIFY_DELETE 단계도 삭제 미구현 대응

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 16:22:11 +09:00

166 lines
4.7 KiB
JSON

{
"$schema": "flow-tester-schema.json",
"name": "분기 테스트 플로우 예시",
"description": "Flow Tester의 조건 분기 기능을 보여주는 예시 플로우입니다. 로그인 성공/실패에 따른 분기, 권한에 따른 분기, 조건부 의존성 등을 테스트합니다.",
"version": "1.0.0",
"author": "SAM Team",
"category": "examples",
"tags": ["branching", "condition", "if-else", "example"],
"config": {
"baseUrl": "",
"timeout": 30000,
"stopOnFailure": false
},
"variables": {
"user_id": "{{$env.FLOW_TESTER_USER_ID}}",
"user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}"
},
"steps": [
{
"id": "login",
"name": "1. 로그인 시도",
"description": "사용자 인증을 시도합니다",
"method": "POST",
"endpoint": "/api/v1/login",
"body": {
"user_id": "{{variables.user_id}}",
"user_pwd": "{{variables.user_pwd}}"
},
"expect": {
"status": [200, 401]
},
"extract": {
"token": "$.access_token",
"role": "$.user.role",
"permissions": "$.user.permissions"
},
"continueOnFailure": true
},
{
"id": "login_success_path",
"name": "2-A. 로그인 성공 처리",
"description": "로그인이 성공했을 때만 실행됩니다",
"condition": {"stepResult": "login", "is": "success"},
"dependsOn": ["login"],
"method": "GET",
"endpoint": "/api/v1/users/me",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200]
}
},
{
"id": "login_failure_path",
"name": "2-B. 로그인 실패 처리",
"description": "로그인이 실패했을 때만 실행됩니다",
"condition": {"stepResult": "login", "is": "failure"},
"dependsOn": [{"step": "login", "onlyIf": "any"}],
"method": "POST",
"endpoint": "/api/v1/auth/password-reset-request",
"body": {
"email": "{{variables.user_id}}"
},
"expect": {
"status": [200, 404]
},
"continueOnFailure": true
},
{
"id": "admin_dashboard",
"name": "3-A. 관리자 대시보드",
"description": "관리자 권한이 있을 때만 실행됩니다",
"condition": "{{login.role}} == 'admin'",
"dependsOn": ["login_success_path"],
"method": "GET",
"endpoint": "/api/v1/admin/dashboard",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200]
}
},
{
"id": "user_dashboard",
"name": "3-B. 일반 사용자 대시보드",
"description": "일반 사용자 권한일 때만 실행됩니다",
"condition": "{{login.role}} == 'user'",
"dependsOn": ["login_success_path"],
"method": "GET",
"endpoint": "/api/v1/user/dashboard",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200]
}
},
{
"id": "premium_features",
"name": "3-C. 프리미엄 기능",
"description": "프리미엄 권한이 있을 때만 실행됩니다",
"condition": {
"and": [
{"stepResult": "login", "is": "success"},
{"left": "{{login.permissions}}", "op": "contains", "right": "premium"}
]
},
"dependsOn": ["login_success_path"],
"method": "GET",
"endpoint": "/api/v1/premium/features",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200]
}
},
{
"id": "create_report",
"name": "4. 리포트 생성 (관리자만)",
"description": "관리자만 리포트를 생성할 수 있습니다",
"condition": {"stepResult": "admin_dashboard", "is": "success"},
"dependsOn": [{"step": "admin_dashboard", "onlyIf": "executed"}],
"method": "POST",
"endpoint": "/api/v1/admin/reports",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"body": {
"type": "daily",
"date": "{{$faker.date}}"
},
"expect": {
"status": [201]
}
},
{
"id": "cleanup_always",
"name": "5. 정리 작업 (항상 실행)",
"description": "성공/실패와 무관하게 항상 실행되는 정리 작업입니다",
"dependsOn": [
{"step": "login", "onlyIf": "any"},
{"step": "admin_dashboard", "onlyIf": "any"},
{"step": "user_dashboard", "onlyIf": "any"}
],
"method": "POST",
"endpoint": "/api/v1/logout",
"headers": {
"Authorization": "Bearer {{login.token}}"
},
"expect": {
"status": [200, 401]
},
"continueOnFailure": true
}
]
}