#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Playwright로 프론트엔드 확인
"""

from playwright.sync_api import sync_playwright
import time
import json

def test_purchase_receipts():
    with sync_playwright() as p:
        # 브라우저 시작
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()

        # 페이지 이동
        print("1. 페이지 로드 중...")
        page.goto("http://localhost:5001")
        page.wait_for_load_state("networkidle")

        # 입고 관리 탭 클릭
        print("2. 입고 관리 탭으로 이동...")
        try:
            page.click('a[href="#purchase"]', timeout=5000)
        except:
            # 다른 방법으로 시도
            page.evaluate("document.querySelector('a[href=\"#purchase\"]').click()")
        time.sleep(1)

        # API 호출 직접 확인
        print("3. API 직접 호출 확인...")
        api_response = page.evaluate("""
            async () => {
                const response = await fetch('/api/purchase-receipts');
                const data = await response.json();
                return data;
            }
        """)

        print("\n=== API 응답 데이터 ===")
        print(json.dumps(api_response, indent=2, ensure_ascii=False))

        # 테이블 내용 확인
        print("\n4. 테이블 렌더링 확인...")
        table_rows = page.query_selector_all('#purchaseReceiptsList tr')

        if len(table_rows) == 0:
            print("  테이블에 행이 없습니다.")
            # "입고장이 없습니다." 메시지 확인
            empty_message = page.query_selector('#purchaseReceiptsList td')
            if empty_message:
                print(f"  메시지: {empty_message.text_content()}")
        else:
            print(f"  테이블 행 수: {len(table_rows)}")

            # 첫 번째 행 상세 확인
            if len(table_rows) > 0:
                first_row = table_rows[0]
                cells = first_row.query_selector_all('td')

                print("\n  첫 번째 행 내용:")
                headers = ['입고일', '공급업체', '품목 수', '총 금액', '총 수량', '파일명', '작업']
                for i, cell in enumerate(cells[:-1]):  # 마지막 '작업' 열 제외
                    print(f"    {headers[i]}: {cell.text_content()}")

        # JavaScript 콘솔 에러 확인
        page.on("console", lambda msg: print(f"콘솔: {msg.text}") if msg.type == "error" else None)

        # 스크린샷 저장
        print("\n5. 스크린샷 저장...")
        page.screenshot(path="/root/kdrug/purchase_screenshot.png")
        print("  /root/kdrug/purchase_screenshot.png 저장 완료")

        browser.close()

if __name__ == "__main__":
    test_purchase_receipts()