Files
jongryangje/e2e/admin.spec.js
javamon1174 a0103eb95d 사이트 메뉴 /bag/* 10개 페이지 구현 + E2E 테스트 timeout 보강
- Bag 컨트롤러 신규 (기본정보/발주입고/불출/재고/판매/판매현황/수불/통계/창/도움말)
- 사이트 공통 레이아웃 bag/layout/main.php 추출
- /bag/* 라우트 10개 등록 (Routes.php)
- bag-site.spec.js E2E 테스트 11개 추가
- Playwright timeout 30s→60s, waitForURL 15s→30s
- P4 지자체관리자 접근 테스트 3개로 분리

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 14:30:45 +09:00

83 lines
2.9 KiB
JavaScript

// @ts-check
const { test, expect } = require('@playwright/test');
const { login } = require('./helpers/auth');
test.describe('관리자 패널 — 지자체관리자', () => {
test.beforeEach(async ({ page }) => {
await login(page, 'local');
});
test('관리자 대시보드 접근', async ({ page }) => {
await page.goto('/admin');
await expect(page).toHaveURL(/\/admin/);
});
test('회원 관리 목록 접근', async ({ page }) => {
await page.goto('/admin/users');
await expect(page).toHaveURL(/\/admin\/users/);
await expect(page.locator('td:has-text("tester_")').first()).toBeVisible({ timeout: 10000 });
});
test('로그인 이력 접근', async ({ page }) => {
await page.goto('/admin/access/login-history');
await expect(page).toHaveURL(/\/admin\/access\/login-history/);
});
test('승인 대기 목록 접근', async ({ page }) => {
await page.goto('/admin/access/approvals');
await expect(page).toHaveURL(/\/admin\/access\/approvals/);
});
test('역할 목록 접근', async ({ page }) => {
await page.goto('/admin/roles');
await expect(page).toHaveURL(/\/admin\/roles/);
});
test('메뉴 관리 접근', async ({ page }) => {
await page.goto('/admin/menus');
await expect(page).toHaveURL(/\/admin\/menus/);
});
test('지정판매소 목록 접근', async ({ page }) => {
await page.goto('/admin/designated-shops');
await expect(page).toHaveURL(/\/admin\/designated-shops/);
});
test('지자체 관리는 Super Admin 전용 — 지자체관리자 접근 시 리다이렉트', async ({ page }) => {
await page.goto('/admin/local-governments');
// Level 3는 Super Admin이 아니므로 /admin으로 리다이렉트됨
await expect(page).toHaveURL(/\/admin$/);
});
});
test.describe('관리자 패널 — Super Admin', () => {
test('지자체 선택 후 관리자 접근', async ({ page }) => {
await login(page, 'admin');
await expect(page).toHaveURL(/\/admin\/select-local-government/);
// radio 버튼으로 첫 번째 지자체 선택
const radio = page.locator('input[name="lg_idx"]').first();
await radio.check();
await page.click('button[type="submit"]');
// 선택 후 관리자 대시보드로 이동
await page.waitForURL(url => !url.pathname.includes('select-local-government'), { timeout: 30000 });
await page.goto('/admin');
await expect(page).not.toHaveURL(/\/select-local-government/);
});
test('Super Admin은 지자체 관리 접근 가능', async ({ page }) => {
// 먼저 로그인 + 지자체 선택
await login(page, 'admin');
const radio = page.locator('input[name="lg_idx"]').first();
await radio.check();
await page.click('button[type="submit"]');
await page.waitForURL(url => !url.pathname.includes('select-local-government'), { timeout: 30000 });
await page.goto('/admin/local-governments');
await expect(page).toHaveURL(/\/admin\/local-governments/);
});
});