61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { start, stop, restart, baseUrl } from "./evcc";
|
|
import { expectModalHidden, expectModalVisible } from "./utils";
|
|
|
|
test.use({ baseURL: baseUrl() });
|
|
|
|
test.beforeEach(async () => {
|
|
await start();
|
|
});
|
|
test.afterEach(async () => {
|
|
await stop();
|
|
});
|
|
|
|
test.describe("consumer", () => {
|
|
test("regular consumer", async ({ page }) => {
|
|
await page.goto("/#/config");
|
|
|
|
await page.getByRole("button", { name: "Add consumer" }).click();
|
|
const modal = page.getByTestId("meter-modal");
|
|
await expectModalVisible(modal);
|
|
await modal.getByRole("button", { name: "Regular consumer" }).click();
|
|
|
|
// usage selector hidden — consumers are always charge meters
|
|
await expect(modal.getByLabel("Usage")).toHaveCount(0);
|
|
|
|
await modal.getByLabel("Title").fill("EV charger");
|
|
await modal.getByLabel("Manufacturer").selectOption("Demo meter");
|
|
await modal.getByLabel("Power").fill("3500");
|
|
await modal.getByRole("button", { name: "Save" }).click();
|
|
await expectModalHidden(modal);
|
|
|
|
// appears in consumers section as a consumer card
|
|
await expect(page.getByTestId("consumer")).toHaveCount(1);
|
|
await expect(page.getByTestId("consumer")).toContainText("EV charger");
|
|
|
|
// restart and confirm persistence
|
|
await restart();
|
|
await page.reload();
|
|
await expect(page.getByTestId("consumer")).toHaveCount(1);
|
|
await expect(page.getByTestId("consumer")).toContainText("EV charger");
|
|
});
|
|
|
|
test("self-regulating consumer", async ({ page }) => {
|
|
await page.goto("/#/config");
|
|
|
|
await page.getByRole("button", { name: "Add consumer" }).click();
|
|
const modal = page.getByTestId("meter-modal");
|
|
await expectModalVisible(modal);
|
|
await modal.getByRole("button", { name: "Self-regulating consumer" }).click();
|
|
|
|
await modal.getByLabel("Title").fill("Heat pump");
|
|
await modal.getByLabel("Manufacturer").selectOption("Demo meter");
|
|
await modal.getByLabel("Power").fill("800");
|
|
await modal.getByRole("button", { name: "Save" }).click();
|
|
await expectModalHidden(modal);
|
|
|
|
// self-regulating consumers are stored as aux meters
|
|
await expect(page.getByTestId("aux")).toHaveCount(1);
|
|
await expect(page.getByTestId("aux")).toContainText("Heat pump");
|
|
});
|
|
});
|