536 lines
16 KiB
JSON
536 lines
16 KiB
JSON
{
|
|
"id": "permission-management",
|
|
"name": "설정 - 권한관리",
|
|
"screenshotPolicy": {
|
|
"onErrorOnly": true,
|
|
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
|
|
},
|
|
"url": "/ko/settings/permissions",
|
|
"navigation": {
|
|
"targetUrl": "/settings/permissions",
|
|
"urlPattern": "/settings/permissions|/ko/settings/permissions",
|
|
"menuHints": ["권한관리", "권한 관리", "설정"]
|
|
},
|
|
"menuNavigation": {
|
|
"level1": "설정",
|
|
"level2": "권한관리",
|
|
"expectedUrl": "/ko/settings/permissions",
|
|
"searchWithinParent": true,
|
|
"closeOtherMenus": true
|
|
},
|
|
"auth": {
|
|
"username": "TestUser5",
|
|
"password": "password123!"
|
|
},
|
|
"menuNavigationEnhanced": {
|
|
"strategy": "scroll-and-search",
|
|
"description": "사이드바를 스크롤하며 메뉴를 찾고 클릭하여 404를 방지",
|
|
"level1": "설정",
|
|
"level2": "권한관리",
|
|
"alternativeLevel1Names": ["설정", "Settings", "환경설정", "시스템설정", "관리"],
|
|
"alternativeLevel2Names": ["권한관리", "권한 관리", "Permissions", "역할관리", "Role Management"],
|
|
"scrollConfig": {
|
|
"sidebarSelector": "nav, aside, [role='navigation'], .sidebar, #sidebar",
|
|
"menuItemSelector": "a, button, [role='menuitem'], [role='treeitem']",
|
|
"scrollStep": 200,
|
|
"maxScrollAttempts": 10,
|
|
"scrollDelay": 300
|
|
}
|
|
},
|
|
"expectedAPIs": [
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/roles",
|
|
"description": "역할 목록 조회"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/roles/stats",
|
|
"description": "역할 통계 조회"
|
|
},
|
|
{
|
|
"method": "POST",
|
|
"path": "/api/roles",
|
|
"description": "역할 생성"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/roles/{id}",
|
|
"description": "역할 상세 조회"
|
|
},
|
|
{
|
|
"method": "PUT",
|
|
"path": "/api/roles/{id}",
|
|
"description": "역할 수정"
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"path": "/api/roles/{id}",
|
|
"description": "역할 삭제"
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"path": "/api/roles/{id}/permissions",
|
|
"description": "역할별 권한 매트릭스 조회"
|
|
},
|
|
{
|
|
"method": "PUT",
|
|
"path": "/api/roles/{id}/permissions",
|
|
"description": "역할별 권한 저장"
|
|
}
|
|
],
|
|
"steps": [
|
|
{
|
|
"id": "step-00",
|
|
"name": "사이드바 메뉴 전체 펼치기",
|
|
"description": "모두 펼치기 버튼을 클릭하여 전체 메뉴를 펼친 후 메뉴 탐색 준비",
|
|
"actions": [
|
|
{
|
|
"type": "evaluate",
|
|
"script": "document.querySelector('.sidebar-scroll')?.scrollTo({top:0,behavior:'instant'})"
|
|
},
|
|
{ "type": "wait", "duration": 300 },
|
|
{
|
|
"type": "evaluate",
|
|
"script": "Array.from(document.querySelectorAll('button')).find(b => b.innerText?.includes('모두 펼치기'))?.click()"
|
|
},
|
|
{ "type": "wait", "duration": 2000 }
|
|
]
|
|
},
|
|
{
|
|
"id": "step-01",
|
|
"name": "2단계 메뉴 진입: 설정 > 권한관리",
|
|
"description": "사이드바를 스크롤하며 설정 > 권한관리 메뉴를 찾아 클릭",
|
|
"actions": [
|
|
{
|
|
"type": "scrollAndFind",
|
|
"target": "설정",
|
|
"alternativeTexts": ["설정", "Settings", "환경설정", "시스템설정"],
|
|
"scrollContainer": "sidebar",
|
|
"maxAttempts": 10,
|
|
"description": "스크롤하며 설정 메뉴 찾기"
|
|
},
|
|
{ "type": "click", "target": "설정", "description": "설정 메뉴 클릭" },
|
|
{ "type": "wait", "duration": 500, "description": "서브메뉴 펼쳐지기 대기" },
|
|
{
|
|
"type": "scrollAndFind",
|
|
"target": "권한관리",
|
|
"alternativeTexts": ["권한관리", "권한 관리", "Permissions", "역할관리"],
|
|
"scrollContainer": "submenu",
|
|
"maxAttempts": 5,
|
|
"description": "서브메뉴에서 권한관리 찾기"
|
|
},
|
|
{ "type": "click", "target": "권한관리", "description": "권한관리 메뉴 클릭" },
|
|
{ "type": "wait", "target": "페이지 로드 완료", "timeout": 10000 }
|
|
],
|
|
"expected": {
|
|
"url": "/ko/settings/permissions",
|
|
"title": "권한관리",
|
|
"authenticated": true
|
|
},
|
|
"verification": [
|
|
"설정 메뉴가 펼쳐졌는지 확인",
|
|
"권한관리 서브메뉴 클릭 성공",
|
|
"페이지 타이틀 '권한관리' 확인",
|
|
"설명 '역할 기반 권한을 관리합니다' 확인",
|
|
"Shield 아이콘 표시",
|
|
"404 에러 없이 페이지 로드 완료"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-02",
|
|
"name": "통계 카드 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"통계 카드 4개 표시: 전체 역할, 공개, 숨김, 사용 중",
|
|
"각 카드에 아이콘과 숫자 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-03",
|
|
"name": "탭 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"탭 3개 표시: 전체, 공개, 숨김",
|
|
"각 탭에 카운트 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-04",
|
|
"name": "테이블 구조 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"테이블 컬럼 확인: 체크박스, 번호, 역할, 설명, 상태, 등록일",
|
|
"역할 등록 버튼 존재",
|
|
"검색창 존재 (placeholder: '역할명, 설명 검색...')"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-05",
|
|
"name": "탭 필터 테스트 - 공개",
|
|
"action": "click",
|
|
"target": "공개 탭",
|
|
"verification": [
|
|
"공개 탭 활성화",
|
|
"공개 상태 역할만 표시",
|
|
"데이터 필터링 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-06",
|
|
"name": "탭 필터 테스트 - 숨김",
|
|
"action": "click",
|
|
"target": "숨김 탭",
|
|
"verification": [
|
|
"숨김 탭 활성화",
|
|
"숨김 상태 역할만 표시",
|
|
"데이터 필터링 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-07",
|
|
"name": "탭 필터 테스트 - 전체",
|
|
"action": "click",
|
|
"target": "전체 탭",
|
|
"verification": [
|
|
"전체 탭 활성화",
|
|
"모든 역할 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-08",
|
|
"name": "검색 기능 테스트",
|
|
"action": "type",
|
|
"target": "검색 입력 필드",
|
|
"value": "관리자",
|
|
"verification": [
|
|
"'관리자' 포함된 역할만 표시",
|
|
"실시간 필터링 동작"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-09",
|
|
"name": "검색 초기화",
|
|
"action": "clear",
|
|
"target": "검색 입력 필드",
|
|
"verification": [
|
|
"검색어 제거됨",
|
|
"전체 목록 복원"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-10",
|
|
"name": "역할 등록 페이지 이동",
|
|
"action": "click",
|
|
"target": "역할 등록 버튼",
|
|
"verification": [
|
|
"URL 변경: /settings/permissions?mode=new",
|
|
"페이지 타이틀 변경 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-11",
|
|
"name": "역할명 입력",
|
|
"action": "type",
|
|
"target": "권한명 입력 필드",
|
|
"value": "E2E 테스트 역할",
|
|
"verification": [
|
|
"입력 값 반영 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-12",
|
|
"name": "설명 입력",
|
|
"action": "type",
|
|
"target": "설명 입력 필드 (있는 경우)",
|
|
"value": "E2E 테스트를 위한 역할입니다",
|
|
"verification": [
|
|
"입력 값 반영 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-13",
|
|
"name": "상태 선택",
|
|
"action": "select",
|
|
"target": "상태 드롭다운",
|
|
"value": "공개",
|
|
"verification": [
|
|
"상태 선택 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-14",
|
|
"name": "역할 등록",
|
|
"action": "click_if_exists",
|
|
"target": "등록 버튼",
|
|
"verification": [
|
|
"현재 URL 저장",
|
|
"등록 버튼 클릭",
|
|
"URL 변경 여부 확인 (에러 페이지 이동 방지)",
|
|
"에러 텍스트 없음 ('페이지를 찾을 수 없습니다', '404', 'Not Found' 등)",
|
|
"API 호출 확인: POST /api/roles",
|
|
"API 응답 200 OK 확인",
|
|
"목록 페이지로 리다이렉트 또는 상세 페이지 이동",
|
|
"성공 토스트 메시지 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-15",
|
|
"name": "목록에서 신규 역할 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"목록 페이지 진입 (URL: /settings/permissions)",
|
|
"'E2E 테스트 역할' 목록에 표시",
|
|
"통계 카드 숫자 증가 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-16",
|
|
"name": "역할 상세 페이지 이동",
|
|
"action": "click",
|
|
"target": "E2E 테스트 역할 행",
|
|
"verification": [
|
|
"URL 변경: /settings/permissions/{id}",
|
|
"페이지 타이틀 '권한 상세' 확인",
|
|
"기본 정보 섹션 표시",
|
|
"메뉴별 권한 테이블 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-17",
|
|
"name": "기본 정보 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"권한명 입력 필드에 'E2E 테스트 역할' 표시",
|
|
"상태 드롭다운에 '공개' 선택됨",
|
|
"삭제 버튼 존재",
|
|
"수정 버튼 존재",
|
|
"목록으로 버튼 존재"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-18",
|
|
"name": "권한 테이블 구조 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"테이블 헤더: 메뉴, 조회, 생성, 수정, 삭제, 승인, 내보내기, 관리",
|
|
"각 헤더에 전체 선택 체크박스 존재",
|
|
"메뉴 목록 표시 (부모 메뉴 접기/펼치기 아이콘 있음)",
|
|
"각 메뉴별 권한 체크박스 존재"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-19",
|
|
"name": "부모 메뉴 펼치기",
|
|
"action": "click",
|
|
"target": "첫 번째 부모 메뉴 펼치기 아이콘",
|
|
"verification": [
|
|
"자식 메뉴 목록 표시",
|
|
"아이콘이 ChevronDown으로 변경",
|
|
"자식 메뉴는 들여쓰기되어 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-20",
|
|
"name": "개별 권한 체크박스 토글",
|
|
"action": "click",
|
|
"target": "첫 번째 메뉴의 '조회' 체크박스",
|
|
"verification": [
|
|
"체크박스 상태 변경",
|
|
"자동 저장 동작 (API 호출 확인)"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-21",
|
|
"name": "컬럼 전체 선택",
|
|
"action": "click",
|
|
"target": "'조회' 헤더 체크박스",
|
|
"verification": [
|
|
"모든 메뉴의 '조회' 권한 체크",
|
|
"자동 저장 동작 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-22",
|
|
"name": "권한명 수정",
|
|
"action": "type",
|
|
"target": "권한명 입력 필드",
|
|
"value": "E2E 테스트 역할 (수정됨)",
|
|
"verification": [
|
|
"입력 값 변경 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-23",
|
|
"name": "권한명 수정 저장 (blur)",
|
|
"action": "blur",
|
|
"target": "권한명 입력 필드",
|
|
"verification": [
|
|
"자동 저장 동작 (API 호출)",
|
|
"PUT /api/roles/{id} 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-24",
|
|
"name": "상태 변경",
|
|
"action": "select",
|
|
"target": "상태 드롭다운",
|
|
"value": "숨김",
|
|
"verification": [
|
|
"상태 변경 확인",
|
|
"자동 저장 동작"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-25",
|
|
"name": "목록으로 이동",
|
|
"action": "click",
|
|
"target": "목록으로 버튼",
|
|
"verification": [
|
|
"URL 변경: /settings/permissions",
|
|
"목록 페이지 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-26",
|
|
"name": "수정된 역할 확인",
|
|
"action": "verify",
|
|
"verification": [
|
|
"'E2E 테스트 역할 (수정됨)' 목록에 표시",
|
|
"상태 Badge '숨김'으로 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-27",
|
|
"name": "숨김 탭으로 이동",
|
|
"action": "click",
|
|
"target": "숨김 탭",
|
|
"verification": [
|
|
"숨김 상태 역할만 표시",
|
|
"'E2E 테스트 역할 (수정됨)' 표시됨"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-28",
|
|
"name": "전체 탭으로 복귀",
|
|
"action": "click",
|
|
"target": "전체 탭",
|
|
"verification": [
|
|
"모든 역할 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-29",
|
|
"name": "체크박스 선택",
|
|
"action": "click",
|
|
"target": "E2E 테스트 역할 체크박스",
|
|
"verification": [
|
|
"체크박스 선택됨",
|
|
"'1개 항목 선택됨' 표시",
|
|
"'선택 삭제 (1)' 버튼 표시",
|
|
"작업 컬럼 추가 (권한 설정, 수정, 삭제 버튼)"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-30",
|
|
"name": "단일 삭제 - 작업 컬럼 삭제 버튼",
|
|
"action": "click",
|
|
"target": "작업 컬럼의 삭제 버튼",
|
|
"verification": [
|
|
"삭제 확인 다이얼로그 표시",
|
|
"다이얼로그 제목: '역할 삭제'",
|
|
"경고 메시지: '이 역할을 사용 중인 사원이 있으면 해당 사원의 역할이 초기화됩니다.'"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-31",
|
|
"name": "삭제 취소",
|
|
"action": "click",
|
|
"target": "다이얼로그 취소 버튼",
|
|
"verification": [
|
|
"다이얼로그 닫힘",
|
|
"역할 삭제되지 않음"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-32",
|
|
"name": "일괄 삭제 버튼 클릭",
|
|
"action": "click",
|
|
"target": "선택 삭제 버튼",
|
|
"verification": [
|
|
"삭제 확인 다이얼로그 표시",
|
|
"'선택한 1개의 역할을 삭제하시겠습니까?' 메시지"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-33",
|
|
"name": "일괄 삭제 실행",
|
|
"action": "click_if_exists",
|
|
"target": "다이얼로그 삭제 버튼",
|
|
"verification": [
|
|
"삭제 중 로딩 표시 ('삭제 중...')",
|
|
"API 호출: DELETE /api/roles/{id}",
|
|
"API 응답 200 OK 확인",
|
|
"다이얼로그 닫힘",
|
|
"성공 토스트 메시지 확인",
|
|
"목록에서 삭제된 역할 제거됨",
|
|
"통계 카드 숫자 감소 확인"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-34",
|
|
"name": "체크박스 전체 선택",
|
|
"action": "click",
|
|
"target": "테이블 헤더 체크박스",
|
|
"verification": [
|
|
"현재 페이지의 모든 항목 선택",
|
|
"'N개 항목 선택됨' 표시",
|
|
"'선택 삭제 (N)' 버튼 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-35",
|
|
"name": "전체 선택 해제",
|
|
"action": "click",
|
|
"target": "테이블 헤더 체크박스",
|
|
"verification": [
|
|
"모든 선택 해제",
|
|
"'선택 삭제' 버튼 숨김",
|
|
"작업 컬럼 제거"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-36",
|
|
"name": "페이지네이션 테스트 (데이터 충분 시)",
|
|
"action": "verify",
|
|
"verification": [
|
|
"페이지네이션 컨트롤 존재 여부 확인",
|
|
"페이지당 20개 항목 표시",
|
|
"총 페이지 수 표시"
|
|
]
|
|
},
|
|
{
|
|
"id": "step-37",
|
|
"name": "반응형 테스트 - 모바일",
|
|
"action": "resize",
|
|
"width": 375,
|
|
"height": 667,
|
|
"verification": [
|
|
"모바일 카드 레이아웃으로 변경",
|
|
"각 카드에 역할명, 상태, 설명, 등록일 표시",
|
|
"카드에 권한 설정, 수정 버튼 존재"
|
|
]
|
|
}
|
|
],
|
|
"testData": {
|
|
"role": {
|
|
"name": "E2E 테스트 역할",
|
|
"description": "E2E 테스트를 위한 역할입니다",
|
|
"status": "active"
|
|
}
|
|
},
|
|
"cleanup": {
|
|
"description": "Step-33에서 테스트 데이터 삭제 완료"
|
|
}
|
|
}
|