Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions playwright/e2e/messages/messages.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@
/* See readme.md for tips on writing these tests. */

import { type Locator, type Page } from "@playwright/test";
import { readFileSync } from "node:fs";

import { test, expect } from "../../element-web-test";

const MEDIA_FILE = readFileSync("playwright/sample-files/riot.png");

async function waitForMessageSentStatus(msgTile: Locator): Promise<void> {
await expect(msgTile.getByRole("status")).toHaveAccessibleName("Your message was sent");
}
Expand Down Expand Up @@ -208,3 +211,48 @@
});
});
});

test.describe("Message url previews", () => {
test.use({
displayName: "Alice",
room: async ({ user, app }, use) => {
const roomId = await app.client.createRoom({ name: "Test room" });
await use({ roomId });
},
});
test("should render a basic preview", { tag: "@screenshot" }, async ({ page, user, app, room }) => {
// TODO: This should be changed to _matrix/client/v1/media/preview_url when the matrix-js-sdk is updated.
await page.route("**/_matrix/media/v3/preview_url**", (route, request) => {
const requestedPage = new URL(request.url()).searchParams.get("url");
expect(requestedPage).toEqual("https://example.org/");
return route.fulfill({
json: {
"og:title": "A simple site",
},
});
});
await page.goto(`#/room/${room.roomId}`);
const msgTile = await sendMessage(page, "https://example.org");
await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible();
await expect(msgTile).toMatchScreenshot("preview-basic.png", screenshotOptions(page));

Check failure on line 237 in playwright/e2e/messages/messages.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 3/6

[Chrome] › playwright/e2e/messages/messages.spec.ts:223:5 › Message url previews › should render a basic preview @screenshot

1) [Chrome] › playwright/e2e/messages/messages.spec.ts:223:5 › Message url previews › should render a basic preview @screenshot Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 215 pixels (ratio 0.01 of all image pixels) are different. Snapshot: preview-basic.png Call log: - Expect "toHaveScreenshot(preview-basic.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$oKFhEGfUUhsCsWPFiYCsaxUepeBGcJcCXYBtiJagjTw" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$oKFhEGfUUhsCsWPFiYCsaxUepeBGcJcCXYBtiJagjTw">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 215 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$oKFhEGfUUhsCsWPFiYCsaxUepeBGcJcCXYBtiJagjTw" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$oKFhEGfUUhsCsWPFiYCsaxUepeBGcJcCXYBtiJagjTw">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 215 pixels (ratio 0.01 of all image pixels) are different. 235 | const msgTile = await sendMessage(page, "https://example.org"); 236 | await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible(); > 237 | await expect(msgTile).toMatchScreenshot("preview-basic.png", screenshotOptions(page)); | ^ 238 | }); 239 | test("should render a preview with a thumbnail", { tag: "@screenshot" }, async ({ page, user, bot, app, room }) => { 240 | const mxc = (await bot.uploadContent(MEDIA_FILE, { name: "image.png", type: "image/png" })).content_uri; at /home/runner/work/element-web/element-web/playwright/e2e/messages/messages.spec.ts:237:31

Check failure on line 237 in playwright/e2e/messages/messages.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 3/6

[Chrome] › playwright/e2e/messages/messages.spec.ts:223:5 › Message url previews › should render a basic preview @screenshot

1) [Chrome] › playwright/e2e/messages/messages.spec.ts:223:5 › Message url previews › should render a basic preview @screenshot Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 215 pixels (ratio 0.01 of all image pixels) are different. Snapshot: preview-basic.png Call log: - Expect "toHaveScreenshot(preview-basic.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$RQ6Vy-t_7rrT4vyO1zgxgl53U95Sz8gGBD7vpLmnR3E" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$RQ6Vy-t_7rrT4vyO1zgxgl53U95Sz8gGBD7vpLmnR3E">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 215 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$RQ6Vy-t_7rrT4vyO1zgxgl53U95Sz8gGBD7vpLmnR3E" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$RQ6Vy-t_7rrT4vyO1zgxgl53U95Sz8gGBD7vpLmnR3E">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 215 pixels (ratio 0.01 of all image pixels) are different. 235 | const msgTile = await sendMessage(page, "https://example.org"); 236 | await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible(); > 237 | await expect(msgTile).toMatchScreenshot("preview-basic.png", screenshotOptions(page)); | ^ 238 | }); 239 | test("should render a preview with a thumbnail", { tag: "@screenshot" }, async ({ page, user, bot, app, room }) => { 240 | const mxc = (await bot.uploadContent(MEDIA_FILE, { name: "image.png", type: "image/png" })).content_uri; at /home/runner/work/element-web/element-web/playwright/e2e/messages/messages.spec.ts:237:31

Check failure on line 237 in playwright/e2e/messages/messages.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 3/6

[Chrome] › playwright/e2e/messages/messages.spec.ts:223:5 › Message url previews › should render a basic preview @screenshot

1) [Chrome] › playwright/e2e/messages/messages.spec.ts:223:5 › Message url previews › should render a basic preview @screenshot Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 215 pixels (ratio 0.01 of all image pixels) are different. Snapshot: preview-basic.png Call log: - Expect "toHaveScreenshot(preview-basic.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$gMohUyZl29lN8Luo9C3Xlw9xYWTq6wVY1ZQRi1DBx9Y" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$gMohUyZl29lN8Luo9C3Xlw9xYWTq6wVY1ZQRi1DBx9Y">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 215 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$gMohUyZl29lN8Luo9C3Xlw9xYWTq6wVY1ZQRi1DBx9Y" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$gMohUyZl29lN8Luo9C3Xlw9xYWTq6wVY1ZQRi1DBx9Y">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 215 pixels (ratio 0.01 of all image pixels) are different. 235 | const msgTile = await sendMessage(page, "https://example.org"); 236 | await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible(); > 237 | await expect(msgTile).toMatchScreenshot("preview-basic.png", screenshotOptions(page)); | ^ 238 | }); 239 | test("should render a preview with a thumbnail", { tag: "@screenshot" }, async ({ page, user, bot, app, room }) => { 240 | const mxc = (await bot.uploadContent(MEDIA_FILE, { name: "image.png", type: "image/png" })).content_uri; at /home/runner/work/element-web/element-web/playwright/e2e/messages/messages.spec.ts:237:31
});
test("should render a preview with a thumbnail", { tag: "@screenshot" }, async ({ page, user, bot, app, room }) => {
const mxc = (await bot.uploadContent(MEDIA_FILE, { name: "image.png", type: "image/png" })).content_uri;
// TODO: This should be changed to _matrix/client/v1/media/preview_url when the matrix-js-sdk is updated.
await page.route("**/_matrix/media/v3/preview_url**", (route, request) => {
const requestedPage = new URL(request.url()).searchParams.get("url");
expect(requestedPage).toEqual("https://example.org/");
return route.fulfill({
json: {
"og:title": "A simple site",
"og:description": "And with a brief description",
"og:image": mxc,
},
});
});
await page.goto(`#/room/${room.roomId}`);
const msgTile = await sendMessage(page, "https://example.org");
await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible();
await expect(msgTile).toMatchScreenshot("preview-with-thumb.png", screenshotOptions(page));

Check failure on line 256 in playwright/e2e/messages/messages.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 3/6

[Chrome] › playwright/e2e/messages/messages.spec.ts:239:5 › Message url previews › should render a preview with a thumbnail @screenshot

2) [Chrome] › playwright/e2e/messages/messages.spec.ts:239:5 › Message url previews › should render a preview with a thumbnail @screenshot Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 286 pixels (ratio 0.01 of all image pixels) are different. Snapshot: preview-with-thumb.png Call log: - Expect "toHaveScreenshot(preview-with-thumb.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$HYHSp_dLvK33deL6Tz2KVGqbCiY05LNzQqaS4sftKFg" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$HYHSp_dLvK33deL6Tz2KVGqbCiY05LNzQqaS4sftKFg">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 286 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$HYHSp_dLvK33deL6Tz2KVGqbCiY05LNzQqaS4sftKFg" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$HYHSp_dLvK33deL6Tz2KVGqbCiY05LNzQqaS4sftKFg">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 286 pixels (ratio 0.01 of all image pixels) are different. 254 | const msgTile = await sendMessage(page, "https://example.org"); 255 | await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible(); > 256 | await expect(msgTile).toMatchScreenshot("preview-with-thumb.png", screenshotOptions(page)); | ^ 257 | }); 258 | }); 259 | at /home/runner/work/element-web/element-web/playwright/e2e/messages/messages.spec.ts:256:31

Check failure on line 256 in playwright/e2e/messages/messages.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 3/6

[Chrome] › playwright/e2e/messages/messages.spec.ts:239:5 › Message url previews › should render a preview with a thumbnail @screenshot

2) [Chrome] › playwright/e2e/messages/messages.spec.ts:239:5 › Message url previews › should render a preview with a thumbnail @screenshot Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 286 pixels (ratio 0.01 of all image pixels) are different. Snapshot: preview-with-thumb.png Call log: - Expect "toHaveScreenshot(preview-with-thumb.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$k0EMcrx3Pg2nCpKHdxQsE59OryIzLZSFHkr9iEvmaAo" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$k0EMcrx3Pg2nCpKHdxQsE59OryIzLZSFHkr9iEvmaAo">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 286 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$k0EMcrx3Pg2nCpKHdxQsE59OryIzLZSFHkr9iEvmaAo" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$k0EMcrx3Pg2nCpKHdxQsE59OryIzLZSFHkr9iEvmaAo">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 286 pixels (ratio 0.01 of all image pixels) are different. 254 | const msgTile = await sendMessage(page, "https://example.org"); 255 | await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible(); > 256 | await expect(msgTile).toMatchScreenshot("preview-with-thumb.png", screenshotOptions(page)); | ^ 257 | }); 258 | }); 259 | at /home/runner/work/element-web/element-web/playwright/e2e/messages/messages.spec.ts:256:31

