You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import { expect, test } from "@playwright/test";
test.describe("MS L2 UI fixture", () => {
test.beforeEach(async ({ page }) => {
await page.goto("/e2e-fixtures/ms-l2-ui");
});
test("补填态:空必填项红边高亮", async ({ page }) => {
const details = page.getByTestId("ms-l2-details");
await expect(details.getByTestId("ms-details-pickup-company")).toHaveAttribute(
"data-invalid",
"true",
);
await expect(details.getByTestId("ms-details-pickup-email")).toHaveAttribute(
"data-invalid",
"true",
);
await expect(details.getByTestId("ms-details-pickup-company")).toHaveClass(
/border-error/,
);
await details.getByTestId("ms-details-pickup-company").fill("Acme Pickup LLC");
await expect(
details.getByTestId("ms-details-pickup-company"),
).not.toHaveAttribute("data-invalid", "true");
});
test("附加服务卡片可勾选,详情开关可关", async ({ page }) => {
const details = page.getByTestId("ms-l2-details");
await expect(
details.getByText("选择提货/送货服务,避免追收附加费").first(),
).toBeVisible();
const liftgate = details.getByRole("button", { name: /尾板/ }).first();
await liftgate.click();
await expect(liftgate).toHaveClass(/border-primary/);
await details.getByRole("switch").first().click();
await expect(details.getByText("需液压尾板装货").first()).toHaveCount(0);
});
test("侧栏承运商/保障/结账可点", async ({ page }) => {
const sidebar = page.getByTestId("ms-l2-sidebar");
await expect(
sidebar.getByText("选择承运商", { exact: true }),
).toBeVisible();
await sidebar
.getByRole("button", { name: /TForce Freight Direct/ })
.first()
.click();
await expect(sidebar.getByText("已选").first()).toBeVisible();
await sidebar.getByText("Dedicated Dry Van").first().click();
await expect(sidebar.getByText(/运费|附加费|暂无更多费用明细/)).toBeVisible();
await expect(sidebar.getByText(/以官网为准/)).toHaveCount(0);
await expect(sidebar.getByText("无法服务此货件的承运商")).toHaveCount(0);
await sidebar.getByText("全额货运保障(FreightProtect)").click();
await expect(sidebar.getByText("最低约 $22.55")).toBeVisible();
await sidebar.getByPlaceholder("输入货物总价值").fill("1500");
await expect(
sidebar.getByRole("button", { name: "了解更多", exact: true }),
).toHaveCount(0);
await expect(sidebar.getByText(/外链暂未配置|官网查看/)).toHaveCount(0);
await sidebar.getByText("承运商基础保障").click();
await expect(
sidebar.getByRole("button", { name: "查看保障详情与除外条款" }),
).toHaveCount(0);
await sidebar.getByRole("button", { name: /前往结账/ }).click();
await expect(page.getByTestId("last-action")).toHaveText(
"lastAction=checkout-ok",
);
});
});