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'); });