60 lines
2.4 KiB
TypeScript
60 lines
2.4 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { start, stop, restart, baseUrl } from "./evcc";
|
|
import { expectModalVisible, expectModalHidden } from "./utils";
|
|
|
|
test.use({ baseURL: baseUrl() });
|
|
|
|
const flags = ["--disable-auth", "--template-type", "meter", "--template"];
|
|
const templateFlags = [...flags, "tests/config-deprecated-false.tpl.yaml"];
|
|
const deprecatedFlags = [...flags, "tests/config-deprecated-true.tpl.yaml"];
|
|
|
|
test.beforeAll(async () => {
|
|
await start(undefined, undefined, templateFlags);
|
|
});
|
|
|
|
test.afterAll(async () => {
|
|
await stop();
|
|
});
|
|
|
|
test.describe("deprecated template", async () => {
|
|
test("editable after deprecation", async ({ page }) => {
|
|
await page.goto("/#/config");
|
|
|
|
await page.getByRole("button", { name: "Add grid meter" }).click();
|
|
const meterModal = page.getByTestId("meter-modal");
|
|
await expectModalVisible(meterModal);
|
|
await meterModal.getByLabel("Manufacturer").selectOption("Old Meter");
|
|
await meterModal.getByLabel("Power").fill("5000");
|
|
await meterModal.getByRole("button", { name: "Save" }).click();
|
|
await expectModalHidden(meterModal);
|
|
|
|
await expect(page.getByTestId("grid")).toBeVisible();
|
|
await expect(page.getByTestId("grid")).toContainText("Grid meter");
|
|
|
|
await restart(undefined, deprecatedFlags);
|
|
await page.reload();
|
|
|
|
await expect(page.getByTestId("grid")).toBeVisible();
|
|
|
|
await page.getByTestId("grid").getByRole("button", { name: "edit" }).click();
|
|
await expectModalVisible(meterModal);
|
|
await expect(meterModal.getByLabel("Manufacturer")).toHaveValue("Old Meter");
|
|
await expect(meterModal.getByLabel("Power")).toHaveValue("5000");
|
|
await meterModal.getByRole("button", { name: "Save" }).click();
|
|
await expectModalHidden(meterModal);
|
|
|
|
await page.getByTestId("grid").getByRole("button", { name: "edit" }).click();
|
|
await expectModalVisible(meterModal);
|
|
await meterModal.getByRole("button", { name: "Delete" }).click();
|
|
await expectModalHidden(meterModal);
|
|
|
|
await expect(page.getByTestId("grid")).not.toBeVisible();
|
|
|
|
await page.getByRole("button", { name: "Add grid meter" }).click();
|
|
await expectModalVisible(meterModal);
|
|
const manufacturerSelect = meterModal.getByLabel("Manufacturer");
|
|
const options = await manufacturerSelect.locator("option").allTextContents();
|
|
expect(options).not.toContain("Old Meter");
|
|
expect(options).not.toContain("Deprecated Meter");
|
|
});
|
|
});
|