// 说明:用于本地快速验证 Wolai ZIP 导入流程(Playwright)。 // 注意:仅用于开发/测试;请勿在生产环境使用。 const { chromium } = require("@playwright/test"); const BASE_URL = process.env.MNOTE_TEST_BASE_URL || "http://127.0.0.1:3000"; const ZIP_PATH = process.env.MNOTE_TEST_ZIP_PATH || "C:\\\\Users\\\\liaib\\\\Downloads\\\\软件开发.zip"; const ROOT_MD_PATH = process.env.MNOTE_TEST_ROOT_MD_PATH || "ChB6p4/软件开发.md"; async function main() { const browser = await chromium.launch({ headless: true }); const context = await browser.newContext(); const page = await context.newPage(); page.setDefaultTimeout(60_000); // 1) 打开 /auth(若已登录会跳转到 /) await page.goto(`${BASE_URL}/auth`, { waitUntil: "networkidle" }); // 2) 如果还没登录,点“测试账号快速登录” const url1 = page.url(); if (url1.includes("/auth")) { const quickLogin = page.getByRole("button", { name: "测试账号快速登录" }); if (await quickLogin.isVisible().catch(() => false)) { await quickLogin.click(); } else { // 兜底:尝试手动点击“登录”按钮(如果用户已填写) const submit = page.getByRole("button", { name: "登录" }); if (await submit.isVisible().catch(() => false)) await submit.click(); } } // 3) 等跳转到首页(或至少不在 /auth) await page.waitForURL((u) => !u.toString().includes("/auth"), { timeout: 120_000 }); // 4) 打开导入页 await page.goto(`${BASE_URL}/wolai-import`, { waitUntil: "networkidle" }); // 5) 填本地路径(大文件不要上传) const zipInput = page.locator('input[placeholder*="个人.zip"]').first(); await zipInput.fill(ZIP_PATH); const rootInput = page.locator('input[placeholder*="dQeAax/个人.md"]').first(); await rootInput.fill(ROOT_MD_PATH); // 6) 开始导入 const respPromise = page.waitForResponse( (r) => r.url().includes("/api/wolai-import") && r.request().method() === "POST", { timeout: 20 * 60_000 }, ); await page.getByRole("button", { name: "开始导入" }).click(); const resp = await respPromise; const status = resp.status(); const text = await resp.text().catch(() => ""); console.log("导入接口返回:", status); if (text) { console.log("响应体:", text.slice(0, 4000)); } if (status >= 200 && status < 300) { let json = null; try { json = JSON.parse(text); } catch { // ignore } const rootDocumentId = json && typeof json.rootDocumentId === "string" ? json.rootDocumentId : ""; if (rootDocumentId) { await page.goto(`${BASE_URL}/documents/${encodeURIComponent(rootDocumentId)}`, { waitUntil: "networkidle" }); console.log("导入成功,已打开:", page.url()); } } await browser.close(); } main().catch((err) => { console.error("导入测试失败:", err); process.exit(1); });