diff --git a/frontend/e2e/admin-smoke.spec.ts b/frontend/e2e/admin-smoke.spec.ts new file mode 100644 index 0000000..d125197 --- /dev/null +++ b/frontend/e2e/admin-smoke.spec.ts @@ -0,0 +1,24 @@ +import { expect, test } from "@playwright/test"; +import { creds } from "./helpers/api"; + +test("admin:建库 → 触发扫描(冒烟)", async ({ page }) => { + const { user, pass } = creds(); + const libName = `e2e-admin-${Date.now()}`; + + await page.goto("/login"); + await page.fill("#login-user", user); + await page.fill("#login-pass", pass); + await page.getByRole("button", { name: "登录", exact: true }).click(); + await expect(page).toHaveURL(/\/$/); + + await page.goto("/admin/libraries"); + await page.getByPlaceholder(/库名/).fill(libName); + await page.getByRole("button", { name: "建库" }).click(); + await expect(page.getByText(`库「${libName}」已创建`)).toBeVisible(); + // name cell 加 exact:路径 cell(服务端目录 /data/books/<库名>)的名称也含库名,子串匹配会 strict 双命中。 + await expect(page.getByRole("cell", { name: libName, exact: true })).toBeVisible(); + + const row = page.getByRole("row", { name: new RegExp(libName) }); + await row.getByRole("button", { name: /扫描/ }).click(); + await expect(page.getByText("扫描已触发")).toBeVisible(); +});