reset db before each test to allow retrying
This commit is contained in:
@@ -1,4 +1,9 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { test, expect, Page } from "@playwright/test";
|
||||||
|
import { resetDatabase } from "./helpers";
|
||||||
|
|
||||||
|
test.beforeEach(async () => {
|
||||||
|
await resetDatabase();
|
||||||
|
});
|
||||||
|
|
||||||
test("cox can create and delete trip", async ({ page }) => {
|
test("cox can create and delete trip", async ({ page }) => {
|
||||||
await page.goto("/auth");
|
await page.goto("/auth");
|
||||||
@@ -16,22 +21,13 @@ test("cox can create and delete trip", async ({ page }) => {
|
|||||||
await page.getByRole("spinbutton").fill("5");
|
await page.getByRole("spinbutton").fill("5");
|
||||||
await page.getByRole("button", { name: "Erstellen", exact: true }).click();
|
await page.getByRole("button", { name: "Erstellen", exact: true }).click();
|
||||||
await expect(page.locator("body")).toContainText("18:00 Uhr (cox) Details");
|
await expect(page.locator("body")).toContainText("18:00 Uhr (cox) Details");
|
||||||
|
|
||||||
await page.goto("/planned");
|
|
||||||
await page.getByRole('link', { name: 'Details' }).nth(1).click();
|
|
||||||
await page.getByRole("link", { name: "Termin löschen" }).click();
|
|
||||||
await expect(page.locator("body")).toContainText("Erfolgreich gelöscht!");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: group -> cox can create trips
|
// TODO: group -> cox can create trips
|
||||||
// TODO: cox can help/register at trips/events
|
// TODO: cox can help/register at trips/events
|
||||||
|
|
||||||
test.describe("cox can edit trips", () => {
|
test.describe("cox can edit trips", () => {
|
||||||
let sharedPage: Page;
|
async function createTrip(page: Page) {
|
||||||
|
|
||||||
test.beforeAll(async ({ browser }) => {
|
|
||||||
const page = await browser.newPage();
|
|
||||||
|
|
||||||
await page.goto("/auth");
|
await page.goto("/auth");
|
||||||
await page.getByPlaceholder("Name").click();
|
await page.getByPlaceholder("Name").click();
|
||||||
await page.getByPlaceholder("Name").fill("cox");
|
await page.getByPlaceholder("Name").fill("cox");
|
||||||
@@ -46,151 +42,109 @@ test.describe("cox can edit trips", () => {
|
|||||||
await page.locator("#sidebar #planned_starting_time").press("Tab");
|
await page.locator("#sidebar #planned_starting_time").press("Tab");
|
||||||
await page.getByRole("spinbutton").fill("5");
|
await page.getByRole("spinbutton").fill("5");
|
||||||
await page.getByRole("button", { name: "Erstellen", exact: true }).click();
|
await page.getByRole("button", { name: "Erstellen", exact: true }).click();
|
||||||
|
}
|
||||||
|
|
||||||
sharedPage = page;
|
test("edit remarks", async ({ page }) => {
|
||||||
});
|
await createTrip(page);
|
||||||
|
|
||||||
test("edit remarks", async () => {
|
await page.goto("/planned");
|
||||||
await sharedPage.goto("/planned");
|
await page.getByRole('link', { name: 'Details' }).nth(1).click();
|
||||||
await sharedPage.getByRole('link', { name: 'Details' }).nth(1).click();
|
await page.locator("#sidebar #notes").click();
|
||||||
await sharedPage.locator("#sidebar #notes").click();
|
await page.locator("#sidebar #notes").fill("Meine Anmerkung");
|
||||||
await sharedPage.locator("#sidebar #notes").fill("Meine Anmerkung");
|
await page.getByRole("button", { name: "Speichern" }).click();
|
||||||
await sharedPage.getByRole("button", { name: "Speichern" }).click();
|
await page.getByRole("link", { name: "Details" }).nth(1).click();
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
await expect(page.locator("#sidebar")).toContainText(
|
||||||
await expect(sharedPage.locator("#sidebar")).toContainText(
|
|
||||||
"Meine Anmerkung",
|
"Meine Anmerkung",
|
||||||
);
|
);
|
||||||
|
|
||||||
await sharedPage
|
|
||||||
.getByRole("button", { name: "Ausfahrt erstellen schließen" })
|
|
||||||
.click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("add and remove guest", async () => {
|
test("add and remove guest", async ({ page }) => {
|
||||||
await sharedPage.goto("/planned");
|
await createTrip(page);
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
|
||||||
await sharedPage.locator("#sidebar #user_note").click();
|
await page.goto("/planned");
|
||||||
await sharedPage.locator("#sidebar #user_note").fill("Mein Gast");
|
await page.getByRole("link", { name: "Details" }).nth(1).click();
|
||||||
await sharedPage.getByRole("button", { name: "Gast hinzufügen" }).click();
|
await page.locator("#sidebar #user_note").click();
|
||||||
await expect(sharedPage.locator("body")).toContainText(
|
await page.locator("#sidebar #user_note").fill("Mein Gast");
|
||||||
|
await page.getByRole("button", { name: "Gast hinzufügen" }).click();
|
||||||
|
await expect(page.locator("body")).toContainText(
|
||||||
"Erfolgreich angemeldet!",
|
"Erfolgreich angemeldet!",
|
||||||
);
|
);
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
await page.getByRole("link", { name: "Details" }).nth(1).click();
|
||||||
await expect(sharedPage.locator("#sidebar")).toContainText(
|
await expect(page.locator("#sidebar")).toContainText(
|
||||||
"Freie Plätze: 4",
|
"Freie Plätze: 4",
|
||||||
);
|
);
|
||||||
await expect(sharedPage.locator("#sidebar")).toContainText(
|
await expect(page.locator("#sidebar")).toContainText(
|
||||||
"Mein Gast (Gast) Abmelden",
|
"Mein Gast (Gast) Abmelden",
|
||||||
);
|
);
|
||||||
await expect(
|
await expect(
|
||||||
sharedPage.getByRole("link", { name: "Termin löschen" }),
|
page.getByRole("link", { name: "Termin löschen" }),
|
||||||
).not.toBeVisible();
|
).not.toBeVisible();
|
||||||
|
|
||||||
await sharedPage.getByRole("link", { name: "Abmelden" }).click();
|
await page.getByRole("link", { name: "Abmelden" }).click();
|
||||||
await expect(sharedPage.locator("body")).toContainText(
|
await expect(page.locator("body")).toContainText(
|
||||||
"Erfolgreich abgemeldet!",
|
"Erfolgreich abgemeldet!",
|
||||||
);
|
);
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
await page.getByRole("link", { name: "Details" }).nth(1).click();
|
||||||
await expect(sharedPage.locator("#sidebar")).toContainText(
|
await expect(page.locator("#sidebar")).toContainText(
|
||||||
"Freie Plätze: 5",
|
"Freie Plätze: 5",
|
||||||
);
|
);
|
||||||
await expect(sharedPage.locator("#sidebar")).toContainText(
|
await expect(page.locator("#sidebar")).toContainText(
|
||||||
"Keine Ruderer angemeldet",
|
"Keine Ruderer angemeldet",
|
||||||
);
|
);
|
||||||
await expect(
|
await expect(
|
||||||
sharedPage.getByRole("link", { name: "Termin löschen" }),
|
page.getByRole("link", { name: "Termin löschen" }),
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
|
|
||||||
await sharedPage
|
|
||||||
.getByRole("button", { name: "Ausfahrt erstellen schließen" })
|
|
||||||
.click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("change amount rower", async () => {
|
test("change amount rower", async ({ page }) => {
|
||||||
await sharedPage.goto("/planned");
|
await createTrip(page);
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
|
||||||
await expect(sharedPage.locator("#sidebar")).toContainText(
|
await page.goto("/planned");
|
||||||
|
await page.getByRole("link", { name: "Details" }).nth(1).click();
|
||||||
|
await expect(page.locator("#sidebar")).toContainText(
|
||||||
"Freie Plätze: 5",
|
"Freie Plätze: 5",
|
||||||
);
|
);
|
||||||
await sharedPage.getByRole("spinbutton").click();
|
await page.getByRole("spinbutton").click();
|
||||||
await sharedPage.getByRole("spinbutton").fill("3");
|
await page.getByRole("spinbutton").fill("3");
|
||||||
await sharedPage.getByRole("button", { name: "Speichern" }).click();
|
await page.getByRole("button", { name: "Speichern" }).click();
|
||||||
await expect(sharedPage.locator("body")).toContainText(
|
await expect(page.locator("body")).toContainText(
|
||||||
"Ausfahrt erfolgreich aktualisiert.",
|
"Ausfahrt erfolgreich aktualisiert.",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("call off trip", async () => {
|
test("call off trip", async ({ page }) => {
|
||||||
|
await createTrip(page);
|
||||||
|
|
||||||
// Someone registers...
|
// Someone registers...
|
||||||
await sharedPage.goto("/auth/logout");
|
await page.goto("/auth/logout");
|
||||||
await sharedPage.goto("/auth");
|
await page.goto("/auth");
|
||||||
await sharedPage.getByPlaceholder("Name").click();
|
await page.getByPlaceholder("Name").click();
|
||||||
await sharedPage.getByPlaceholder("Name").fill("rower");
|
await page.getByPlaceholder("Name").fill("rower");
|
||||||
await sharedPage.getByPlaceholder("Name").press("Tab");
|
await page.getByPlaceholder("Name").press("Tab");
|
||||||
await sharedPage.getByPlaceholder("Passwort").fill("rower");
|
await page.getByPlaceholder("Passwort").fill("rower");
|
||||||
await sharedPage.getByPlaceholder("Passwort").press("Enter");
|
await page.getByPlaceholder("Passwort").press("Enter");
|
||||||
|
|
||||||
await sharedPage.goto("/planned");
|
|
||||||
await sharedPage.getByRole('link', { name: 'Mitrudern' }).nth(1).click();
|
|
||||||
|
|
||||||
|
await page.goto("/planned");
|
||||||
|
await page.getByRole('link', { name: 'Mitrudern' }).nth(1).click();
|
||||||
|
|
||||||
// Login as cox again
|
// Login as cox again
|
||||||
await sharedPage.goto("/auth/logout");
|
await page.goto("/auth/logout");
|
||||||
await sharedPage.goto("/auth");
|
await page.goto("/auth");
|
||||||
await sharedPage.getByPlaceholder("Name").click();
|
await page.getByPlaceholder("Name").click();
|
||||||
await sharedPage.getByPlaceholder("Name").fill("cox");
|
await page.getByPlaceholder("Name").fill("cox");
|
||||||
await sharedPage.getByPlaceholder("Name").press("Tab");
|
await page.getByPlaceholder("Name").press("Tab");
|
||||||
await sharedPage.getByPlaceholder("Passwort").fill("cox");
|
await page.getByPlaceholder("Passwort").fill("cox");
|
||||||
await sharedPage.getByPlaceholder("Passwort").press("Enter");
|
await page.getByPlaceholder("Passwort").press("Enter");
|
||||||
|
|
||||||
await sharedPage.goto("/planned");
|
await page.goto("/planned");
|
||||||
|
|
||||||
|
// Now cancel the trip
|
||||||
// ... now I can cancel trip
|
await page.getByRole("link", { name: "Details" }).nth(1).click();
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
await page.getByRole("button", { name: "Ausfahrt absagen" }).click();
|
||||||
await sharedPage.getByRole("button", { name: "Ausfahrt absagen" }).click();
|
await expect(page.locator("body")).toContainText(
|
||||||
await expect(sharedPage.locator("body")).toContainText(
|
|
||||||
"Ausfahrt erfolgreich aktualisiert.",
|
"Ausfahrt erfolgreich aktualisiert.",
|
||||||
);
|
);
|
||||||
await expect(sharedPage.locator("body")).toContainText("(Absage cox)");
|
await expect(page.locator("body")).toContainText("(Absage cox)");
|
||||||
|
|
||||||
|
|
||||||
// Done with the test -> cancel the cancellation of the trip, otherwise the afterAll function below fails
|
|
||||||
await sharedPage.getByRole("link", { name: "Details" }).nth(1).click();
|
|
||||||
await sharedPage.getByRole("spinbutton").click();
|
|
||||||
await sharedPage.getByRole("spinbutton").fill("3");
|
|
||||||
await sharedPage.getByRole("button", { name: "Speichern" }).click();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// deregistering
|
|
||||||
await sharedPage.goto("/auth/logout");
|
|
||||||
await sharedPage.goto("/auth");
|
|
||||||
await sharedPage.getByPlaceholder("Name").click();
|
|
||||||
await sharedPage.getByPlaceholder("Name").fill("rower");
|
|
||||||
await sharedPage.getByPlaceholder("Name").press("Tab");
|
|
||||||
await sharedPage.getByPlaceholder("Passwort").fill("rower");
|
|
||||||
await sharedPage.getByPlaceholder("Passwort").press("Enter");
|
|
||||||
|
|
||||||
await sharedPage.goto("/planned");
|
|
||||||
await sharedPage.getByRole('link', { name: 'Abmelden' }).click();
|
|
||||||
|
|
||||||
|
|
||||||
// now cox can delete trip again in afterAll
|
|
||||||
await sharedPage.goto("/auth/logout");
|
|
||||||
await sharedPage.goto("/auth");
|
|
||||||
await sharedPage.getByPlaceholder("Name").click();
|
|
||||||
await sharedPage.getByPlaceholder("Name").fill("cox");
|
|
||||||
await sharedPage.getByPlaceholder("Name").press("Tab");
|
|
||||||
await sharedPage.getByPlaceholder("Passwort").fill("cox");
|
|
||||||
await sharedPage.getByPlaceholder("Passwort").press("Enter");
|
|
||||||
});
|
|
||||||
|
|
||||||
test.afterAll(async () => {
|
|
||||||
await sharedPage.goto("/planned");
|
|
||||||
await sharedPage.getByRole('link', { name: 'Details' }).nth(1).click();
|
|
||||||
await sharedPage.getByRole("link", { name: "Termin löschen" }).click();
|
|
||||||
await sharedPage.close();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: 'Immer anzeigen' (also verify the functionality), 'Gesperrt' + type
|
// TODO: 'Immer anzeigen' (also verify the functionality), 'Gesperrt' + type
|
||||||
|
|||||||
8
frontend/tests/helpers.ts
Normal file
8
frontend/tests/helpers.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { exec } from 'child_process';
|
||||||
|
import { promisify } from 'util';
|
||||||
|
|
||||||
|
const execAsync = promisify(exec);
|
||||||
|
|
||||||
|
export async function resetDatabase(): Promise<void> {
|
||||||
|
await execAsync('cd .. && ./test_db.sh');
|
||||||
|
}
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { test, expect } from "@playwright/test";
|
||||||
|
import { resetDatabase } from "./helpers";
|
||||||
|
|
||||||
|
test.beforeEach(async () => {
|
||||||
|
await resetDatabase();
|
||||||
|
});
|
||||||
|
|
||||||
test("Cox can start and cancel trip", async ({ page }, testInfo) => {
|
test("Cox can start and cancel trip", async ({ page }, testInfo) => {
|
||||||
await page.goto("/auth");
|
await page.goto("/auth");
|
||||||
@@ -34,12 +39,6 @@ test("Cox can start and cancel trip", async ({ page }, testInfo) => {
|
|||||||
"Ausfahrt erfolgreich hinzugefügt",
|
"Ausfahrt erfolgreich hinzugefügt",
|
||||||
);
|
);
|
||||||
await expect(page.locator("body")).toContainText("Joe");
|
await expect(page.locator("body")).toContainText("Joe");
|
||||||
|
|
||||||
await page.getByRole("link", { name: "Joe" }).click();
|
|
||||||
page.once("dialog", (dialog) => {
|
|
||||||
dialog.accept().catch(() => {});
|
|
||||||
});
|
|
||||||
await page.getByRole("link", { name: "Löschen" }).click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Cox can start and finish trip", async ({ page }, testInfo) => {
|
test("Cox can start and finish trip", async ({ page }, testInfo) => {
|
||||||
@@ -102,28 +101,6 @@ test("Cox can start and finish trip", async ({ page }, testInfo) => {
|
|||||||
await expect(page.locator('body')).toContainText('(cox2)');
|
await expect(page.locator('body')).toContainText('(cox2)');
|
||||||
await expect(page.locator('body')).toContainText('Ottensheim (25 km)');
|
await expect(page.locator('body')).toContainText('Ottensheim (25 km)');
|
||||||
await expect(page.locator('body')).toContainText('Ruderer: cox2, rower2');
|
await expect(page.locator('body')).toContainText('Ruderer: cox2, rower2');
|
||||||
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.getByRole('banner').getByRole('link', { name: 'Logbuch' }).click();
|
|
||||||
await page.getByRole('link', { name: 'Ausloggen' }).click();
|
|
||||||
// Login as admin
|
|
||||||
await page.getByPlaceholder("Name").click();
|
|
||||||
await page.getByPlaceholder("Name").fill("main");
|
|
||||||
await page.getByPlaceholder("Name").press("Tab");
|
|
||||||
await page.getByPlaceholder("Passwort").fill("admin");
|
|
||||||
await page.getByPlaceholder("Passwort").press("Enter");
|
|
||||||
|
|
||||||
await page.goto("/log/show");
|
|
||||||
await page.getByRole('link', { name: 'Joe' }).nth(1).click();
|
|
||||||
page.once("dialog", (dialog) => {
|
|
||||||
dialog.accept().catch(() => {});
|
|
||||||
});
|
|
||||||
await page.getByRole('link', { name: 'Löschen' }).click();
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.getByRole('banner').getByRole('link', { name: 'Logbuch' }).click();
|
|
||||||
await page.getByRole('link', { name: 'Ausloggen' }).click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Kiosk can start and cancel trip", async ({ page }, testInfo) => {
|
test("Kiosk can start and cancel trip", async ({ page }, testInfo) => {
|
||||||
@@ -151,12 +128,6 @@ test("Kiosk can start and cancel trip", async ({ page }, testInfo) => {
|
|||||||
"Ausfahrt erfolgreich hinzugefügt",
|
"Ausfahrt erfolgreich hinzugefügt",
|
||||||
);
|
);
|
||||||
await expect(page.locator("body")).toContainText("Joe");
|
await expect(page.locator("body")).toContainText("Joe");
|
||||||
|
|
||||||
await page.getByRole("link", { name: "Joe" }).click();
|
|
||||||
page.once("dialog", (dialog) => {
|
|
||||||
dialog.accept().catch(() => {});
|
|
||||||
});
|
|
||||||
await page.getByRole("link", { name: "Löschen" }).click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Kiosk can start and finish trip", async ({ page }, testInfo) => {
|
test("Kiosk can start and finish trip", async ({ page }, testInfo) => {
|
||||||
@@ -210,29 +181,6 @@ test("Kiosk can start and finish trip", async ({ page }, testInfo) => {
|
|||||||
await expect(page.locator('body')).toContainText('Joe');
|
await expect(page.locator('body')).toContainText('Joe');
|
||||||
await expect(page.locator('body')).toContainText('Ottensheim (25 km)');
|
await expect(page.locator('body')).toContainText('Ottensheim (25 km)');
|
||||||
await expect(page.locator('body')).toContainText('Ruderer: cox2, rower2');
|
await expect(page.locator('body')).toContainText('Ruderer: cox2, rower2');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.context().clearCookies();
|
|
||||||
await page.goto("/auth");
|
|
||||||
// Login as admin
|
|
||||||
await page.getByPlaceholder("Name").click();
|
|
||||||
await page.getByPlaceholder("Name").fill("main");
|
|
||||||
await page.getByPlaceholder("Name").press("Tab");
|
|
||||||
await page.getByPlaceholder("Passwort").fill("admin");
|
|
||||||
await page.getByPlaceholder("Passwort").press("Enter");
|
|
||||||
|
|
||||||
await page.goto("/log/show");
|
|
||||||
await page.getByRole('link', { name: 'Joe' }).nth(1).click();
|
|
||||||
page.once("dialog", (dialog) => {
|
|
||||||
dialog.accept().catch(() => {});
|
|
||||||
});
|
|
||||||
await page.getByRole('link', { name: 'Löschen' }).click();
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.getByRole('banner').getByRole('link', { name: 'Logbuch' }).click();
|
|
||||||
await page.getByRole('link', { name: 'Ausloggen' }).click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Cox can start and finish trip with cox steering only", async ({ page }, testInfo) => {
|
test("Cox can start and finish trip with cox steering only", async ({ page }, testInfo) => {
|
||||||
@@ -286,29 +234,6 @@ test("Cox can start and finish trip with cox steering only", async ({ page }, te
|
|||||||
await page.goto('/log/show');
|
await page.goto('/log/show');
|
||||||
await expect(page.locator('body')).toContainText('cox_only_steering_boat');
|
await expect(page.locator('body')).toContainText('cox_only_steering_boat');
|
||||||
await expect(page.locator('body')).toContainText('Ottensheim (25 km)');
|
await expect(page.locator('body')).toContainText('Ottensheim (25 km)');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.getByRole('banner').getByRole('link', { name: 'Logbuch' }).click();
|
|
||||||
await page.getByRole('link', { name: 'Ausloggen' }).click();
|
|
||||||
// Login as admin
|
|
||||||
await page.getByPlaceholder("Name").click();
|
|
||||||
await page.getByPlaceholder("Name").fill("main");
|
|
||||||
await page.getByPlaceholder("Name").press("Tab");
|
|
||||||
await page.getByPlaceholder("Passwort").fill("admin");
|
|
||||||
await page.getByPlaceholder("Passwort").press("Enter");
|
|
||||||
|
|
||||||
await page.goto("/log/show");
|
|
||||||
await page.getByRole("link", { name: "cox_only_steering_boat" }).click();
|
|
||||||
page.once("dialog", (dialog) => {
|
|
||||||
dialog.accept().catch(() => {});
|
|
||||||
});
|
|
||||||
await page.getByRole('link', { name: 'Löschen' }).click();
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.getByRole('banner').getByRole('link', { name: 'Logbuch' }).click();
|
|
||||||
await page.getByRole('link', { name: 'Ausloggen' }).click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Kiosk can start and finish trip in one stop", async ({ page }, testInfo) => {
|
test("Kiosk can start and finish trip in one stop", async ({ page }, testInfo) => {
|
||||||
@@ -355,27 +280,4 @@ test("Kiosk can start and finish trip in one stop", async ({ page }, testInfo) =
|
|||||||
await expect(page.locator('body')).toContainText('(cox2)');
|
await expect(page.locator('body')).toContainText('(cox2)');
|
||||||
await expect(page.locator('body')).toContainText('a (1 km)');
|
await expect(page.locator('body')).toContainText('a (1 km)');
|
||||||
await expect(page.locator('body')).toContainText('Ruderer: cox2, rower2');
|
await expect(page.locator('body')).toContainText('Ruderer: cox2, rower2');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.context().clearCookies();
|
|
||||||
await page.goto("/auth");
|
|
||||||
// Login as admin
|
|
||||||
await page.getByPlaceholder("Name").click();
|
|
||||||
await page.getByPlaceholder("Name").fill("main");
|
|
||||||
await page.getByPlaceholder("Name").press("Tab");
|
|
||||||
await page.getByPlaceholder("Passwort").fill("admin");
|
|
||||||
await page.getByPlaceholder("Passwort").press("Enter");
|
|
||||||
|
|
||||||
await page.goto("/log/show");
|
|
||||||
await page.getByRole('link', { name: 'Joe' }).nth(1).click();
|
|
||||||
page.once("dialog", (dialog) => {
|
|
||||||
dialog.accept().catch(() => {});
|
|
||||||
});
|
|
||||||
await page.getByRole('link', { name: 'Löschen' }).click();
|
|
||||||
|
|
||||||
//Ausloggen...
|
|
||||||
await page.getByRole('banner').getByRole('link', { name: 'Logbuch' }).click();
|
|
||||||
await page.getByRole('link', { name: 'Ausloggen' }).click();
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user