Kuma/test/e2e/specs/multiple-users.spec.js

65 lines
2.4 KiB
JavaScript

import { expect, test } from "@playwright/test";
import { login, restoreSqliteSnapshot, screenshot } from "../util-test";
test.describe("Multiple Users", () => {
test.beforeEach(async ({ page }) => {
await restoreSqliteSnapshot(page);
});
test("test multiple users", async ({ page }, testInfo) => {
// Login as admin
await page.goto("./settings/users");
await login(page, "admin");
// Check if the user list contains only the admin user
await expect(page.getByTestId("users-list")).toHaveCount(1);
await screenshot(testInfo, page);
// Add a second user
await page.goto("./settings/users/add");
await expect(page.getByTestId("username-input")).toBeVisible();
await page.getByTestId("username-input").fill("newuser");
await page.getByTestId("password-input").fill("newuser123");
await page.getByTestId("password-repeat-input").fill("newuser123");
await page.getByTestId("submit-create-admin-form").click();
// Ensure the new user is created and visible in the user list
await page.waitForURL("./settings/users");
await expect(page.getByTestId("users-list")).toContainText("newuser");
await expect(page.getByTestId("users-list").locator("[data-testid='user-item']")).toHaveCount(2);
await screenshot(testInfo, page);
// Disable the admin user
await page.getByTestId("toggle-active-user-admin").click();
await page.getByRole("button", {
name: "Yes",
exact: true
}).click();
await expect(page.getByTestId("lost-connection")).toBeVisible();
// Make sure we're back on the login page after refresh
await page.reload();
await expect(page.getByText("Log in")).toBeVisible();
// Login as the new user
await page.goto("./dashboard"); // Assuming the new user has ID 2
await login(page, "newuser");
await screenshot(testInfo, page);
// Disable self-user
await page.goto("./settings/users/edit/2");
await page.getByTestId("active-checkbox").uncheck();
await expect(page.getByTestId("lost-connection")).toBeVisible();
await screenshot(testInfo, page);
// Make sure we're back on the login page after refresh
await page.reload();
await expect(page.getByText("Log in")).toBeVisible();
await screenshot(testInfo, page);
});
});