feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
{
|
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
|
|
|
"enabled": true,
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
"id": "production-dashboard",
|
|
|
|
|
"name": "생산 현황판 테스트",
|
|
|
|
|
"screenshotPolicy": {
|
|
|
|
|
"onErrorOnly": true,
|
|
|
|
|
"captureOn": ["error", "fail", "timeout", "404", "500", "blocked"]
|
|
|
|
|
},
|
2026-02-03 13:49:08 +09:00
|
|
|
"description": "생산관리 > 생산 현황판 메뉴의 생산 현황 모니터링/필터/차트 기능 테스트",
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
"baseUrl": "https://dev.codebridge-x.com",
|
|
|
|
|
"menuNavigation": {
|
|
|
|
|
"level1": "생산관리",
|
|
|
|
|
"level2": "생산 현황판",
|
2026-02-03 13:49:08 +09:00
|
|
|
"expectedUrl": "/production/dashboard",
|
|
|
|
|
"searchWithinParent": true,
|
|
|
|
|
"closeOtherMenus": true
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
},
|
|
|
|
|
"auth": {
|
|
|
|
|
"username": "TestUser5",
|
|
|
|
|
"password": "password123!"
|
|
|
|
|
},
|
2026-02-06 14:14:09 +09:00
|
|
|
"selectors": {
|
|
|
|
|
"statCard": ".card, [class*='stat'], [class*='kpi'], [class*='metric'], [class*='summary']",
|
|
|
|
|
"chart": "canvas, svg, [class*='chart'], [class*='Chart'], [class*='graph']",
|
|
|
|
|
"filterArea": "[class*='filter'], [class*='Filter'], select, [class*='date-picker']",
|
|
|
|
|
"refreshButton": "button:has-text('새로고침'), button:has-text('갱신'), button[class*='refresh'], [class*='reload']",
|
|
|
|
|
"fullscreenButton": "button:has-text('전체'), button[class*='fullscreen'], button[class*='expand']"
|
|
|
|
|
},
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
"steps": [
|
|
|
|
|
{
|
|
|
|
|
"id": 1,
|
|
|
|
|
"name": "메뉴 진입: 생산관리 > 생산 현황판",
|
|
|
|
|
"action": "menu_navigate",
|
|
|
|
|
"level1": "생산관리",
|
|
|
|
|
"level2": "생산 현황판",
|
|
|
|
|
"expected": {
|
|
|
|
|
"url_contains": "/production",
|
|
|
|
|
"visible": ["현황판", "생산"]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 2,
|
|
|
|
|
"name": "필수 검증 #5: 목업 페이지 감지",
|
|
|
|
|
"action": "verify_not_mockup",
|
|
|
|
|
"checks": [
|
2026-02-03 13:49:08 +09:00
|
|
|
"생산 현황 데이터 표시",
|
|
|
|
|
"통계 카드 또는 차트 존재",
|
|
|
|
|
"기간 필터 존재"
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
],
|
|
|
|
|
"expected": "정상 페이지 (목업 아님)"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 3,
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "통계 카드 영역 존재 확인",
|
|
|
|
|
"action": "verify_element",
|
|
|
|
|
"target": "statCard"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 4,
|
2026-02-06 06:49:29 +09:00
|
|
|
"phase": "READ",
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "[READ] 생산 통계 숫자 데이터 확인",
|
|
|
|
|
"action": "evaluate",
|
|
|
|
|
"script": "(() => { const cards = document.querySelectorAll('.card, [class*=\"stat\"], [class*=\"metric\"]'); let hasNum = false; cards.forEach(c => { if (/\\d+/.test(c.innerText)) hasNum = true; }); return hasNum || document.body.innerText.includes('생산'); })()"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 5,
|
|
|
|
|
"phase": "READ",
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "[READ] 차트 영역 존재 확인",
|
|
|
|
|
"action": "verify_element",
|
|
|
|
|
"target": "chart"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 6,
|
2026-02-06 06:49:29 +09:00
|
|
|
"phase": "FILTER",
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "[FILTER] 필터/기간 선택 UI 존재 확인",
|
|
|
|
|
"action": "verify_element",
|
|
|
|
|
"target": "filterArea"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 7,
|
|
|
|
|
"phase": "FILTER",
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "[FILTER] 필터 클릭 테스트",
|
|
|
|
|
"action": "click_if_exists",
|
|
|
|
|
"target": "select, [class*='filter'] button, [class*='date-picker'], button:has-text('기간')"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 8,
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "실시간/갱신 정보 확인",
|
|
|
|
|
"action": "evaluate",
|
|
|
|
|
"script": "(() => { const text = document.body.innerText; return text.includes('실시간') || text.includes('갱신') || text.includes('업데이트') || /\\d{2}:\\d{2}/.test(text); })()"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 9,
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "불량률/품질 정보 확인",
|
|
|
|
|
"action": "evaluate",
|
|
|
|
|
"script": "(() => { const text = document.body.innerText; return text.includes('불량') || text.includes('품질') || text.includes('%') || text.includes('달성'); })()"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 10,
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "생산 목표/실적 데이터 확인",
|
|
|
|
|
"action": "evaluate",
|
|
|
|
|
"script": "(() => { const text = document.body.innerText; return text.includes('목표') || text.includes('실적') || text.includes('생산량') || /\\d+[개대건]/.test(text); })()"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 11,
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "새로고침 버튼 존재 확인",
|
|
|
|
|
"action": "verify_element",
|
|
|
|
|
"target": "refreshButton"
|
2026-02-03 13:49:08 +09:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": 12,
|
2026-02-06 14:14:09 +09:00
|
|
|
"name": "전체화면/확대 버튼 확인",
|
|
|
|
|
"action": "verify_element",
|
|
|
|
|
"target": "fullscreenButton"
|
2026-02-03 13:49:08 +09:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"expectedAPIs": [
|
|
|
|
|
{
|
|
|
|
|
"method": "GET",
|
|
|
|
|
"endpoint": "/api/v1/production/dashboard",
|
|
|
|
|
"description": "생산 현황판 데이터 조회"
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"requiredVerifications": [
|
|
|
|
|
{
|
|
|
|
|
"id": 5,
|
|
|
|
|
"name": "목업 페이지 감지",
|
|
|
|
|
"steps": [2],
|
2026-02-03 13:49:08 +09:00
|
|
|
"criteria": "생산 현황 데이터, 통계 카드/차트, 기간 필터 존재"
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
}
|
2026-02-03 13:49:08 +09:00
|
|
|
],
|
|
|
|
|
"rollbackPlan": {
|
|
|
|
|
"note": "조회 전용 페이지로 데이터 변경 없음"
|
|
|
|
|
}
|
feat: 누락 시나리오 22개 추가
- 게시판(2): board-management, board-test
- 고객센터(3): customer-inquiry, customer-faq, customer-event
- 판매관리(1): sales-site
- 구매관리(1): purchase-pricing
- 생산관리(3): production-dashboard, production-work-order, production-worker
- 출고관리(1): shipment-dispatch
- 회계관리(11): accounting-sales, accounting-purchase, accounting-cost,
accounting-financial, accounting-bill, accounting-bank-transaction,
accounting-card-history, accounting-receivable, accounting-expense-forecast,
accounting-bad-debt, accounting-daily-report
2026-02-03 09:08:18 +09:00
|
|
|
}
|