- /bag/code-kinds, /bag/code-details/{ck_idx} 조회 (LoginAuthFilter, Roles::canManageCodeMaster)
- admin에서는 종류·세부 목록 제거, 등록·수정·삭제만 유지 후 bag으로 리다이렉트
- 사이트 메뉴·기본코드 링크 SQL, CSV 동기화 스크립트·README 보강
- 관리자 대시보드: 발주·판매 테이블 미존재 시 통계 비활성화
- 회원 로그인 잠금(mb_login_fail_count, mb_locked_until) 및 관리자 잠금 해제
Made-with: Cursor
88 lines
3.1 KiB
JavaScript
88 lines
3.1 KiB
JavaScript
// @ts-check
|
|
const { test, expect } = require('@playwright/test');
|
|
const { login } = require('./helpers/auth');
|
|
|
|
test.describe('사이트 메뉴 (/bag/*) 페이지 접근', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await login(page, 'local');
|
|
});
|
|
|
|
test('기본정보관리', async ({ page }) => {
|
|
await page.goto('/bag/basic-info');
|
|
await expect(page).toHaveURL(/\/bag\/basic-info/);
|
|
await expect(page.locator('text=봉투 단가')).toBeVisible();
|
|
await expect(page.locator('a[href*="bag/code-kinds"]')).toBeVisible();
|
|
});
|
|
|
|
test('기본코드관리 (/bag/code-kinds)', async ({ page }) => {
|
|
await page.goto('/bag/code-kinds');
|
|
await expect(page).toHaveURL(/\/bag\/code-kinds/);
|
|
await expect(page.locator('h3:has-text("기본코드 종류")')).toBeVisible();
|
|
});
|
|
|
|
test('발주 입고 관리', async ({ page }) => {
|
|
await page.goto('/bag/purchase-inbound');
|
|
await expect(page).toHaveURL(/\/bag\/purchase-inbound/);
|
|
await expect(page.locator('text=발주 현황')).toBeVisible();
|
|
});
|
|
|
|
test('불출 관리', async ({ page }) => {
|
|
await page.goto('/bag/issue');
|
|
await expect(page).toHaveURL(/\/bag\/issue/);
|
|
await expect(page.locator('th:has-text("불출일")')).toBeVisible();
|
|
});
|
|
|
|
test('재고 관리', async ({ page }) => {
|
|
await page.goto('/bag/inventory');
|
|
await expect(page).toHaveURL(/\/bag\/inventory/);
|
|
await expect(page.locator('th:has-text("현재재고")')).toBeVisible();
|
|
});
|
|
|
|
test('판매 관리', async ({ page }) => {
|
|
await page.goto('/bag/sales');
|
|
await expect(page).toHaveURL(/\/bag\/sales/);
|
|
await expect(page.locator('text=주문 접수')).toBeVisible();
|
|
});
|
|
|
|
test('판매 현황', async ({ page }) => {
|
|
await page.goto('/bag/sales-stats');
|
|
await expect(page).toHaveURL(/\/bag\/sales-stats/);
|
|
await expect(page.locator('th:has-text("봉투코드")')).toBeVisible();
|
|
});
|
|
|
|
test('봉투 수불 관리', async ({ page }) => {
|
|
await page.goto('/bag/flow');
|
|
await expect(page).toHaveURL(/\/bag\/flow/);
|
|
await expect(page.locator('th:has-text("현재재고")')).toBeVisible();
|
|
});
|
|
|
|
test('통계 분석 관리', async ({ page }) => {
|
|
await page.goto('/bag/analytics');
|
|
await expect(page).toHaveURL(/\/bag\/analytics/);
|
|
await expect(page.locator('main >> text=Phase 6에서 구현 예정')).toBeVisible();
|
|
});
|
|
|
|
test('창', async ({ page }) => {
|
|
await page.goto('/bag/window');
|
|
await expect(page).toHaveURL(/\/bag\/window/);
|
|
await expect(page.locator('text=창 관리')).toBeVisible();
|
|
});
|
|
|
|
test('도움말', async ({ page }) => {
|
|
await page.goto('/bag/help');
|
|
await expect(page).toHaveURL(/\/bag\/help/);
|
|
await expect(page.locator('text=시스템 개요')).toBeVisible();
|
|
});
|
|
});
|
|
|
|
test.describe('홈페이지 네비게이션 메뉴 링크', () => {
|
|
test('메뉴 클릭으로 각 페이지 이동', async ({ page }) => {
|
|
await login(page, 'local');
|
|
await page.goto('/');
|
|
|
|
// 발주 입고 관리 메뉴 클릭
|
|
await page.click('a:has-text("발주 입고 관리")');
|
|
await expect(page).toHaveURL(/\/bag\/purchase-inbound/);
|
|
});
|
|
});
|