test: Einstellungen Seite mit highlighting

This commit is contained in:
ISA
2025-08-25 14:50:25 +02:00
parent f25c527e71
commit e69934ff51
6 changed files with 186 additions and 104 deletions

View File

@@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false
NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_EXPORT_STATIC=false
NEXT_PUBLIC_USE_CGI=false NEXT_PUBLIC_USE_CGI=false
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.752 NEXT_PUBLIC_APP_VERSION=1.6.753
NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter)

View File

@@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL
NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_EXPORT_STATIC=true
NEXT_PUBLIC_USE_CGI=true NEXT_PUBLIC_USE_CGI=true
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.752 NEXT_PUBLIC_APP_VERSION=1.6.753
NEXT_PUBLIC_CPL_MODE=production NEXT_PUBLIC_CPL_MODE=production

View File

@@ -1,3 +1,8 @@
## [1.6.753] 2025-08-25
- test: playwright funktion highlight in separate Datei
---
## [1.6.752] 2025-08-25 ## [1.6.752] 2025-08-25
- fix: Ein Abgleich darf natürlich nicht die Seiten blockieren. - fix: Ein Abgleich darf natürlich nicht die Seiten blockieren.

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.752", "version": "1.6.753",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.752", "version": "1.6.753",
"dependencies": { "dependencies": {
"@fontsource/roboto": "^5.1.0", "@fontsource/roboto": "^5.1.0",
"@headlessui/react": "^2.2.4", "@headlessui/react": "^2.2.4",

View File

@@ -1,6 +1,6 @@
{ {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.752", "version": "1.6.753",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",

View File

@@ -1,183 +1,260 @@
import { expect } from "@playwright/test"; import { expect } from "@playwright/test";
import type { Page } from "@playwright/test"; import type { Page } from "@playwright/test";
import { highlightAndExpectVisible } from "./highlight";
export async function runSettingsPageTest(page: Page) { export async function runSettingsPageTest(page: Page) {
await page.goto("http://localhost:3000/einstellungen"); await page.goto("http://localhost:3000/einstellungen");
await expect( await highlightAndExpectVisible(
page,
page.getByRole("heading", { name: "Meldestation" }) page.getByRole("heading", { name: "Meldestation" })
).toBeVisible(); );
await expect(page.getByRole("img", { name: "TALAS Logo" })).toBeVisible();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("img", { name: "TALAS Logo" })
);
await highlightAndExpectVisible(
page,
page.getByRole("img", { name: "Logo", exact: true }) page.getByRole("img", { name: "Logo", exact: true })
).toBeVisible(); );
await expect(page.getByRole("link", { name: "Übersicht" })).toBeVisible(); await highlightAndExpectVisible(
await expect( page,
page.getByRole("link", { name: "Übersicht" })
);
await highlightAndExpectVisible(
page,
page.getByRole("link", { name: "Kabelüberwachung" }) page.getByRole("link", { name: "Kabelüberwachung" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("link", { name: "Meldungseingänge" }) page.getByRole("link", { name: "Meldungseingänge" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("link", { name: "Schaltausgänge" }) page.getByRole("link", { name: "Schaltausgänge" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("link", { name: "Messwerteingänge" }) page.getByRole("link", { name: "Messwerteingänge" })
).toBeVisible(); );
await expect(page.getByRole("link", { name: "Berichte" })).toBeVisible(); await highlightAndExpectVisible(
await expect(page.getByRole("link", { name: "System" })).toBeVisible(); page,
await expect(page.getByRole("link", { name: "Einstellungen" })).toBeVisible(); page.getByRole("link", { name: "Berichte" })
await expect( );
await highlightAndExpectVisible(
page,
page.getByRole("link", { name: "System" })
);
await highlightAndExpectVisible(
page,
page.getByRole("link", { name: "Einstellungen" })
);
await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Littwin Systemtechnik GmbH & Co\. KG$/ }) .filter({ hasText: /^Littwin Systemtechnik GmbH & Co\. KG$/ })
.locator("svg") .locator("svg")
).toBeVisible(); );
await expect(page.getByText("Littwin Systemtechnik GmbH &")).toBeVisible(); await highlightAndExpectVisible(
await expect( page,
page.getByText("Littwin Systemtechnik GmbH &")
);
await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Telefon: 04402 972577-0$/ }) .filter({ hasText: /^Telefon: 04402 972577-0$/ })
.locator("svg") .locator("svg")
).toBeVisible(); );
await expect(page.getByText("Telefon: 04402 972577-")).toBeVisible(); await highlightAndExpectVisible(
await expect( page,
page.getByText("Telefon: 04402 972577-")
);
await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^kontakt@littwin-systemtechnik\.de$/ }) .filter({ hasText: /^kontakt@littwin-systemtechnik\.de$/ })
.locator("svg") .locator("svg")
).toBeVisible(); );
await expect(page.getByText("kontakt@littwin-systemtechnik")).toBeVisible(); await highlightAndExpectVisible(
await expect( page,
page.getByText("kontakt@littwin-systemtechnik")
);
await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Handbücher$/ }) .filter({ hasText: /^Handbücher$/ })
.locator("svg") .locator("svg")
).toBeVisible(); );
await expect(page.getByText("Handbücher", { exact: true })).toBeVisible(); await highlightAndExpectVisible(
page,
page.getByText("Handbücher", { exact: true })
);
await page.getByText("Handbücher", { exact: true }).click(); await page.getByText("Handbücher", { exact: true }).click();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("heading", { name: "PDF Handbücher" }) page.getByRole("heading", { name: "PDF Handbücher" })
).toBeVisible(); );
await expect(page.getByText("KUE705FO.PDF")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("KUE705FO.PDF"));
//await page.getByRole("button").filter({ hasText: /^$/ }).click(); //await page.getByRole("button").filter({ hasText: /^$/ }).click();
await page.getByRole("button", { name: "Allgemeine Einstellungen" }).click(); await page.getByRole("button", { name: "Allgemeine Einstellungen" }).click();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Allgemeine Einstellungen" }) page.getByRole("button", { name: "Allgemeine Einstellungen" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("heading", { name: "Allgemeine Einstellungen" }) page.getByRole("heading", { name: "Allgemeine Einstellungen" })
).toBeVisible(); );
await expect(page.getByText("Name:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("Name:"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Name:$/ }) .filter({ hasText: /^Name:$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("MAC Adresse 1:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("MAC Adresse 1:"));
await expect( await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Systemzeit übernehmen" }) page.getByRole("button", { name: "Systemzeit übernehmen" })
).toBeVisible(); );
await expect(page.getByText("IP:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("IP:"));
await expect( await highlightAndExpectVisible(
page,
page.locator("div").filter({ hasText: /^IP:$/ }).getByRole("textbox") page.locator("div").filter({ hasText: /^IP:$/ }).getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("Subnet:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("Subnet:"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Subnet:$/ }) .filter({ hasText: /^Subnet:$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("Gateway:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("Gateway:"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Gateway:$/ }) .filter({ hasText: /^Gateway:$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Neustart CPL" }) page.getByRole("button", { name: "Neustart CPL" })
).toBeVisible(); );
await expect(page.getByRole("button", { name: "Speichern" })).toBeVisible(); await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Speichern" })
);
await page.getByRole("button", { name: "OPCUA" }).click(); await page.getByRole("button", { name: "OPCUA" }).click();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("img", { name: "OPCUA Logo" }).first() page.getByRole("img", { name: "OPCUA Logo" }).first()
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("img", { name: "OPCUA Logo" }).nth(1) page.getByRole("img", { name: "OPCUA Logo" }).nth(1)
).toBeVisible(); );
await expect(page.getByText("Server Status:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("Server Status:"));
await expect(page.getByRole("button", { name: "Aktiviert" })).toBeVisible(); await highlightAndExpectVisible(
await expect(page.getByText("OPCUA Zustand")).toBeVisible(); page,
await expect(page.getByText("1")).toBeVisible(); page.getByRole("button", { name: "Aktiviert" })
await expect(page.getByText("Nodeset Name")).toBeVisible(); );
await expect(page.getByText("Aktuelle OPC-Clients")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("OPCUA Zustand"));
await expect(page.getByText("0", { exact: true })).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("1"));
await highlightAndExpectVisible(page, page.getByText("Nodeset Name"));
await highlightAndExpectVisible(page, page.getByText("Aktuelle OPC-Clients"));
await highlightAndExpectVisible(page, page.getByText("0", { exact: true }));
await page.getByRole("button", { name: "Datenbank" }).click(); await page.getByRole("button", { name: "Datenbank" }).click();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("heading", { name: "Datenbank Einstellungen" }) page.getByRole("heading", { name: "Datenbank Einstellungen" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Meldungen löschen" }) page.getByRole("button", { name: "Meldungen löschen" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Messwerte Logger löschen" }) page.getByRole("button", { name: "Messwerte Logger löschen" })
).toBeVisible(); );
await page.getByRole("button", { name: "NTP" }).click(); await page.getByRole("button", { name: "NTP" }).click();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("heading", { name: "NTP Einstellungen" }) page.getByRole("heading", { name: "NTP Einstellungen" })
).toBeVisible(); );
await expect(page.getByText("NTP Server 1")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("NTP Server 1"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^NTP Server 1$/ }) .filter({ hasText: /^NTP Server 1$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("NTP Server 3")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("NTP Server 3"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^NTP Server 3$/ }) .filter({ hasText: /^NTP Server 3$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("NTP Server 2")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("NTP Server 2"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^NTP Server 2$/ }) .filter({ hasText: /^NTP Server 2$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("Zeitzone")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("Zeitzone"));
await expect( await highlightAndExpectVisible(
page,
page page
.locator("div") .locator("div")
.filter({ hasText: /^Zeitzone$/ }) .filter({ hasText: /^Zeitzone$/ })
.getByRole("textbox") .getByRole("textbox")
).toBeVisible(); );
await expect(page.getByText("NTP aktiv:")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("NTP aktiv:"));
await expect(page.getByRole("checkbox")).toBeVisible(); await highlightAndExpectVisible(page, page.getByRole("checkbox"));
await expect(page.getByRole("button", { name: "Speichern" })).toBeVisible(); await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Speichern" })
);
await page.getByRole("button", { name: "Benutzerverwaltung" }).click(); await page.getByRole("button", { name: "Benutzerverwaltung" }).click();
await expect( await highlightAndExpectVisible(
page,
page.getByRole("heading", { name: "Login Admin-Bereich" }) page.getByRole("heading", { name: "Login Admin-Bereich" })
).toBeVisible(); );
await expect( await highlightAndExpectVisible(
page,
page.getByRole("textbox", { name: "Benutzername" }) page.getByRole("textbox", { name: "Benutzername" })
).toBeVisible(); );
await expect(page.getByRole("textbox", { name: "Passwort" })).toBeVisible(); await highlightAndExpectVisible(
await expect( page,
page.getByRole("textbox", { name: "Passwort" })
);
await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Admin anmelden" }) page.getByRole("button", { name: "Admin anmelden" })
).toBeVisible(); );
await page.getByRole("textbox", { name: "Benutzername" }).click(); await page.getByRole("textbox", { name: "Benutzername" }).click();
await page.getByRole("textbox", { name: "Benutzername" }).fill("admin"); await page.getByRole("textbox", { name: "Benutzername" }).fill("admin");
await page.getByRole("textbox", { name: "Passwort" }).click(); await page.getByRole("textbox", { name: "Passwort" }).click();
await page.getByRole("textbox", { name: "Passwort" }).fill("admin"); await page.getByRole("textbox", { name: "Passwort" }).fill("admin");
await page.getByRole("button", { name: "Admin anmelden" }).click(); await page.getByRole("button", { name: "Admin anmelden" }).click();
await expect(page.getByText("Login erfolgreich!")).toBeVisible(); await highlightAndExpectVisible(page, page.getByText("Login erfolgreich!"));
await expect(page.getByRole("button", { name: "Abmelden" })).toBeVisible(); await highlightAndExpectVisible(
await expect( page,
page.getByRole("button", { name: "Abmelden" })
);
await highlightAndExpectVisible(
page,
page.getByRole("button", { name: "Admin anmelden" }) page.getByRole("button", { name: "Admin anmelden" })
).toBeVisible(); );
} }