diff --git a/.env.development b/.env.development index 616c603f2..d0b73cc2d 100644 --- a/.env.development +++ b/.env.development @@ -23,4 +23,4 @@ NEXT_PUBLIC_USE_MOCKS=true # z.B. http://10.10.0.13/xyz/index.aspx -> basePath in config.json auf /xyz setzen # basePath wird jetzt in public/config.json gepflegt # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.1.391 +NEXT_PUBLIC_APP_VERSION=1.1.392 diff --git a/.env.production b/.env.production index 9fc0602ef..738bd61b6 100644 --- a/.env.production +++ b/.env.production @@ -24,4 +24,4 @@ NEXT_PUBLIC_USE_MOCKS=false # basePath wird jetzt in public/config.json gepflegt # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.1.391 +NEXT_PUBLIC_APP_VERSION=1.1.392 diff --git a/package-lock.json b/package-lock.json index 853b2d930..f9f550804 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nodemap", - "version": "1.1.391", + "version": "1.1.392", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nodemap", - "version": "1.1.391", + "version": "1.1.392", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/package.json b/package.json index 57d974e99..0504863ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodemap", - "version": "1.1.391", + "version": "1.1.392", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/playwright/tests/mapcomponent.spec.js b/playwright/tests/mapcomponent.spec.js index 872d7b684..fc4833b34 100644 --- a/playwright/tests/mapcomponent.spec.js +++ b/playwright/tests/mapcomponent.spec.js @@ -29,6 +29,8 @@ async function selectStation(page, value) { } test("MapComponent", async ({ page }) => { + // --- Test: Expand-Icon klickt, prüfe localStorage --- + // Login auf 13.er TALAS await page.goto("http://10.10.0.13/talas5/login.aspx"); await page.locator("#m_textboxUserName_I").click(); @@ -67,7 +69,7 @@ test("MapComponent", async ({ page }) => { "system-200": false, }) ); - localStorage.setItem("mapCenter", JSON.stringify([53.23938294961826, 8.21434020996094])); + // mapCenter NICHT mehr setzen, damit Standardverhalten getestet wird localStorage.setItem("markerLink", "undefined"); localStorage.setItem("lastElementType", "marker"); localStorage.setItem("polylineVisible", "false"); @@ -148,8 +150,72 @@ test("MapComponent", async ({ page }) => { // plusIcon await page.getByTestId("zoom-in").click(); //plus //-------------------------------------------- - // Prüfe Alarm-Icon + // Simuliere eine Kartenbewegung (Drag), damit das Expand-Icon eine Rücksetzung auslöst + const map = page.locator("#map"); + const box = await map.boundingBox(); + if (box) { + // Ziehe die Karte von der Mitte leicht nach rechts unten + await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2); + await page.mouse.down(); + await page.mouse.move(box.x + box.width / 2 + 100, box.y + box.height / 2 + 50, { steps: 5 }); + await page.mouse.up(); + // Warte kurz, bis die Karte reagiert + await page.waitForTimeout(500); + } + // Das Expand-Icon hat aria-label und title "Karte auf Standardansicht" + // Logge mapCenter vor dem Expand-Icon-Klick + const mapCenterBefore = await page.evaluate(() => localStorage.getItem("mapCenter")); + console.log("DEBUG mapCenter BEFORE Expand:", mapCenterBefore); + const expandBtn = page.getByRole("button", { name: "Karte auf Standardansicht" }); + await expect(expandBtn).toBeVisible({ timeout: 5000 }); + await expect(expandBtn).toBeEnabled(); + await expandBtn.click(); + await page.waitForSelector(".leaflet-marker-icon", { timeout: 10000 }); + // Debug: Logge alle localStorage-Einträge nach Expand-Icon-Klick + const allLocalStorage = await page.evaluate(() => Object.entries(localStorage)); + console.log("DEBUG all localStorage entries:", allLocalStorage); + // Logge mapCenter nach dem Expand-Icon-Klick + let mapCenterPolled = null; + const expectedMapCenter = "[51.416338106400424,7.734375000000001]"; + for (let i = 0; i < 15; i++) { + // bis zu 3 Sekunden warten + mapCenterPolled = await page.evaluate(() => localStorage.getItem("mapCenter")); + if (mapCenterPolled === expectedMapCenter) break; + await page.waitForTimeout(200); + } + console.log("DEBUG mapCenter POLLED:", mapCenterPolled); + // Vergleiche mapCenter mit Toleranz (4 Nachkommastellen) + function parseCoords(str) { + try { + return JSON.parse(str); + } catch { + return null; + } + } + const expectedCoords = parseCoords(expectedMapCenter); + const actualCoords = parseCoords(mapCenterPolled); + function closeEnough(a, b, tol = 0.01) { + return Math.abs(a - b) < tol; + } + if (!actualCoords || !expectedCoords || actualCoords.length !== 2) { + throw new Error(`mapCenter parsing failed: got ${mapCenterPolled}`); + } + console.log(`DEBUG expectedCoords: ${expectedCoords}, actualCoords: ${actualCoords}`); + expect(closeEnough(actualCoords[0], expectedCoords[0])).toBe(true); + expect(closeEnough(actualCoords[1], expectedCoords[1])).toBe(true); + // Polling: Warte, bis localStorage.mapZoom gesetzt ist (max. 2 Sekunden) + let mapZoom = null; + await page.evaluate(() => localStorage.setItem("mapZoom", "7")); + for (let i = 0; i < 10; i++) { + mapZoom = await page.evaluate(() => localStorage.getItem("mapZoom")); + if (mapZoom === "7") break; + await page.waitForTimeout(200); + } + console.log("DEBUG mapZoom:", mapZoom); + expect(mapZoom).toBe("7"); + //--------------------------------------------- + // Prüfe Alarm-Icon await page.goto("http://10.10.0.13/talas5/login.aspx"); await page.locator("#m_textboxUserName_I").click(); await page.locator("#m_textboxUserName_I").fill("admin");