Skip to content

Switch to rendering svg icons rather than css masking #13814

Switch to rendering svg icons rather than css masking

Switch to rendering svg icons rather than css masking #13814

Triggered via pull request December 12, 2025 11:05
Status Success
Total duration 17m 8s
Artifacts 8

end-to-end-tests.yaml

on: pull_request
Build Element-Web
3m 51s
Build Element-Web
Matrix: playwright
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
end-to-end-tests
1m 55s
end-to-end-tests
Fit to window
Zoom out
Zoom in

Annotations

5 errors and 6 notices
[Chrome] › playwright/e2e/room/create-room.spec.ts:62:9 › Create Room › should create a video room @screenshot: playwright/e2e/room/create-room.spec.ts#L75
1) [Chrome] › playwright/e2e/room/create-room.spec.ts:62:9 › Create Room › should create a video room @screenshot Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_CreateRoomDialog') 359 pixels (ratio 0.01 of all image pixels) are different. Snapshot: create-video-room.png Call log: - Expect "toHaveScreenshot(create-video-room.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx_CreateRoomDialog') - locator resolved to <div role="dialog" tabindex="-1" data-focus-lock-disabled="false" aria-labelledby="mx_BaseDialog_title" class="mx_CreateRoomDialog mx_Dialog_fixedWidth">…</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 - 359 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx_CreateRoomDialog') - locator resolved to <div role="dialog" tabindex="-1" data-focus-lock-disabled="false" aria-labelledby="mx_BaseDialog_title" class="mx_CreateRoomDialog mx_Dialog_fixedWidth">…</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 - 359 pixels (ratio 0.01 of all image pixels) are different. 73 | await dialog.getByRole("textbox", { name: "Room address" }).fill("test-create-room-video"); 74 | // Snapshot it > 75 | await expect(dialog).toMatchScreenshot("create-video-room.png"); | ^ 76 | 77 | // Submit 78 | await dialog.getByRole("button", { name: "Create video room" }).click(); at /home/runner/work/element-web/element-web/playwright/e2e/room/create-room.spec.ts:75:30
[Chrome] › playwright/e2e/timeline/timeline.spec.ts:1104:13 › Timeline › message sending › should display a reply chain @no-firefox @no-webkit @screenshot: playwright/e2e/timeline/timeline.spec.ts#L1189
1) [Chrome] › playwright/e2e/timeline/timeline.spec.ts:1104:13 › Timeline › message sending › should display a reply chain @no-firefox @no-webkit @screenshot Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx_EventTile_last') 41 pixels (ratio 0.01 of all image pixels) are different. Snapshot: event-tile-reply-chains-irc-modern.png Call log: - Expect "toHaveScreenshot(event-tile-reply-chains-irc-modern.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="true" data-event-id="$BpV-OvPSewtx30PJUf_cqp0Vnh1KcNSa8JWcJW6MpL4" data-scroll-tokens="$BpV-OvPSewtx30PJUf_cqp0Vnh1KcNSa8JWcJW6MpL4" class="mx_EventTile mx_EventTile_continuation mx_EventTile_last mx_EventTile_lastInSection">…</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 - 41 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="true" data-event-id="$BpV-OvPSewtx30PJUf_cqp0Vnh1KcNSa8JWcJW6MpL4" data-scroll-tokens="$BpV-OvPSewtx30PJUf_cqp0Vnh1KcNSa8JWcJW6MpL4" class="mx_EventTile mx_EventTile_continuation mx_EventTile_last mx_EventTile_lastInSection">…</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 - 41 pixels (ratio 0.01 of all image pixels) are different. 1187 | 1188 | // Take a snapshot on modern layout > 1189 | await expect(page.locator(".mx_EventTile_last")).toMatchScreenshot( | ^ 1190 | "event-tile-reply-chains-irc-modern.png", 1191 | screenshotOptions, 1192 | ); at /home/runner/work/element-web/element-web/playwright/e2e/timeline/timeline.spec.ts:1189:62
[Chrome] › playwright/e2e/crypto/toasts.spec.ts:35:9 › Key storage out of sync toast › should prompt for recovery key if 'enter recovery key' pressed @screenshot: playwright/e2e/crypto/toasts.spec.ts#L40
2) [Chrome] › playwright/e2e/crypto/toasts.spec.ts:35:9 › Key storage out of sync toast › should prompt for recovery key if 'enter recovery key' pressed @screenshot Error: expect(locator).toHaveScreenshot(expected) failed Locator: getByRole('alert').first() Timeout: 5000ms Timeout 5000ms exceeded. Snapshot: key-storage-out-of-sync-toast.png Call log: - Expect "toHaveScreenshot(key-storage-out-of-sync-toast.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for getByRole('alert').first() - locator resolved to <div role="alert" class="mx_NonUrgentToastContainer"></div> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action 2 × waiting for element to be stable - element is not visible - retrying scroll into view action - waiting 20ms 2 × waiting for element to be stable - element is not visible - retrying scroll into view action - waiting 100ms 9 × waiting for element to be stable - element is not visible - retrying scroll into view action - waiting 500ms - Timeout 5000ms exceeded. 38 | // it would always be checking the same toast, even if another one is now the first. 39 | await expect(page.getByRole("alert")).toHaveCount(2); > 40 | await expect(page.getByRole("alert").first()).toMatchScreenshot("key-storage-out-of-sync-toast.png"); | ^ 41 | 42 | await page.getByRole("button", { name: "Enter recovery key" }).click(); 43 | at /home/runner/work/element-web/element-web/playwright/e2e/crypto/toasts.spec.ts:40:55
[Chrome] › playwright/e2e/app-loading/stored-credentials.spec.ts:26:5 › Shows the last known page on reload: playwright/e2e/app-loading/stored-credentials.spec.ts#L42
1) [Chrome] › playwright/e2e/app-loading/stored-credentials.spec.ts:26:5 › Shows the last known page on reload Error: expect(page).toHaveURL(expected) failed Expected pattern: /\/#\/room\// Received string: "http://localhost:8080/#/home" Timeout: 5000ms Call log: - Expect "toHaveURL" with timeout 5000ms 9 × unexpected value "http://localhost:8080/#/home" 40 | 41 | // Check that the room reloaded > 42 | await expect(page).toHaveURL(/\/#\/room\//); | ^ 43 | await expect(page.locator(".mx_RoomHeader")).toContainText("Test Room"); 44 | }); 45 | at /home/runner/work/element-web/element-web/playwright/e2e/app-loading/stored-credentials.spec.ts:42:24
[Chrome] › playwright/e2e/widgets/permissions-dialog.spec.ts:49:9 › Widger permissions dialog › should be updated if user is re-invited into the room with updated state event @screenshot: playwright/e2e/widgets/permissions-dialog.spec.ts#L92
1) [Chrome] › playwright/e2e/widgets/permissions-dialog.spec.ts:49:9 › Widger permissions dialog › should be updated if user is re-invited into the room with updated state event @screenshot Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 55 - Array [] + Array [ + Object { + "description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies", + "help": "Interactive controls must not be nested", + "helpUrl": "https://dequeuniversity.com/rules/axe/4.11/nested-interactive?application=playwright", + "id": "nested-interactive", + "impact": "serious", + "nodes": Array [ + Object { + "all": Array [], + "any": Array [ + Object { + "data": null, + "id": "no-focusable-content", + "impact": "serious", + "message": "Element has focusable descendants", + "relatedNodes": Array [ + Object { + "html": "<button class=\"_icon-button_1pz9o_8\" role=\"button\" tabindex=\"0\" aria-disabled=\"false\" aria-label=\"More Options\" type=\"button\" id=\"radix-_r_23_\" aria-haspopup=\"menu\" aria-expanded=\"false\" data-state=\"closed\" data-kind=\"primary\" aria-labelledby=\"_r_25_\" style=\"--cpd-icon-button-size: 24px;\">", + "target": Array [ + "#radix-_r_23_", + ], + }, + Object { + "html": "<button class=\"_icon-button_1pz9o_8\" role=\"button\" tabindex=\"0\" aria-disabled=\"false\" aria-label=\"Notification options\" type=\"button\" id=\"radix-_r_2a_\" aria-haspopup=\"menu\" aria-expanded=\"false\" data-state=\"closed\" data-kind=\"primary\" aria-labelledby=\"_r_2c_\" style=\"--cpd-icon-button-si...\">", + "target": Array [ + "#radix-_r_2a_", + ], + }, + ], + }, + ], + "failureSummary": "Fix any of the following: + Element has focusable descendants", + "html": "<button type=\"button\" role=\"option\" aria-posinset=\"1\" aria-setsize=\"1\" aria-selected=\"true\" aria-label=\"Open room Demo\" tabindex=\"0\" data-state=\"closed\" aria-haspopup=\"menu\" class=\"_flex_4dswl_9 mx_Roo...\" style=\"--mx-flex-display: f...\">", + "impact": "serious", + "none": Array [], + "target": Array [ + ".mx_RoomListItemView", + ], + }, + ], + "tags": Array [ + "cat.keyboard", + "wcag2a", + "wcag412", + "TTv5", + "TT6.a", + "EN-301-549", + "EN-9.4.1.2", + "RGAAv4", + "RGAA-7.1.1", + ], + }, + ] 90 | 91 | axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. > 92 | await expect(axe).toHaveNoViolations(); | ^ 93 | await expect(page.locator(".mx_WidgetCapabilitiesPromptDialog")).toMatchScreenshot( 94 | "widget-capabilites-prompt.png", 95 | ); at /home/runner/work/element-web/element-web/playwright/e2e/widgets/permissions-dialog.spec.ts:92:31
🎭 Playwright Run Summary
2 skipped 78 passed (5.3m)
🎭 Playwright Run Summary
1 flaky [Chrome] › playwright/e2e/room/create-room.spec.ts:62:9 › Create Room › should create a video room @screenshot 1 skipped 76 passed (5.7m)
🎭 Playwright Run Summary
1 flaky [Chrome] › playwright/e2e/timeline/timeline.spec.ts:1104:13 › Timeline › message sending › should display a reply chain @no-firefox @no-webkit @screenshot 1 skipped 73 passed (7.4m)
🎭 Playwright Run Summary
2 flaky [Chrome] › playwright/e2e/app-loading/stored-credentials.spec.ts:26:5 › Shows the last known page on reload [Chrome] › playwright/e2e/crypto/toasts.spec.ts:35:9 › Key storage out of sync toast › should prompt for recovery key if 'enter recovery key' pressed @screenshot 78 passed (8.4m)
🎭 Playwright Run Summary
76 passed (8.3m)
🎭 Playwright Run Summary
1 flaky [Chrome] › playwright/e2e/widgets/permissions-dialog.spec.ts:49:9 › Widger permissions dialog › should be updated if user is re-invited into the room with updated state event @screenshot 70 passed (9.2m)

