161 lines
4.9 KiB
TypeScript
161 lines
4.9 KiB
TypeScript
import { expect, test, type Page } from "@playwright/test";
|
|
|
|
import { prepareApp, resultSnapshot } from "./fixtures";
|
|
|
|
const chartWindowSnapshot = {
|
|
...resultSnapshot,
|
|
id: "e2e-pending-chart-windows",
|
|
result: {
|
|
...resultSnapshot.result,
|
|
variables: [
|
|
...resultSnapshot.result.variables,
|
|
{
|
|
key: "generic_sensor_1.pressure",
|
|
componentId: "generic_sensor_1",
|
|
componentType: "generic_sensor",
|
|
scope: "component",
|
|
portName: null,
|
|
name: "pressure",
|
|
label: "压力",
|
|
quantity: "pressure",
|
|
unit: "Pa",
|
|
category: "state",
|
|
order: 2,
|
|
},
|
|
],
|
|
final: {
|
|
...resultSnapshot.result.final,
|
|
"generic_sensor_1.pressure": 120000,
|
|
},
|
|
series: {
|
|
...resultSnapshot.result.series,
|
|
"generic_sensor_1.pressure": [100000, 110000, 120000],
|
|
},
|
|
},
|
|
};
|
|
|
|
async function openResults(page: Page) {
|
|
await page.getByRole("tab", { name: "结果", exact: true }).click();
|
|
await expect(page.locator(".results-chart-workspace")).toBeVisible();
|
|
}
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await prepareApp(page);
|
|
await page.addInitScript((snapshot) => {
|
|
window.sessionStorage.setItem(
|
|
"system-simulation-flow:latest-result",
|
|
JSON.stringify(snapshot),
|
|
);
|
|
}, chartWindowSnapshot);
|
|
});
|
|
|
|
test("组合曲线窗口先创建为空窗,并在删除最后一条曲线后恢复待定", async ({
|
|
page,
|
|
}) => {
|
|
await page.goto("/");
|
|
await openResults(page);
|
|
|
|
await page
|
|
.getByRole("button", { name: "新建同单位多曲线对比窗口", exact: true })
|
|
.click();
|
|
let sameUnitWindow = page.locator(
|
|
'.result-chart-window[data-chart-kind="multi"]',
|
|
);
|
|
await expect(sameUnitWindow).toHaveCount(1);
|
|
await expect(sameUnitWindow).toHaveAttribute("data-pending", "true");
|
|
await expect(sameUnitWindow).toContainText("等待第一条曲线");
|
|
|
|
const valueVariable = page
|
|
.locator(".results-variable-list button")
|
|
.filter({ hasText: "数值" })
|
|
.first();
|
|
await valueVariable.dragTo(sameUnitWindow);
|
|
await expect(sameUnitWindow).toHaveAttribute("data-pending", "false");
|
|
await expect(sameUnitWindow).toContainText("1/1 条显示");
|
|
await expect(sameUnitWindow).toContainText("无量纲");
|
|
|
|
await sameUnitWindow
|
|
.getByRole("button", {
|
|
name: "管理多曲线窗口中的曲线",
|
|
exact: true,
|
|
})
|
|
.click();
|
|
await sameUnitWindow.locator(".result-chart-multi-menu-row .remove").click();
|
|
await expect(sameUnitWindow).toHaveCount(1);
|
|
await expect(sameUnitWindow).toHaveAttribute("data-pending", "true");
|
|
await expect(sameUnitWindow).toContainText("等待第一条曲线");
|
|
|
|
await page.reload();
|
|
await openResults(page);
|
|
sameUnitWindow = page.locator(
|
|
'.result-chart-window[data-chart-kind="multi"]',
|
|
);
|
|
await expect(sameUnitWindow).toHaveCount(1);
|
|
await expect(sameUnitWindow).toHaveAttribute("data-pending", "true");
|
|
|
|
await page
|
|
.getByRole("button", { name: "新建异单位上下对比窗口", exact: true })
|
|
.click();
|
|
const mixedWindow = page.locator(
|
|
'.result-chart-window[data-chart-kind="mixed"]',
|
|
);
|
|
await expect(mixedWindow).toHaveCount(1);
|
|
await expect(mixedWindow).toHaveAttribute("data-pending", "true");
|
|
|
|
const pressureVariable = page
|
|
.locator(".results-variable-list button")
|
|
.filter({ hasText: "压力" })
|
|
.first();
|
|
await pressureVariable.dragTo(mixedWindow);
|
|
await expect(mixedWindow).toHaveAttribute("data-pending", "false");
|
|
await expect(mixedWindow).toContainText("Pa");
|
|
|
|
await mixedWindow
|
|
.getByRole("button", {
|
|
name: "管理多曲线窗口中的曲线",
|
|
exact: true,
|
|
})
|
|
.click();
|
|
await mixedWindow.locator(".result-chart-multi-menu-row .remove").click();
|
|
await expect(mixedWindow).toHaveCount(1);
|
|
await expect(mixedWindow).toHaveAttribute("data-pending", "true");
|
|
});
|
|
|
|
test("a pending window recovered from stale variable keys accepts a new first curve", async ({
|
|
page,
|
|
}) => {
|
|
await page.addInitScript((snapshotId) => {
|
|
window.sessionStorage.setItem(
|
|
`system-simulation-flow:result-layout:${snapshotId}`,
|
|
JSON.stringify([
|
|
{
|
|
id: "chart-1",
|
|
kind: "multi",
|
|
variableKey: "removed.variable",
|
|
variableKeys: ["removed.variable"],
|
|
hiddenVariableKeys: [],
|
|
variableUnits: { "removed.variable": "Pa" },
|
|
x: 40,
|
|
y: 40,
|
|
width: 620,
|
|
height: 330,
|
|
unit: "Pa",
|
|
cursorEnabled: false,
|
|
zIndex: 1,
|
|
},
|
|
]),
|
|
);
|
|
}, chartWindowSnapshot.id);
|
|
|
|
await page.goto("/");
|
|
await openResults(page);
|
|
|
|
const pendingWindow = page.locator(
|
|
'.result-chart-window[data-chart-kind="multi"]',
|
|
);
|
|
await expect(pendingWindow).toHaveAttribute("data-pending", "true");
|
|
|
|
await page.locator(".results-variable-list button").first().dragTo(pendingWindow);
|
|
await expect(pendingWindow).toHaveAttribute("data-pending", "false");
|
|
});
|