import type { Page } from "@playwright/test"; import { highlightAndExpectVisible } from "@playwright/utils/highlight"; import { navTest } from "@/playwright/tests/components/navigation/navTest"; import { headerTest } from "@/playwright/tests/components/header/headerTest"; import { footerTest } from "@/playwright/tests/components/footer/footerTest"; export async function runMeldungenTest(page: Page) { await page.goto("/meldungen"); //---------------------- await headerTest(page); await navTest(page); await footerTest(page); await page.waitForTimeout(400); //---------------------- // Berichte Heading const berichteHeading = page.getByRole("heading", { name: "Berichte" }); await highlightAndExpectVisible(page, berichteHeading); await berichteHeading.click(); await page.waitForTimeout(100); // Von const vonText = page.getByText("Von"); await highlightAndExpectVisible(page, vonText); await vonText.click(); await page.waitForTimeout(50); const vonTextbox = page .locator("div") .filter({ hasText: /^Von$/ }) .getByRole("textbox"); await highlightAndExpectVisible(page, vonTextbox); await vonTextbox.click(); await page.waitForTimeout(50); /* const julyDate = page .getByLabel("Choose Date") .locator("div") .filter({ hasText: "July" }) .first(); await highlightAndExpectVisible(page, julyDate); await expect(julyDate).toBeVisible(); */ await page.waitForTimeout(50); await vonTextbox.click(); await page.waitForTimeout(50); const bisTextbox = page .locator("div") .filter({ hasText: /^Bis$/ }) .getByRole("textbox"); await highlightAndExpectVisible(page, bisTextbox); await bisTextbox.click(); await page.waitForTimeout(50); /* const augustDate = page .getByLabel("Choose Date") .locator("div") .filter({ hasText: "August" }) .first(); await highlightAndExpectVisible(page, augustDate); await expect(augustDate).toBeVisible(); await page.waitForTimeout(50); */ await bisTextbox.click(); await page.waitForTimeout(50); await highlightAndExpectVisible(page, berichteHeading); await berichteHeading.click(); await page.waitForTimeout(50); // Buttons sichtbar /* const anzeigenBtn = page.getByRole("button", { name: "Anzeigen" }); await highlightAndExpectVisible(page, anzeigenBtn); await expect(anzeigenBtn).toBeVisible(); await page.waitForTimeout(50); */ const alleQuellenBtn = page.getByRole("button", { name: "Alle Quellen" }); await highlightAndExpectVisible(page, alleQuellenBtn); // await expect(alleQuellenBtn).toBeVisible(); await alleQuellenBtn.click(); await page.waitForTimeout(50); await alleQuellenBtn.click(); await page.waitForTimeout(50); // Tabellenzellen const tableCells = [ page.getByRole("cell", { name: "Prio" }), page.getByRole("cell", { name: "Zeitstempel" }), page.getByRole("cell", { name: "Quelle" }), page.getByRole("cell", { name: "Meldung" }), page.getByRole("cell", { name: "Status" }), ]; for (const cell of tableCells) { await highlightAndExpectVisible(page, cell); await cell.click(); await page.waitForTimeout(30); } // Interact with the first few data rows generically instead of hardcoded timestamps const table = page.locator("table"); await table.first().waitFor({ state: "visible", timeout: 15000 }); const rows = table.locator("tbody tr"); const rowCount = await rows.count(); const maxRows = Math.min(5, rowCount); for (let i = 0; i < maxRows; i++) { const row = rows.nth(i); const firstCell = row.locator("td").first(); await highlightAndExpectVisible(page, firstCell); await firstCell.click(); // click a couple of other cells if present const secondCell = row.locator("td").nth(1); if (await secondCell.count()) { await highlightAndExpectVisible(page, secondCell); await secondCell.click(); } const thirdCell = row.locator("td").nth(2); if (await thirdCell.count()) { await highlightAndExpectVisible(page, thirdCell); await thirdCell.click(); } await page.waitForTimeout(20); } }