cents/tests/e2e/04-流水/01-流水编辑删除.spec.ts

38 lines
1.6 KiB
TypeScript

import { test, expect } from "@playwright/test";
import { makeEntry, mockApi, } from "../测试夹具";
test.describe("流水:查看、编辑和删除", () => {
test("01-流水列表显示账目并可进入详情", async ({ page }) => {
await mockApi(page, { initialEntries: [makeEntry()] });
await (page);
await expect(page.getByText("午餐")).toBeVisible();
await page.getByText("午餐").click();
await expect(page).toHaveURL(/\/entries\/entry-lunch$/);
await expect(page.getByText("条目明细")).toBeVisible();
});
test("02-修改备注后保存,刷新后仍保留", async ({ page }) => {
await mockApi(page, { initialEntries: [makeEntry()] });
await (page);
await page.getByText("午餐").click();
await page.getByLabel("备注").fill("修改后的午餐");
await page.getByRole("button", { name: "保存修改" }).click();
await expect(page.getByRole("status")).toContainText("修改已保存");
await page.reload();
await expect(page.getByLabel("备注")).toHaveValue("修改后的午餐");
});
test("03-删除时要求确认从所有关联账本删除", async ({ page }) => {
await mockApi(page, { initialEntries: [makeEntry()] });
await (page);
await page.getByText("午餐").click();
page.once("dialog", (dialog) => {
expect(dialog.message()).toContain("关联的全部账本");
void dialog.accept();
});
await page.getByRole("button", { name: "从所有关联账本删除" }).click();
await expect(page).toHaveURL(/\/$/);
await expect(page.getByText("午餐")).not.toBeVisible();
});
});