v2.5.1: 邮件详情抽屉去掉 邮箱/Message-ID;添加账号窗口去切换控件,OAuth 按钮 + API Token 表单平铺同窗

This commit is contained in:
bigcode
2026-10-01 01:11:06 +08:00
parent 8b255ef2e0
commit 830ca85ebd
4 changed files with 36 additions and 64 deletions
+17 -18
View File
@@ -84,6 +84,12 @@ await page.locator(".ant-table-row").first().click();
await page.waitForSelector(".ant-drawer-open", { timeout: 8000 });
const drawerText = (await page.locator(".ant-drawer-title").textContent()) ?? "";
check("邮件详情抽屉打开(标题=邮件主题)", drawerText.trim().length > 0, drawerText.trim());
check(
"详情抽屉不再展示「邮箱」/「Message-ID」",
(await page.locator(".ant-drawer .ant-descriptions-item-label:has-text('邮箱')").count()) === 0 &&
(await page.locator(".ant-drawer .ant-descriptions-item-label:has-text('Message-ID')").count()) === 0,
);
await page.waitForTimeout(500); // 等抽屉滑入动画结束再截图
await page.screenshot({ path: `${SHOT_DIR}/08-email-detail.png` });
await page.keyboard.press("Escape");
@@ -144,7 +150,7 @@ for (const path of ["/accounts", "/domains", "/mailboxes", "/inboxs"]) {
if (path === "/mailboxes") await page.screenshot({ path: `${SHOT_DIR}/11-batch-selected.png` });
}
// 6b. 添加账号模态窗口:OAuth / API Token 同窗(Radio 切换),只留必要字段
// 6b. 添加账号模态窗口:OAuth 按钮 + API Token 表单同窗平铺,无需切换控件
await page.goto(`${BASE}/accounts`, { waitUntil: "domcontentloaded" });
await page.waitForSelector(".ant-table", { timeout: 8000 });
check(
@@ -153,32 +159,25 @@ check(
);
await page.click("button:has-text('添加账号')");
await page.waitForSelector(".ant-modal:has-text('添加 Cloudflare 账号')", { timeout: 8000 });
const modeLabels = await page.locator(".ant-modal .ant-radio-button-wrapper").allInnerTexts();
check(
"添加账号模态窗口含 OAuth / API Token 两种授权方式(同窗按钮组)",
modeLabels.some((t) => t.includes("OAuth")) && modeLabels.some((t) => t.includes("API Token")),
modeLabels.join(" | "),
"两种授权方式同窗平铺(两个按钮 + 两个字段同时可见),无切换控件",
(await page.locator(".ant-modal button:has-text('Cloudflare OAuth 授权')").count()) === 1 &&
(await page.locator(".ant-modal button:has-text('API Token 授权')").count()) === 1 &&
(await page.locator(".ant-modal .ant-radio-button-wrapper").count()) === 0 &&
(await page.locator(".ant-modal .ant-tabs-tab").count()) === 0 &&
(await page.locator(".ant-modal:visible").count()) === 1,
);
check(
"窗口内不再有说明文字(Alert)与账户 ID 字段",
(await page.locator(".ant-modal .ant-alert").count()) === 0 &&
(await page.locator(".ant-modal :text('账户 ID')").count()) === 0,
);
// OAuth 模式:只有「前往 Cloudflare 授权」按钮
check(
"OAuth 模式默认展示「前往 Cloudflare 授权」按钮",
(await page.locator(".ant-modal button:has-text('前往 Cloudflare 授权')").count()) === 1,
"API Token 表单只含 账户名称 / API Token 两个字段(1 个密码框)",
(await page.locator(".ant-modal input[type=password]").count()) === 1,
);
await page.screenshot({ path: `${SHOT_DIR}/12a-add-account-oauth.png` });
// 切到 API Token:账户名称 + API Token 两个字段
await page.click(".ant-modal .ant-radio-button-wrapper:has-text('API Token')");
await page.waitForSelector(".ant-modal :text('账户名称')", { timeout: 8000 });
check(
"API Token 方式只含 账户名称 / API Token 两个字段",
(await page.locator(".ant-modal input[type=password]").count()) === 1 &&
(await page.locator(".ant-modal :text('账户 ID')").count()) === 0,
);
await page.screenshot({ path: `${SHOT_DIR}/12b-add-account-token.png` });
await page.waitForTimeout(500); // 等开窗动画结束再截图
await page.screenshot({ path: `${SHOT_DIR}/12a-add-account.png` });
await page.keyboard.press("Escape");
await page.waitForTimeout(400);