Files
blap/apps/web/playwright/e2e/links/topic.spec.ts
T
2026-05-26 07:44:43 +00:00

44 lines
1.7 KiB
TypeScript

/*
* Copyright 2026 Element Creations Ltd.
*
* 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 { test, expect } from "../../element-web-test";
test.describe("Topic links", () => {
test.use({
displayName: "Alice",
room: async ({ user, app, bot }, use) => {
const roomId = await app.client.createRoom({ name: "Test room" });
await use({ roomId });
},
});
for (const link of ["https://example.org", "ftp://example.org", "#aroom:example.org", "@alice:example.org"]) {
// Playwright treats '@' as a tag, so replace it to be safe
test(`should linkify plaintext '${link.replace("@", "_@")}'`, async ({ page, user, app, room }) => {
await app.client.sendStateEvent(
room.roomId,
"m.room.topic",
{
"m.topic": {
// Deliberately no HTML version.
"m.text": [
{
body: `An interesting room topic containing ${link}`,
},
],
},
"topic": `An interesting room topic containing ${link}`,
},
"",
);
await page.goto(`#/room/${room.roomId}`);
await expect(page.getByTestId("topic").getByRole("link", { name: link })).toBeVisible();
const locator = await app.toggleRoomInfoPanel();
await expect(locator.getByRole("link", { name: link })).toBeVisible();
});
}
});