0.3.3 外网下载修复
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
// 说明:用于本地快速验证 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);
|
||||
});
|
||||
Reference in New Issue
Block a user