Spaces:
Sleeping
Sleeping
| 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(); | |
| }); | |
| }); | |