125 lines
4.0 KiB
TypeScript
125 lines
4.0 KiB
TypeScript
import type { Page } from "@playwright/test";
|
|
import { highlightAndExpectVisible } from "@playwright/utils/highlight";
|
|
import { navTest } from "@playwright/components/navTest";
|
|
import { headerTest } from "@/playwright/components/header/headerTest";
|
|
import { footerTest } from "@playwright/components/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);
|
|
}
|
|
}
|