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

test('loader dynamic importmap generation and custom path redirect', async ({ page }) => {
    page.on('console', msg => console.log('BROWSER LOG:', msg.text()));
    
    // 打开测试页面
    await page.goto('http://127.0.0.1:8084/test/index.html');

    // 1. 验证生成的 importmap 标签结构
    const importMapJson = await page.evaluate(() => {
        const script = document.querySelector('script[type="importmap"]');
        return script ? JSON.parse(script.textContent) : null;
    });

    expect(importMapJson).not.toBeNull();
    expect(importMapJson.imports).toBeDefined();

    // 2. 检查 state (常规 CDN 映射) 是否生成正确
    const stateUrl = importMapJson.imports['@apigo.cc/state'];
    expect(stateUrl).toContain('cdn.jsdelivr.net/npm/@apigo.cc/state');

    // 3. 检查 bootstrap (本地相对路径重定向) 是否保留
    const bootstrapUrl = importMapJson.imports['@apigo.cc/bootstrap'];
    expect(bootstrapUrl).toBe('./mock-bootstrap.js');

    // 4. 检查 base (本地绝对 HTTP 重定向) 是否保留
    const baseUrl = importMapJson.imports['@apigo.cc/base'];
    expect(baseUrl).toBe('http://127.0.0.1:8084/test/mock-base.js');

    // 5. 验证重定向的 mock 模块确实可以被 ESM 成功导入并运行 (通过页面 status 的变化)
    const status = page.locator('#status');
    await expect(status).toHaveText('success');
});
