Skip to content

Refactor and redesign user menu #1470

Refactor and redesign user menu

Refactor and redesign user menu #1470

Triggered via pull request April 23, 2026 13:14
Status Failure
Total duration 20m 45s
Artifacts 9

build-and-test.yaml

on: pull_request
Build Element Web
2m 18s
Build Element Web
Prepare Element Desktop  /  Prepare
52s
Prepare Element Desktop / Prepare
Matrix: playwright_ew
Downstream Playwright tests [element-modules]  /  Run Playwright end-to-end tests & upload html report
Downstream Playwright tests [element-modules] / Run Playwright end-to-end tests & upload html report
Matrix: Desktop Linux
Matrix: Desktop Windows
Waiting for pending jobs
Desktop macOS  /  Build macOS Universal
Desktop macOS / Build macOS Universal
Desktop macOS  /  ...  /  test
Desktop macOS / Test macOS Universal / test
end-to-end-tests
30s
end-to-end-tests
Fit to window
Zoom out
Zoom in

Annotations

7 errors, 1 warning, and 5 notices
[Chrome] › playwright/e2e/left-panel/room-list-panel/room-list.spec.ts:185:13 › Room list › Room list › Shortcuts › should select the next unread room: apps/web/playwright/e2e/left-panel/room-list-panel/room-list.spec.ts#L200
1) [Chrome] › playwright/e2e/left-panel/room-list-panel/room-list.spec.ts:185:13 › Room list › Room list › Shortcuts › should select the next unread room Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: '1 notification', level: 1 }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: '1 notification', level: 1 }) 198 | await page.keyboard.press("Alt+Shift+ArrowDown"); 199 | > 200 | await expect(page.getByRole("heading", { name: "1 notification", level: 1 })).toBeVisible(); | ^ 201 | }); 202 | }); 203 | at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/left-panel/room-list-panel/room-list.spec.ts:200:95
Run Tests [Chrome] 4/4
Process completed with exit code 1.
[Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot: apps/web/playwright/e2e/app-loading/guest-registration.spec.ts#L41
1) [Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: getByRole('menu', { name: 'User menu' }) Expected an image 221px by 230px, received 219px by 314px. 10515 pixels (ratio 0.16 of all image pixels) are different. Snapshot: guest-menu.png Call log: - Expect "toHaveScreenshot(guest-menu.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for getByRole('menu', { name: 'User menu' }) - locator resolved to <div dir="ltr" role="menu" tabindex="-1" id="radix-_r_h_" data-state="open" data-side="bottom" data-align="start" aria-label="User menu" data-radix-menu-content="" aria-orientation="vertical" data-orientation="vertical" aria-labelledby="radix-_r_g_" class="_container_3x4xf_8 _menu_1kl3y_8">…</div> - 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 - Expected an image 221px by 230px, received 219px by 314px. 10515 pixels (ratio 0.16 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for getByRole('menu', { name: 'User menu' }) - locator resolved to <div dir="ltr" role="menu" tabindex="-1" id="radix-_r_h_" data-state="open" data-side="bottom" data-align="start" aria-label="User menu" data-radix-menu-content="" aria-orientation="vertical" data-orientation="vertical" aria-labelledby="radix-_r_g_" class="_container_3x4xf_8 _menu_1kl3y_8">…</div> - 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 - Expected an image 221px by 230px, received 219px by 314px. 10515 pixels (ratio 0.16 of all image pixels) are different. 39 | await page.waitForSelector(".mx_MatrixChat", { timeout: 30000 }); 40 | const menu = await app.openUserMenu(); > 41 | await expect(menu).toMatchScreenshot("guest-menu.png", screenshotOptions(page)); | ^ 42 | }); 43 | 44 | test("Room link correctly loads a room view", async ({ page }) => { at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/app-loading/guest-registration.spec.ts:41:24
[Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot: apps/web/playwright/e2e/app-loading/guest-registration.spec.ts#L41
1) [Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: getByRole('menu', { name: 'User menu' }) Expected an image 221px by 230px, received 219px by 314px. 10515 pixels (ratio 0.16 of all image pixels) are different. Snapshot: guest-menu.png Call log: - Expect "toHaveScreenshot(guest-menu.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for getByRole('menu', { name: 'User menu' }) - locator resolved to <div dir="ltr" role="menu" tabindex="-1" id="radix-_r_h_" data-state="open" data-side="bottom" data-align="start" aria-label="User menu" data-radix-menu-content="" aria-orientation="vertical" data-orientation="vertical" aria-labelledby="radix-_r_g_" class="_container_3x4xf_8 _menu_1kl3y_8">…</div> - 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 - Expected an image 221px by 230px, received 219px by 314px. 10515 pixels (ratio 0.16 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for getByRole('menu', { name: 'User menu' }) - locator resolved to <div dir="ltr" role="menu" tabindex="-1" id="radix-_r_h_" data-state="open" data-side="bottom" data-align="start" aria-label="User menu" data-radix-menu-content="" aria-orientation="vertical" data-orientation="vertical" aria-labelledby="radix-_r_g_" class="_container_3x4xf_8 _menu_1kl3y_8">…</div> - 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 - Expected an image 221px by 230px, received 219px by 314px. 10515 pixels (ratio 0.16 of all image pixels) are different. 39 | await page.waitForSelector(".mx_MatrixChat", { timeout: 30000 }); 40 | const menu = await app.openUserMenu(); > 41 | await expect(menu).toMatchScreenshot("guest-menu.png", screenshotOptions(page)); | ^ 42 | }); 43 | 44 | test("Room link correctly loads a room view", async ({ page }) => { at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/app-loading/guest-registration.spec.ts:41:24
[Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot: apps/web/playwright/e2e/app-loading/guest-registration.spec.ts#L41
1) [Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot Error: expect(locator).toHaveScreenshot(expected) failed Locator: getByRole('menu', { name: 'User menu' }) Expected an image 221px by 230px, received 219px by 314px. 10795 pixels (ratio 0.16 of all image pixels) are different. Snapshot: guest-menu.png Call log: - Expect "toHaveScreenshot(guest-menu.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for getByRole('menu', { name: 'User menu' }) - locator resolved to <div dir="ltr" role="menu" tabindex="-1" id="radix-_r_h_" data-state="open" data-side="bottom" data-align="start" aria-label="User menu" data-radix-menu-content="" aria-orientation="vertical" data-orientation="vertical" aria-labelledby="radix-_r_g_" class="_container_3x4xf_8 _menu_1kl3y_8">…</div> - 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 - Expected an image 221px by 230px, received 219px by 314px. 10795 pixels (ratio 0.16 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for getByRole('menu', { name: 'User menu' }) - locator resolved to <div dir="ltr" role="menu" tabindex="-1" id="radix-_r_h_" data-state="open" data-side="bottom" data-align="start" aria-label="User menu" data-radix-menu-content="" aria-orientation="vertical" data-orientation="vertical" aria-labelledby="radix-_r_g_" class="_container_3x4xf_8 _menu_1kl3y_8">…</div> - 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 - Expected an image 221px by 230px, received 219px by 314px. 10795 pixels (ratio 0.16 of all image pixels) are different. 39 | await page.waitForSelector(".mx_MatrixChat", { timeout: 30000 }); 40 | const menu = await app.openUserMenu(); > 41 | await expect(menu).toMatchScreenshot("guest-menu.png", screenshotOptions(page)); | ^ 42 | }); 43 | 44 | test("Room link correctly loads a room view", async ({ page }) => { at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/app-loading/guest-registration.spec.ts:41:24
end-to-end-tests
Process completed with exit code 1.
end-to-end-tests
1 tests failed, skipping stale screenshot reporter.
Desktop Linux (static, amd64, false) / Build Linux amd64 SQLCipher static
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: nbucic/variable-mapper@0673f6891a0619ba7c002ecfed0f9f4f39017b6f. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
1 skipped 130 passed (10.2m)
🎭 Playwright Run Summary
1 flaky [Chrome] › playwright/e2e/left-panel/room-list-panel/room-list.spec.ts:185:13 › Room list › Room list › Shortcuts › should select the next unread room 3 skipped 129 passed (11.7m)
🎭 Playwright Run Summary
135 passed (12.3m)
🎭 Playwright Run Summary
1 skipped 6 passed (21.2s)
🎭 Playwright Run Summary
1 failed [Chrome] › playwright/e2e/app-loading/guest-registration.spec.ts:37:1 › Shows the user menu for guests @screenshot 1 skipped 130 passed (16.8m)

Artifacts

Produced during runtime
Name Size Digest
blob-report-Chrome-1
829 KB
sha256:db922c96cf15c3e70a5e2a734dd584aeb74d90ef49c12c9681f461f968bcc46e
blob-report-Chrome-2
8.49 MB
sha256:12f984c8173bbde51604246add9d8b893c7502aa161e55f4e163928b42c93a32
blob-report-Chrome-3
1.55 MB
sha256:431f5d223135881d186da898f8932cf9928f50ac4ef5226770a4eebe8e16e255
blob-report-Chrome-4
4.11 MB
sha256:e6a01e83613b586689a668aa099ee6c921a21daf0525f4a4e2303ad02759418f
blob-report-linux-amd64-sqlcipher-static
58.2 KB
sha256:8af9217f48bbfdb8107f8df006e10f2170d5c3bdca2923496ddf10f63633b15d
desktop-prepare
41.2 MB
sha256:2932a63be9a27947c40d22e46aa2b7b649f6e21b4f3f325f315d495c6d718546
html-report
12.8 MB
sha256:b41914d1547464f3d495ed48a8a08685ed1ca4337215dde574e8662e23bb0c9c
linux-amd64-sqlcipher-static
284 MB
sha256:5d2584e28820c144ec0f53bed7fc08bd2b9918d701b6d934a0a5ba905e8e1c42
webapp
41.4 MB
sha256:1a4a6831f0ec9825dcaec29118e023dbe698df96a8a75b369e487261c5131a52