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