From 9ca5ee9e66af30e39a9c250b2bfbaab993966d3c Mon Sep 17 00:00:00 2001 From: ISA Date: Mon, 11 Aug 2025 16:13:01 +0200 Subject: [PATCH] playwright recording and testing --- .env.development | 2 +- .env.production | 2 +- CHANGELOG.md | 5 ++ package-lock.json | 4 +- package.json | 2 +- tests/kabelueberwachung-visual.spec.ts | 56 ++++++++++++++++++++ tests/kue705fo.spec.ts | 48 ----------------- tests/system-view.spec.ts | 72 -------------------------- 8 files changed, 66 insertions(+), 125 deletions(-) create mode 100644 tests/kabelueberwachung-visual.spec.ts delete mode 100644 tests/kue705fo.spec.ts delete mode 100644 tests/system-view.spec.ts diff --git a/.env.development b/.env.development index 6a1cdc0..c9a7b07 100644 --- a/.env.development +++ b/.env.development @@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_USE_CGI=false # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.687 +NEXT_PUBLIC_APP_VERSION=1.6.688 NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) diff --git a/.env.production b/.env.production index 5d9a75b..ec74fab 100644 --- a/.env.production +++ b/.env.production @@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_USE_CGI=true # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.687 +NEXT_PUBLIC_APP_VERSION=1.6.688 NEXT_PUBLIC_CPL_MODE=production \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 638bd86..1db1554 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [1.6.688] – 2025-08-11 + +- ISO, RSL, TDR, und KVZ Modal nach Wünsch angepasst für KÜs + +--- ## [1.6.687] – 2025-08-11 - ISO & RSL dropdowns moved to headers like TDR; removed old dropdowns from action bars, cleaned imports, fixed TypeScript issues diff --git a/package-lock.json b/package-lock.json index b2c3b93..6281fd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cpl-v4", - "version": "1.6.687", + "version": "1.6.688", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cpl-v4", - "version": "1.6.687", + "version": "1.6.688", "dependencies": { "@fontsource/roboto": "^5.1.0", "@headlessui/react": "^2.2.4", diff --git a/package.json b/package.json index 89dea69..d5e43e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cpl-v4", - "version": "1.6.687", + "version": "1.6.688", "private": true, "scripts": { "dev": "next dev", diff --git a/tests/kabelueberwachung-visual.spec.ts b/tests/kabelueberwachung-visual.spec.ts new file mode 100644 index 0000000..c74ed54 --- /dev/null +++ b/tests/kabelueberwachung-visual.spec.ts @@ -0,0 +1,56 @@ +import { test, expect, Page } from "@playwright/test"; + +// Simple visual smoke test for /kabelueberwachung +// Creates / compares a full-page screenshot (baseline generated on first run with --update-snapshots) +// To update baseline: npx playwright test tests/kabelueberwachung-visual.spec.ts --update-snapshots +// To run in UI mode: npx playwright test --ui + +// Helper to stabilize dynamic UI before screenshot + +test.describe("Kabelüberwachung Visual", () => { + test("test", async ({ page }) => { + await page.goto("http://localhost:3000/kabelueberwachung"); + await page + .locator(".bg-littwin-blue.text-white.text-\\[0\\.625rem\\]") + .first() + .click(); + //warte 1 Sekunde + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "Daten laden" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "Messkurve" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("option", { name: "Meldungen" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "" }).click(); + await page.waitForTimeout(2000); + page.once("dialog", (dialog) => { + console.log(`Dialog message: ${dialog.message()}`); + dialog.dismiss().catch(() => {}); + }); + await page.waitForTimeout(2000); + await page.locator(".flex > button:nth-child(2)").first().click(); + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "Messkurve" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("option", { name: "Meldungen" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "" }).click(); + await page.waitForTimeout(2000); + await page + .locator(".bg-littwin-blue.text-white.cursor-pointer") + .first() + .click(); + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "Messkurve" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("option", { name: "Meldungen" }).click(); + await page.waitForTimeout(2000); + await page.getByRole("button", { name: "" }).click(); + await page.waitForTimeout(2000); + }); +}); +//zum ausführen +// npx playwright test kabelueberwachung-visual.spec.ts --project=chromium --headed +//zum aufzeichnen +// npx playwright codegen http://localhost:3000/kabelueberwachung --channel=chrome diff --git a/tests/kue705fo.spec.ts b/tests/kue705fo.spec.ts deleted file mode 100644 index 64857c1..0000000 --- a/tests/kue705fo.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { test, expect } from "@playwright/test"; - -test.describe("Kue705FO Integration Tests", () => { - test.beforeEach(async ({ page }) => { - // Besuche die Seite, auf der die Komponente gerendert wird - await page.goto("/kabelueberwachung"); - }); - - test("should render the component with default props", async ({ page }) => { - // Überprüfe, ob der Modulname und die Slotnummer angezeigt werden - await expect(page.locator("text=KÜ705-FO")).toBeVisible(); - await expect(page.locator("text=Modul 1")).toBeVisible(); // Beispiel für den Modulnamen - }); - - test("should update display when TDR button is clicked", async ({ page }) => { - // Klicke auf den TDR-Button - await page.locator("text=TDR").click(); - - // Überprüfe, ob der Text aktualisiert wurde - await expect(page.locator("text=Entfernung [Km]")).toBeVisible(); - }); - - test("should switch back to Schleife display", async ({ page }) => { - // Klicke auf TDR, dann zurück zu Schleife - await page.locator("text=TDR").click(); - await page.locator("text=Schleife").click(); - - // Überprüfe, ob der Text aktualisiert wurde - await expect(page.locator("text=Schleifenwiderstand [kOhm]")).toBeVisible(); - }); - - test("should disable TDR button when tdrActive is 0", async ({ page }) => { - // Dies erfordert eine benutzerdefinierte Backend-Konfiguration oder Redux-Manipulation - await expect(page.locator("text=TDR")).toBeDisabled(); - }); - - test("should open and close the settings modal", async ({ page }) => { - // Öffne das Modal - await page.locator("text=⚙").click(); - await expect(page.locator("text=KUE Einstellung - Slot 1")).toBeVisible(); - - // Schließe das Modal - await page.locator("text=×").click(); - await expect( - page.locator("text=KUE Einstellung - Slot 1") - ).not.toBeVisible(); - }); -}); diff --git a/tests/system-view.spec.ts b/tests/system-view.spec.ts deleted file mode 100644 index 59ca775..0000000 --- a/tests/system-view.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { test, expect } from "@playwright/test"; - -test.describe("System View Tests", () => { - test.beforeEach(async ({ page }) => { - // Besuche die System-Seite - await page.goto("/system"); - }); - - test("should display system title", async ({ page }) => { - // Überprüfe, ob der Titel angezeigt wird - await expect(page.locator("h1")).toContainText( - "System Spannungen & Temperaturen" - ); - }); - - test("should show loading state initially", async ({ page }) => { - // Überprüfe, ob der Ladeindikator angezeigt wird - await expect( - page.locator("text=Lade Systemdaten … bitte warten") - ).toBeVisible(); - }); - - test("should display system data after loading", async ({ page }) => { - // Warte auf das Verschwinden des Ladeindikators - await page.waitForSelector("text=Lade Systemdaten … bitte warten", { - state: "hidden", - timeout: 10000, - }); - - // Überprüfe, ob Systemdaten angezeigt werden - // Diese Tests müssen an die tatsächliche Implementierung angepasst werden - await expect( - page.locator('[data-testid="system-overview-grid"]') - ).toBeVisible({ timeout: 15000 }); - }); - - test("should open detail modal when clicking on voltage card", async ({ - page, - }) => { - // Warte auf das Laden der Daten - await page.waitForSelector("text=Lade Systemdaten … bitte warten", { - state: "hidden", - timeout: 10000, - }); - - // Klicke auf eine Spannungskarte (dies muss an die tatsächliche Implementierung angepasst werden) - await page.locator('[data-testid="voltage-card"]:first-child').click(); - - // Überprüfe, ob das Detail-Modal geöffnet wird - await expect(page.locator('[data-testid="detail-modal"]')).toBeVisible(); - }); - - test("should close detail modal when clicking close button", async ({ - page, - }) => { - // Warte auf das Laden der Daten - await page.waitForSelector("text=Lade Systemdaten … bitte warten", { - state: "hidden", - timeout: 10000, - }); - - // Öffne das Modal - await page.locator('[data-testid="voltage-card"]:first-child').click(); - await expect(page.locator('[data-testid="detail-modal"]')).toBeVisible(); - - // Schließe das Modal - await page.locator('[data-testid="modal-close-button"]').click(); - await expect( - page.locator('[data-testid="detail-modal"]') - ).not.toBeVisible(); - }); -});