- 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>
69 lines
2.9 KiB
JavaScript
69 lines
2.9 KiB
JavaScript
const { chromium } = require('@playwright/test');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
const BASE_URL = 'http://localhost:8045';
|
|
const DIR = '/mnt/c/project/jongryangje/screenshots';
|
|
|
|
async function run() {
|
|
if (!fs.existsSync(DIR)) fs.mkdirSync(DIR, { recursive: true });
|
|
const browser = await chromium.launch();
|
|
const page = await (await browser.newContext({ viewport: { width: 1440, height: 900 }, locale: 'ko-KR' })).newPage();
|
|
|
|
// Super Admin 로그인 + 지자체 선택
|
|
await page.goto(`${BASE_URL}/login`);
|
|
await page.fill('input[name="login_id"]', 'tester_admin');
|
|
await page.fill('input[name="password"]', 'test1234!');
|
|
await page.click('button[type="submit"]');
|
|
await page.waitForURL(url => !url.pathname.includes('/login'), { timeout: 30000 });
|
|
await page.locator('input[name="lg_idx"]').first().check();
|
|
await page.click('button[type="submit"]');
|
|
await page.waitForURL(url => !url.pathname.includes('select-local-government'), { timeout: 30000 });
|
|
|
|
const pages = [
|
|
// Phase 2
|
|
['30_bag_price_create', '/admin/bag-prices/create'],
|
|
['31_packaging_unit', '/admin/packaging-units'],
|
|
['32_sales_agency', '/admin/sales-agencies'],
|
|
['33_sales_agency_create', '/admin/sales-agencies/create'],
|
|
['34_manager', '/admin/managers'],
|
|
['35_manager_create', '/admin/managers/create'],
|
|
['36_company', '/admin/companies'],
|
|
['37_company_create', '/admin/companies/create'],
|
|
['38_free_recipient', '/admin/free-recipients'],
|
|
['39_free_recipient_create', '/admin/free-recipients/create'],
|
|
['40_lg_edit', '/admin/local-governments/edit/1'],
|
|
['41_password_change', '/admin/password-change'],
|
|
// Phase 3
|
|
['42_bag_orders', '/admin/bag-orders'],
|
|
['43_bag_order_create', '/admin/bag-orders/create'],
|
|
['44_bag_receivings', '/admin/bag-receivings'],
|
|
['45_bag_receiving_create', '/admin/bag-receivings/create'],
|
|
['46_bag_inventory', '/admin/bag-inventory'],
|
|
// Phase 4
|
|
['47_shop_orders', '/admin/shop-orders'],
|
|
['48_shop_order_create', '/admin/shop-orders/create'],
|
|
['49_bag_sales', '/admin/bag-sales'],
|
|
['50_bag_sale_create', '/admin/bag-sales/create'],
|
|
['51_bag_issues', '/admin/bag-issues'],
|
|
['52_bag_issue_create', '/admin/bag-issues/create'],
|
|
// Phase 5
|
|
['53_report_sales_ledger', '/admin/reports/sales-ledger'],
|
|
['54_report_daily_summary', '/admin/reports/daily-summary'],
|
|
['55_report_period_sales', '/admin/reports/period-sales'],
|
|
['56_report_supply_demand', '/admin/reports/supply-demand'],
|
|
];
|
|
|
|
for (const [name, url] of pages) {
|
|
await page.goto(`${BASE_URL}${url}`);
|
|
await page.waitForTimeout(800);
|
|
await page.screenshot({ path: path.join(DIR, `${name}.png`), fullPage: true });
|
|
console.log(` ✓ ${name}`);
|
|
}
|
|
|
|
await browser.close();
|
|
console.log(`\n${pages.length}개 스크린샷 완료`);
|
|
}
|
|
|
|
run().catch(err => { console.error('실패:', err.message); process.exit(1); });
|