evcc-io/tests/config-consumer.spec.ts

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");
});
});