const { chromium } = require('playwright');
const path = require('path');
const fs = require('fs');

(async () => {
  // 스크린샷 저장 디렉토리 생성
  const screenshotDir = path.join(__dirname, 'screenshots-basis');
  if (!fs.existsSync(screenshotDir)) {
    fs.mkdirSync(screenshotDir, { recursive: true });
  }

  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();

  try {
    // 1. 페이지 로드
    console.log('1. 페이지 로드 중...');
    await page.goto('http://localhost:3000', { waitUntil: 'networkidle', timeout: 30000 });
    await page.waitForTimeout(2000);

    console.log('페이지 로드 완료');

    // 2. admin/admin123으로 로그인
    console.log('2. 로그인 수행 중... (admin/admin123)');
    
    try {
      // 사용자명 입력
      await page.fill('input[type="text"]', 'admin');
      await page.waitForTimeout(500);

      // 비밀번호 입력
      await page.fill('input[type="password"]', 'admin123');
      await page.waitForTimeout(500);

      // 로그인 버튼 클릭
      try {
        const loginButton = page.locator('button:has-text("로그인")').first();
        await loginButton.click();
      } catch {
        // 다른 로그인 버튼 시도
        await page.click('button[type="submit"]');
      }

      // 로그인 완료 대기
      await page.waitForTimeout(3000);
      await page.waitForLoadState('networkidle');

      console.log('로그인 완료');
    } catch (error) {
      console.log('로그인 중 오류:', error.message);
    }

    // 3. 기준정보 메뉴 클릭하여 서브메뉴 확인
    console.log('3. 기준정보 메뉴 클릭 중...');
    
    try {
      // 기준정보 메뉴 찾기 및 클릭
      const basisMenu = page.locator('text=기준정보').first();
      await basisMenu.click();
      await page.waitForTimeout(1000);
      console.log('기준정보 메뉴 클릭 완료');
    } catch (error) {
      console.log('기준정보 메뉴 찾기 실패:', error.message);
    }

    // 4. 각 기준관리 메뉴별 스크린샷 캡처
    const menus = [
      { name: '품목기준관리', selector: 'text=품목기준관리' },
      { name: '공정기준관리', selector: 'text=공정기준관리' },
      { name: '검사기준관리', selector: 'text=검사기준관리' },
      { name: '거래처기준관리', selector: 'text=거래처기준관리' },
      { name: '현장기준관리', selector: 'text=현장기준관리' }
    ];

    for (const menu of menus) {
      try {
        console.log(`\n${menu.name} 메뉴 클릭 중...`);
        
        const menuElement = page.locator(menu.selector).first();
        await menuElement.click();
        await page.waitForTimeout(2000);
        
        // 스크린샷 캡처
        const screenshotPath = path.join(screenshotDir, `${menu.name}.png`);
        await page.screenshot({ path: screenshotPath, fullPage: true });
        console.log(`✓ ${menu.name} 스크린샷 저장: ${screenshotPath}`);
      } catch (error) {
        console.log(`✗ ${menu.name} 처리 중 오류: ${error.message}`);
      }
    }

    console.log('\n작업 완료!');
    console.log(`스크린샷 저장 경로: ${screenshotDir}`);

  } catch (error) {
    console.error('에러 발생:', error);
  } finally {
    await browser.close();
  }
})();
