better-chatbot / tests /user /user-name-sync.spec.ts
Bot
Initial commit for HF Spaces
05c5ed5
Raw
History Blame Contribute Delete
5.03 kB
import { test, expect } from "@playwright/test";
import { ensureSidebarOpen } from "../helpers/sidebar-helper";
test.describe("User Name Synchronization", () => {
test.use({ storageState: "tests/.auth/regular-user.json" });
test("should update sidebar name when user changes their own name", async ({
page,
}) => {
await page.goto("/");
await page.waitForLoadState("networkidle");
// Ensure sidebar is open
await ensureSidebarOpen(page);
// Get original name from sidebar
const userMenuButton = page.getByTestId("sidebar-user-button");
await userMenuButton.click();
// Wait for dropdown to be visible
await page.waitForSelector("[data-testid='sidebar-user-name']", {
state: "visible",
timeout: 5000,
});
const originalName = await page
.getByTestId("sidebar-user-name")
.textContent();
expect(originalName).toBeTruthy();
// Click on User Settings directly
const settingsOption = page.getByTestId("user-settings-menu-item");
await settingsOption.click();
// Wait for settings dialog to open
await page.waitForSelector("[data-testid='user-name-input']", {
state: "visible",
timeout: 5000,
});
// Update name
const newName = `Updated User ${Date.now()}`;
await page.getByTestId("user-name-input").clear();
await page.getByTestId("user-name-input").fill(newName);
// Click save and wait for success
await page.getByTestId("save-changes-button").click();
await page.waitForTimeout(1000);
// Close the settings dialog
await page.getByTestId("close-user-settings-button").click();
await page.waitForTimeout(500);
// Verify sidebar updated
await page.getByTestId("sidebar-user-button").click();
await page.waitForSelector("[data-testid='sidebar-user-name']", {
state: "visible",
timeout: 5000,
});
const updatedName = await page
.getByTestId("sidebar-user-name")
.textContent();
expect(updatedName).toBe(newName);
// Restore original name
await page.getByTestId("user-settings-menu-item").click();
await page.waitForSelector("[data-testid='user-name-input']", {
state: "visible",
timeout: 5000,
});
await page.getByTestId("user-name-input").clear();
await page
.getByTestId("user-name-input")
.fill(originalName || "Test Regular User");
await page.getByTestId("save-changes-button").click();
await page.waitForTimeout(1000);
await page.getByTestId("close-user-settings-button").click();
});
test("should update header name when admin changes their own name", async ({
browser,
}) => {
const context = await browser.newContext({
storageState: "tests/.auth/admin.json",
});
const page = await context.newPage();
await page.goto("/");
await page.waitForLoadState("networkidle");
// Ensure sidebar is open
await ensureSidebarOpen(page);
// Get original name from sidebar
const userMenuButton = page.getByTestId("sidebar-user-button");
await userMenuButton.click();
// Wait for dropdown to be visible
await page.waitForSelector("[data-testid='sidebar-user-name']", {
state: "visible",
timeout: 5000,
});
const originalName = await page
.getByTestId("sidebar-user-name")
.textContent();
expect(originalName).toBeTruthy();
// Click on User Settings directly
const settingsOption = page.getByTestId("user-settings-menu-item");
await settingsOption.click();
// Wait for settings dialog to open
await page.waitForSelector("[data-testid='user-name-input']", {
state: "visible",
timeout: 5000,
});
// Update name
const newAdminName = `Updated Admin ${Date.now()}`;
await page.getByTestId("user-name-input").clear();
await page.getByTestId("user-name-input").fill(newAdminName);
// Click save and wait for success
await page.getByTestId("save-changes-button").click();
await page.waitForTimeout(1000);
// Close the settings dialog
await page.getByTestId("close-user-settings-button").click();
await page.waitForTimeout(500);
// Verify sidebar updated
await page.getByTestId("sidebar-user-button").click();
await page.waitForSelector("[data-testid='sidebar-user-name']", {
state: "visible",
timeout: 5000,
});
const updatedName = await page
.getByTestId("sidebar-user-name")
.textContent();
expect(updatedName).toBe(newAdminName);
// Restore original name
await page.getByTestId("user-settings-menu-item").click();
await page.waitForSelector("[data-testid='user-name-input']", {
state: "visible",
timeout: 5000,
});
await page.getByTestId("user-name-input").clear();
await page
.getByTestId("user-name-input")
.fill(originalName || "Test Admin User");
await page.getByTestId("save-changes-button").click();
await page.waitForTimeout(1000);
await context.close();
});
});