* Tweak new user menu design * Update screenshots * More screenshots * Add story with no avatar * add story to test * Expand the menu so it actually shows what it's supposed to show * Use the open parameter which is the param to open the menu * snapshot * Add test for normal open menu version * Move menu to the right of the avatar and make it appear on top of the display name * Fix user menu layout * screenshots * snapshot * screenshots * more screenshots * Shift toasts to the left slightly So they completely cover the display name of the user menu when it's expanded. Also down slightly so they're level with the user menu. * Tweak toast border radius & position to match & sit on top of the user menu * Close toasts in cider tests * Only close the toast if it's actually there * Fix some toasts to be dismissed & update screenshots more to come though * Make closeKeyStorageToast actually optional * Fix some more toasts & races * Screenshots again again (again) * More screenshots * Convert to rejectToast * Fix toast rejectors to not wait and update screenshots * Apparently 1ms is not long enough
102 lines
4.0 KiB
TypeScript
102 lines
4.0 KiB
TypeScript
/*
|
|
Copyright 2024,2025 New Vector Ltd.
|
|
Copyright 2023 Suguru Hirahara
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import { rejectToast } from "@element-hq/element-web-playwright-common";
|
|
|
|
import { expect, test } from ".";
|
|
|
|
test.describe("Appearance user settings tab", () => {
|
|
test.use({
|
|
displayName: "Hanako",
|
|
});
|
|
|
|
test("should be rendered properly", { tag: "@screenshot" }, async ({ page, user, app, axe }) => {
|
|
await rejectToast(page, "Verify this device");
|
|
const tab = await app.settings.openUserSettings("Appearance");
|
|
|
|
// Click "Show advanced" link button
|
|
await tab.getByRole("button", { name: "Show advanced" }).click();
|
|
|
|
// Assert that "Hide advanced" link button is rendered
|
|
await expect(tab.getByRole("button", { name: "Hide advanced" })).toBeVisible();
|
|
|
|
await expect(tab).toMatchScreenshot("appearance-tab.png");
|
|
|
|
await expect(axe).toHaveNoViolations();
|
|
});
|
|
|
|
test(
|
|
"should support changing font size by using the font size dropdown",
|
|
{ tag: "@screenshot" },
|
|
async ({ page, app, user }) => {
|
|
await rejectToast(page, "Verify this device");
|
|
await app.settings.openUserSettings("Appearance");
|
|
|
|
const tab = page.getByTestId("mx_AppearanceUserSettingsTab");
|
|
const fontDropdown = tab.locator(".mx_FontScalingPanel_Dropdown");
|
|
await expect(fontDropdown.getByLabel("Font size")).toBeVisible();
|
|
|
|
// Default browser font size is 16px and the select value is 0
|
|
// -4 value is 12px
|
|
await fontDropdown.getByLabel("Font size").selectOption({ value: "-4" });
|
|
|
|
await expect(page).toMatchScreenshot("window-12px.png", { includeDialogBackground: true });
|
|
},
|
|
);
|
|
|
|
test("should support enabling system font", async ({ page, app, user }) => {
|
|
await rejectToast(page, "Verify this device");
|
|
await app.settings.openUserSettings("Appearance");
|
|
const tab = page.getByTestId("mx_AppearanceUserSettingsTab");
|
|
|
|
// Click "Show advanced" link button
|
|
await tab.getByRole("button", { name: "Show advanced" }).click();
|
|
|
|
await tab.getByRole("switch", { name: "Use bundled emoji font" }).click();
|
|
await tab.getByRole("switch", { name: "Use a system font" }).click();
|
|
|
|
// Assert that the font-family value was removed
|
|
await expect(page.locator("body")).toHaveCSS("font-family", '""');
|
|
});
|
|
|
|
test(
|
|
"should keep same font and emoji when switching theme",
|
|
{ tag: "@screenshot" },
|
|
async ({ page, app, user, util }) => {
|
|
await rejectToast(page, "Verify this device");
|
|
await rejectToast(page, "Notifications");
|
|
|
|
const roomId = await util.createAndDisplayRoom();
|
|
|
|
await app.client.sendMessage(roomId, { body: "Message with 🦡", msgtype: "m.text" });
|
|
|
|
await app.settings.openUserSettings("Appearance");
|
|
const tab = page.getByTestId("mx_AppearanceUserSettingsTab");
|
|
await tab.getByRole("button", { name: "Show advanced" }).click();
|
|
await tab.getByRole("switch", { name: "Use bundled emoji font" }).click();
|
|
await tab.getByRole("switch", { name: "Use a system font" }).click();
|
|
|
|
await app.closeDialog();
|
|
await expect(page).toMatchScreenshot("window-before-switch.png", {
|
|
mask: [page.locator(".mx_MessageTimestamp")],
|
|
});
|
|
|
|
// Switch to dark theme
|
|
await app.settings.openUserSettings("Appearance");
|
|
await util.getMatchSystemThemeSwitch().click();
|
|
await util.getDarkTheme().click();
|
|
|
|
await app.closeDialog();
|
|
// Font and emoji should remain the same after theme switch
|
|
await expect(page).toMatchScreenshot("window-after-switch.png", {
|
|
mask: [page.locator(".mx_MessageTimestamp")],
|
|
});
|
|
},
|
|
);
|
|
});
|