Check failure on line 256 in playwright/e2e/messages/messages.spec.ts

View workflow job for this annotation

GitHub Actions / Run Tests [Chrome] 3/6

[Chrome] › playwright/e2e/messages/messages.spec.ts:239:5 › Message url previews › should render a preview with a thumbnail @screenshot

2) [Chrome] › playwright/e2e/messages/messages.spec.ts:239:5 › Message url previews › should render a preview with a thumbnail @screenshot Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 286 pixels (ratio 0.01 of all image pixels) are different. Snapshot: preview-with-thumb.png Call log: - Expect "toHaveScreenshot(preview-with-thumb.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$derm-1Foxv2fiJqvoUpm00Zl54O-mSg1ulm9-hmv6jY" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$derm-1Foxv2fiJqvoUpm00Zl54O-mSg1ulm9-hmv6jY">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 286 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_EventTile_last') - locator resolved to <li tabindex="-1" aria-live="off" data-self="true" aria-atomic="true" data-layout="group" data-has-reply="false" data-event-id="$derm-1Foxv2fiJqvoUpm00Zl54O-mSg1ulm9-hmv6jY" class="mx_EventTile mx_EventTile_last mx_EventTile_lastInSection" data-scroll-tokens="$derm-1Foxv2fiJqvoUpm00Zl54O-mSg1ulm9-hmv6jY">…</li> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 286 pixels (ratio 0.01 of all image pixels) are different. 254 | const msgTile = await sendMessage(page, "https://example.org"); 255 | await expect(msgTile.getByRole("link", { name: "A simple site" })).toBeVisible(); > 256 | await expect(msgTile).toMatchScreenshot("preview-with-thumb.png", screenshotOptions(page)); | ^ 257 | }); 258 | }); 259 | at /home/runner/work/element-web/element-web/playwright/e2e/messages/messages.spec.ts:256:31
});
});
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading