evcc-io/tests/session-soc.spec.ts
2026-06-04 18:18:07 +02:00

82 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { test, expect } from "@playwright/test";
import { start, stop, baseUrl } from "./evcc";
import { expectModalVisible } from "./utils";
import {
startSimulator,
stopSimulator,
simulatorUrl,
simulatorConfig,
simulatorApply,
} from "./simulator";
test.use({ baseURL: baseUrl() });
test.beforeAll(async () => {
await startSimulator();
});
test.afterAll(async () => {
await stopSimulator();
});
test.beforeEach(async ({ page }) => {
await start(simulatorConfig());
// start disconnected
await page.goto(simulatorUrl());
await page.getByTestId("loadpoint0").getByText("A (disconnected)").click();
await simulatorApply(page);
});
test.afterEach(async () => {
await stop();
});
test("soc range", async ({ page }) => {
const loadpoint = page.getByTestId("loadpoint0");
const vehicle = page.getByTestId("vehicle0");
// connect vehicle with 20% SoC
await page.goto(simulatorUrl());
await vehicle.getByLabel("SoC").fill("20");
await loadpoint.getByLabel("Energy").fill("0");
await loadpoint.getByText("B (connected)").click();
await simulatorApply(page);
await page.goto("/");
await expect(page.getByTestId("vehicle-status")).toHaveText("Connected.");
await expect(page.getByTestId("current-soc")).toContainText("20");
// start charging
await page.goto(simulatorUrl());
await loadpoint.getByLabel("Power").fill("6000");
await loadpoint.getByText("C (charging)").click();
await loadpoint.getByText("Enabled").check();
await simulatorApply(page);
await page.goto("/");
await expect(page.getByTestId("vehicle-status")).toContainText("Charging");
// update SoC to 80% and energy to 10 kWh
await page.goto(simulatorUrl());
await loadpoint.getByLabel("Energy").fill("10");
await vehicle.getByLabel("SoC").fill("80");
await simulatorApply(page);
await page.goto("/");
await expect(page.getByTestId("current-soc")).toContainText("80");
// disconnect
await page.goto(simulatorUrl());
await loadpoint.getByText("A (disconnected)").click();
await simulatorApply(page);
await page.goto("/");
await expect(page.getByTestId("vehicle-status")).toHaveText("Disconnected.");
// verify session soc range
await page.goto("/#/sessions");
await expect(page.getByTestId("sessions-entry")).toHaveCount(1);
await page.getByTestId("sessions-entry").click();
const modal = page.getByTestId("session-details");
await expectModalVisible(modal);
await expect(modal.getByTestId("session-details-soc")).toContainText("20 – 80%");
});