2026-01-30 10:50:38 +09:00
{
"id" : "inventory-status" ,
"name" : "재고현황 테스트" ,
"screenshotPolicy" : {
"onErrorOnly" : true ,
2026-02-09 15:05:03 +09:00
"captureOn" : [
"error" ,
"fail" ,
"timeout" ,
"404" ,
"500" ,
"blocked"
]
2026-01-30 10:50:38 +09:00
} ,
"description" : "자재관리 > 재고현황 페이지의 재고 조회 및 엑셀 다운로드 기능을 테스트하는 E2E 테스트" ,
"baseUrl" : "https://dev.codebridge-x.com" ,
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"url" : "/material/stock-status" ,
2026-01-30 21:47:29 +09:00
"navigation" : {
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"targetUrl" : "/material/stock-status" ,
"urlPattern" : "/material/stock-status|/ko/material/stock-status" ,
2026-02-09 15:05:03 +09:00
"menuHints" : [
"재고현황" ,
"재고 현황" ,
"자재관리"
]
2026-01-30 21:47:29 +09:00
} ,
2026-01-30 10:50:38 +09:00
"menuNavigation" : {
"level1" : "자재관리" ,
"level2" : "재고현황" ,
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"expectedUrl" : "/material/stock-status" ,
2026-02-04 21:59:56 +09:00
"searchWithinParent" : true ,
"closeOtherMenus" : true
2026-01-30 10:50:38 +09:00
} ,
"menuNavigationEnhanced" : {
"strategy" : "scroll-and-search" ,
"sidebar" : {
"scrollContainer" : ".sidebar-scroll" ,
"scrollStep" : 200 ,
"maxScrollAttempts" : 5 ,
"waitAfterScroll" : 300
} ,
"level1" : {
"text" : "자재관리" ,
"expandable" : true ,
"waitAfterClick" : 500
} ,
"level2" : {
"text" : "재고현황" ,
"waitAfterClick" : 300
} ,
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"fallbackUrl" : "/material/stock-status" ,
"expectedUrl" : "/material/stock-status"
2026-01-30 10:50:38 +09:00
} ,
"timeout" : 90000 ,
2026-02-09 15:05:03 +09:00
"tags" : [
"material" ,
"inventory" ,
"read-only"
] ,
2026-02-04 21:59:56 +09:00
"auth" : {
"username" : "TestUser5" ,
"password" : "password123!"
2026-01-30 10:50:38 +09:00
} ,
"steps" : [
{
2026-02-09 15:05:03 +09:00
"id" : 1 ,
2026-01-30 16:26:52 +09:00
"name" : "사이드바 메뉴 전체 펼치기" ,
"description" : "모두 펼치기 버튼을 클릭하여 전체 메뉴를 펼친 후 메뉴 탐색 준비" ,
2026-02-28 17:21:01 +09:00
"action" : "evaluate" ,
"script" : "(async()=>{document.querySelector('.sidebar-scroll')?.scrollTo({top:0,behavior:'instant'});await new Promise(r=>setTimeout(r,300));Array.from(document.querySelectorAll('button')).find(b=>b.innerText?.includes('모두 펼치기'))?.click();await new Promise(r=>setTimeout(r,2000));})()"
2026-01-30 10:50:38 +09:00
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 2 ,
2026-01-30 10:50:38 +09:00
"name" : "자재관리 메뉴 진입" ,
"description" : "자재관리 > 재고현황 메뉴로 이동" ,
2026-02-28 17:21:01 +09:00
"action" : "menu_navigate" ,
"level1" : "자재관리" ,
"level2" : "재고현황" ,
2026-01-30 10:50:38 +09:00
"expect" : {
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"url" : "/material/stock-status" ,
2026-02-09 15:05:03 +09:00
"visible" : [
"재고 목록" ,
"엑셀 다운로드"
]
2026-01-30 10:50:38 +09:00
} ,
"fallback" : {
"type" : "navigate" ,
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"url" : "/material/stock-status"
2026-01-30 10:50:38 +09:00
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 3 ,
2026-01-30 10:50:38 +09:00
"name" : "페이지 구조 확인" ,
"description" : "통계 카드와 테이블 구조 확인" ,
2026-02-28 17:21:01 +09:00
"action" : "verify_detail" ,
"checks" : [
"전체 품목" ,
"정상 재고" ,
"재고 부족" ,
"재고 없음"
] ,
"expected" : "통계 카드(전체 품목/정상 재고/재고 부족/재고 없음) 및 테이블 컬럼(번호/품목코드/품목명/품목유형/단위/재고량/안전재고/LOT/상태/위치) 확인" ,
2026-01-30 10:50:38 +09:00
"verify" : {
2026-02-09 15:05:03 +09:00
"visible" : [
"전체 품목" ,
"정상 재고" ,
"재고 부족" ,
"재고 없음"
] ,
"tableColumns" : [
"번호" ,
"품목코드" ,
"품목명" ,
"품목유형" ,
"단위" ,
"재고량" ,
"안전재고" ,
"LOT" ,
"상태" ,
"위치"
]
2026-01-30 10:50:38 +09:00
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 4 ,
2026-01-30 10:50:38 +09:00
"name" : "필수 검증 #3: 품목유형 탭 필터 - 원자재" ,
"description" : "원자재 탭 클릭하여 필터링 확인" ,
2026-02-28 17:21:01 +09:00
"action" : "click_if_exists" ,
"target" : "원자재" ,
"role" : "tab" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"tabActive" : "원자재" ,
"dataFiltered" : true
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 5 ,
2026-01-30 10:50:38 +09:00
"name" : "필수 검증 #3: 품목유형 탭 필터 - 부자재" ,
"description" : "부자재 탭 클릭하여 필터링 확인" ,
2026-02-28 17:21:01 +09:00
"action" : "click_if_exists" ,
"target" : "부자재" ,
"role" : "tab" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"tabActive" : "부자재" ,
"dataFiltered" : true
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 6 ,
2026-01-30 10:50:38 +09:00
"name" : "필수 검증 #3: 품목유형 탭 필터 - 소모품" ,
"description" : "소모품 탭 클릭하여 필터링 확인" ,
2026-02-28 17:21:01 +09:00
"action" : "click_if_exists" ,
"target" : "소모품" ,
"role" : "tab" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"tabActive" : "소모품" ,
"dataFiltered" : true
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 7 ,
2026-01-30 10:50:38 +09:00
"name" : "전체 탭으로 복귀" ,
"description" : "전체 탭 클릭하여 모든 재고 표시" ,
2026-02-28 17:21:01 +09:00
"action" : "click_if_exists" ,
"target" : "전체" ,
"role" : "tab" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"tabActive" : "전체" ,
"allDataShown" : true
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 8 ,
2026-01-30 10:50:38 +09:00
"name" : "필수 검증 #1: 엑셀 다운로드" ,
"description" : "엑셀 다운로드 버튼 동작 확인" ,
2026-02-28 17:21:01 +09:00
"action" : "click_if_exists" ,
"target" : "엑셀 다운로드" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"downloadTriggered" : true ,
"noErrorPage" : true
} ,
"verify" : {
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"apiCall" : "GET /api/material/stock-status/export"
2026-01-30 10:50:38 +09:00
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 9 ,
2026-01-30 10:50:38 +09:00
"name" : "재고 상세 열기" ,
"description" : "재고 항목 클릭하여 상세 보기" ,
2026-02-28 17:21:01 +09:00
"action" : "evaluate" ,
"script" : "document.querySelector('tbody tr')?.click()" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"pageOrModal" : "재고 상세" ,
2026-02-09 15:05:03 +09:00
"visible" : [
"품목코드" ,
"품목명" ,
"재고량" ,
"LOT"
]
2026-01-30 10:50:38 +09:00
}
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 10 ,
2026-01-30 10:50:38 +09:00
"name" : "상세 닫기" ,
"description" : "ESC 키로 상세 닫기 또는 뒤로가기" ,
2026-02-28 17:21:01 +09:00
"action" : "press_key" ,
"key" : "Escape"
2026-01-30 10:50:38 +09:00
} ,
{
2026-02-09 15:05:03 +09:00
"id" : 11 ,
"name" : "콘솔 에러 확인" ,
"action" : "verify_element" ,
"target" : "body"
} ,
{
"id" : 12 ,
2026-01-30 10:50:38 +09:00
"name" : "페이지네이션 확인" ,
"description" : "페이지네이션 동작 확인" ,
2026-02-28 17:21:01 +09:00
"action" : "click_if_exists" ,
"target" : "다음" ,
2026-01-30 10:50:38 +09:00
"expect" : {
"pageChanged" : true
}
}
] ,
"assertions" : [
{
"type" : "url" ,
refactor: E2E 시나리오 전면 개선 (43파일)
- Phase 0: 미구현 모듈 시나리오 13개 삭제 (구매관리, 중복, 라우트 없음)
- Phase 2: Settings URL 불일치 수정 (position, attendance, vacation-policy, bank-account, account, notification)
- Phase 3-4: 비설정 시나리오 URL/메뉴/UI 수정 (inventory-status, receiving-management, price-management, customer-inquiry, shipment-management, sales-client, quality-certification, customer-notice, production-* 등)
- Phase 5-6: 복잡 시나리오 재작성 (draft-box 50→14스텝, department-add 18→10스텝, free-board 70→22스텝, crud-delete-freeboard 14→17스텝)
- 16개 disabled 시나리오 enabled 전환
- 비표준 액션(fillInModal, randomData, usePlaywrightNative 등) → step-executor 표준 액션으로 통일
2026-02-06 17:37:35 +09:00
"expected" : "/material/stock-status" ,
2026-01-30 10:50:38 +09:00
"message" : "재고현황 페이지에 머물러야 함"
} ,
{
"type" : "elementExists" ,
"selector" : "button:has-text('엑셀 다운로드')" ,
"message" : "엑셀 다운로드 버튼이 표시되어야 함"
}
] ,
"mandatoryVerifications" : {
"description" : "E2E_TEST_CONFIG.md 기준 필수 검증 항목" ,
"items" : [
{
"id" : 1 ,
"name" : "파일 다운로드" ,
"trigger" : "엑셀 다운로드 버튼" ,
"verification" : "Network API + 실제 다운로드 확인" ,
"failCondition" : "Console LOG만으로 PASS 금지"
} ,
{
"id" : 3 ,
"name" : "검색/필터" ,
"trigger" : "품목유형 탭 필터" ,
"verification" : "데이터 변화 확인" ,
"failCondition" : "필터 적용 후 데이터 무변화"
}
]
} ,
"notes" : {
"testScope" : "재고현황 조회 및 필터링, 엑셀 다운로드 테스트" ,
"pageType" : "조회 전용 (입고관리에서 재고 증가, 출하관리에서 재고 감소)" ,
2026-02-09 15:05:03 +09:00
"statsCards" : [
"전체 품목" ,
"정상 재고" ,
"재고 부족" ,
"재고 없음"
] ,
"typeTabs" : [
"전체" ,
"원자재" ,
"부자재" ,
"소모품"
] ,
"tableColumns" : [
"번호" ,
"품목코드" ,
"품목명" ,
"품목유형" ,
"단위" ,
"재고량" ,
"안전재고" ,
"LOT" ,
"상태" ,
"위치"
] ,
2026-01-30 10:50:38 +09:00
"prerequisites" : "로그인된 사용자"
}
2026-02-28 17:21:01 +09:00
}