import { test, expect } from '@playwright/test';

test.describe('Kiểm tra hệ thống Ultra Description (A-Z)', () => {
    const URL = 'http://localhost:5000/static/main.html?page=product-desc%2Fproduct-desc.html';

    test('1. Kiểm tra Overview Stats (Phải nhảy số hàng nghìn)', async ({ page }) => {
        await page.goto(URL);
        await page.waitForLoadState('networkidle');

        // Đợi các con số stats load xong
        const totalCode = page.locator('div:has-text("Tổng Magento Code") + div, .stats-value').first();
        await expect(totalCode).not.toHaveText('0', { timeout: 10000 });
        
        const totalVal = await totalCode.innerText();
        console.log(`✅ Tổng Magento Code thực tế: ${totalVal}`);
        
        const approvedCount = page.locator('text=✅ Đã duyệt').locator('xpath=../following-sibling::div');
        await expect(approvedCount).not.toHaveText('0');
        console.log(`✅ Số lượng đã duyệt thực tế: ${await approvedCount.innerText()}`);
    });

    test('2. Kiểm tra hiển thị Tags trong bảng (Check mã 6TS26A002-SK010)', async ({ page }) => {
        await page.goto(URL);
        
        // Tìm kiếm mã sản phẩm cụ thể
        const searchInput = page.locator('input[placeholder*="Tìm theo tên hoặc mã"]');
        await searchInput.fill('6TS26A002-SK010');
        await page.keyboard.press('Enter');
        await page.waitForResponse(res => res.url().includes('/list') && res.status() === 200);

        // Check xem có dòng sản phẩm hiện ra không
        const firstRow = page.locator('table#fieldsTable tbody tr').first();
        await expect(firstRow).toBeVisible();

        // Check cột Tags (Cột thứ 3)
        const tagsCell = firstRow.locator('td').nth(2);
        
        // Đảm bảo không bị lỗi "map is not a function" (Nếu lỗi này xảy ra, cell sẽ trống hoặc hiện chữ lỗi)
        await expect(tagsCell).not.toHaveText('p.tags.map is not a function');
        
        // Check các tag cụ thể tui đã bơm
        await expect(tagsCell).toContainText('Màu đen');
        await expect(tagsCell).toContainText('Tông trung tính');
        await expect(tagsCell).toContainText('Đi chơi');
        
        console.log('✅ Mã 6TS26A002-SK010 hiển thị Tag chuẩn đét!');
    });

    test('3. Kiểm tra API List trả về mảng Tags hợp lệ', async ({ request }) => {
        const response = await request.get('http://localhost:5000/api/product-desc/list?limit=5');
        expect(response.ok()).toBeTruthy();
        
        const data = await response.json();
        const products = data.products;
        
        expect(products.length).toBeGreaterThan(0);
        
        // Kiểm tra sản phẩm đầu tiên phải có trường tags là một Array
        const p = products[0];
        console.log(`🔍 Kiểm tra cấu trúc dữ liệu cho mã: ${p.magento_ref_code}`);
        expect(Array.isArray(p.tags)).toBeTruthy();
        console.log('✅ Dữ liệu API trả về mảng Tags chuẩn Array.');
    });
});
