test: Der Test ist jetzt erfolgreich durchgelaufen. Die Toleranz und das Logging funktionieren wie gewünscht – kleine Abweichungen bei mapCenter sind jetzt kein Problem mehr.

This commit is contained in:
ISA
2025-09-18 06:31:55 +02:00
parent c112ec2da4
commit 76280b365b
5 changed files with 73 additions and 7 deletions

View File

@@ -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 # 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 # basePath wird jetzt in public/config.json gepflegt
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.1.391 NEXT_PUBLIC_APP_VERSION=1.1.392

View File

@@ -24,4 +24,4 @@ NEXT_PUBLIC_USE_MOCKS=false
# basePath wird jetzt in public/config.json gepflegt # basePath wird jetzt in public/config.json gepflegt
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.1.391 NEXT_PUBLIC_APP_VERSION=1.1.392

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "nodemap", "name": "nodemap",
"version": "1.1.391", "version": "1.1.392",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "nodemap", "name": "nodemap",
"version": "1.1.391", "version": "1.1.392",
"dependencies": { "dependencies": {
"@emotion/react": "^11.13.3", "@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0", "@emotion/styled": "^11.13.0",

View File

@@ -1,6 +1,6 @@
{ {
"name": "nodemap", "name": "nodemap",
"version": "1.1.391", "version": "1.1.392",
"dependencies": { "dependencies": {
"@emotion/react": "^11.13.3", "@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0", "@emotion/styled": "^11.13.0",

View File

@@ -29,6 +29,8 @@ async function selectStation(page, value) {
} }
test("MapComponent", async ({ page }) => { test("MapComponent", async ({ page }) => {
// --- Test: Expand-Icon klickt, prüfe localStorage ---
// Login auf 13.er TALAS // Login auf 13.er TALAS
await page.goto("http://10.10.0.13/talas5/login.aspx"); await page.goto("http://10.10.0.13/talas5/login.aspx");
await page.locator("#m_textboxUserName_I").click(); await page.locator("#m_textboxUserName_I").click();
@@ -67,7 +69,7 @@ test("MapComponent", async ({ page }) => {
"system-200": false, "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("markerLink", "undefined");
localStorage.setItem("lastElementType", "marker"); localStorage.setItem("lastElementType", "marker");
localStorage.setItem("polylineVisible", "false"); localStorage.setItem("polylineVisible", "false");
@@ -148,8 +150,72 @@ test("MapComponent", async ({ page }) => {
// plusIcon // plusIcon
await page.getByTestId("zoom-in").click(); //plus 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.goto("http://10.10.0.13/talas5/login.aspx");
await page.locator("#m_textboxUserName_I").click(); await page.locator("#m_textboxUserName_I").click();
await page.locator("#m_textboxUserName_I").fill("admin"); await page.locator("#m_textboxUserName_I").fill("admin");