Artifacts

Produced during runtime
Name Size Digest
all-blob-reports-Chrome-1 Expired
13.3 MB
sha256:08f9263f4d23c59e108833ae075d06717cf18db3a322f60988a02c29fb74b698
all-blob-reports-Chrome-2 Expired
468 KB
sha256:d35a8f0b6a1de8574ff4dbcad2cdbb2c1c67af4056032ab0528ab67342b5639f
all-blob-reports-Chrome-3 Expired
419 KB
sha256:7f58d49f959e57b116241ba65da060a74e48c3f9efc0c3fa91721c1ddb1e1f66
all-blob-reports-Chrome-4 Expired
4.71 MB
sha256:ed68178247eb70d16aee6646aa22d0027c91e9e7883529577bbdb39b8b461f99
all-blob-reports-Chrome-5 Expired
5.31 MB
sha256:588f64858a9d73224e51093b32838f0f1d19438a03fae1e88061e208c3de3a4c
all-blob-reports-Chrome-6 Expired
5.12 MB
sha256:614d5a7c593c6c7154ae0dce74f75d50afefbb492f605a937e2572da650f0b26
html-report Expired
28.7 MB
sha256:a6cd230ed6fcf35f1f614130b5a3e4a4bfc5af81864523f49242dbf5f08727db
webapp Expired
40.2 MB
sha256:2689101732c1ac6945ef8147afe4d90a8484027226108e10351bf4938e312a81