fix: refine mobile workbench sheets
This commit is contained in:
@@ -3,14 +3,40 @@ import { expect, test } from "playwright/test";
|
||||
test.describe("mobile workbench sheet", () => {
|
||||
test.use({ viewport: { width: 390, height: 844 } });
|
||||
|
||||
test("supports all snap heights, keyboard control, and Escape close", async ({ page }) => {
|
||||
test("keeps the bottom launcher controls at one height", async ({ page }) => {
|
||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||
|
||||
const agentButton = page.getByRole("button", { name: "打开 Agent 面板" });
|
||||
const mapToolbar = page.locator('nav[aria-label="地图工具"]:visible');
|
||||
const conditionButton = page.getByRole("button", { name: "打开工况任务" });
|
||||
const boxes = await Promise.all([
|
||||
agentButton.boundingBox(),
|
||||
mapToolbar.boundingBox(),
|
||||
conditionButton.boundingBox()
|
||||
]);
|
||||
|
||||
boxes.forEach((box) => expect(box).not.toBeNull());
|
||||
expect(boxes.map((box) => Math.round(box!.height))).toEqual([44, 44, 44]);
|
||||
expect(boxes.map((box) => Math.round(box!.y))).toEqual([
|
||||
Math.round(boxes[0]!.y),
|
||||
Math.round(boxes[0]!.y),
|
||||
Math.round(boxes[0]!.y)
|
||||
]);
|
||||
});
|
||||
|
||||
test("supports half and full heights, keyboard control, and Escape close", async ({ page }) => {
|
||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||
await page.getByRole("button", { name: "打开 Agent 面板" }).click();
|
||||
|
||||
const sheet = page.getByRole("region", { name: "Agent 工作台抽屉" });
|
||||
const handle = page.getByRole("button", { name: /Agent 工作台抽屉高度/ });
|
||||
const closeButton = page.getByRole("button", { name: "关闭 Agent 面板" });
|
||||
|
||||
await expect(sheet).toBeVisible();
|
||||
await expect(closeButton).toHaveCount(1);
|
||||
await expect.poll(async () => Math.round((await closeButton.boundingBox())?.height ?? 0)).toBe(
|
||||
40
|
||||
);
|
||||
await expect(sheet).toHaveAttribute("data-snap", "half");
|
||||
await expect.poll(async () => Math.round((await sheet.boundingBox())?.height ?? 0)).toBe(439);
|
||||
await expect
|
||||
@@ -42,10 +68,12 @@ test.describe("mobile workbench sheet", () => {
|
||||
|
||||
await handle.focus();
|
||||
await page.keyboard.press("Home");
|
||||
await expect(sheet).toHaveAttribute("data-snap", "peek");
|
||||
await expect.poll(async () => Math.round((await sheet.boundingBox())?.height ?? 0)).toBe(96);
|
||||
await expect(sheet).toHaveAttribute("data-snap", "half");
|
||||
await expect.poll(async () => Math.round((await sheet.boundingBox())?.height ?? 0)).toBe(439);
|
||||
|
||||
await page.keyboard.press("ArrowUp");
|
||||
await expect(sheet).toHaveAttribute("data-snap", "full");
|
||||
await page.keyboard.press("ArrowDown");
|
||||
await expect(sheet).toHaveAttribute("data-snap", "half");
|
||||
await page.keyboard.press("End");
|
||||
await expect(sheet).toHaveAttribute("data-snap", "full");
|
||||
@@ -62,11 +90,19 @@ test.describe("mobile workbench sheet", () => {
|
||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||
|
||||
await page.getByRole("button", { name: "打开 Agent 面板" }).click();
|
||||
await expect(page.getByRole("region", { name: "Agent 工作台抽屉" })).toBeVisible();
|
||||
const agentSheet = page.getByRole("region", { name: "Agent 工作台抽屉" });
|
||||
await expect(agentSheet).toBeVisible();
|
||||
await expect.poll(async () => Math.round((await agentSheet.boundingBox())?.height ?? 0)).toBe(
|
||||
439
|
||||
);
|
||||
await page.keyboard.press("Escape");
|
||||
|
||||
await page.getByRole("button", { name: "打开工况任务" }).click();
|
||||
await expect(page.getByRole("region", { name: "工况任务抽屉" })).toBeVisible();
|
||||
const conditionSheet = page.getByRole("region", { name: "工况任务抽屉" });
|
||||
await expect(conditionSheet).toBeVisible();
|
||||
await expect.poll(async () =>
|
||||
Math.round((await conditionSheet.boundingBox())?.height ?? 0)
|
||||
).toBe(439);
|
||||
await expect(
|
||||
page.locator('aside[aria-label="Agent 命令面板"]').filter({ visible: true })
|
||||
).toHaveCount(0);
|
||||
@@ -78,8 +114,8 @@ test.describe("mobile workbench sheet", () => {
|
||||
|
||||
const sheet = page.getByRole("region", { name: "工况任务抽屉" });
|
||||
await expect(sheet).toBeVisible();
|
||||
await page.getByRole("button", { name: "关闭工况任务抽屉" }).click();
|
||||
await expect(sheet).toBeHidden();
|
||||
await page.getByRole("button", { name: "关闭工况任务" }).click();
|
||||
expect(await sheet.count()).toBe(0);
|
||||
await expect(page.getByRole("button", { name: "打开工况任务" })).toBeVisible();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user