Skip to content

Build & Test

Build & Test #1486

Triggered via merge group April 23, 2026 16:04
Status Success
Total duration 29m 43s
Artifacts 24

build-and-test.yaml

on: merge_group
Build Element Web
2m 30s
Build Element Web
Prepare Element Desktop  /  Prepare
47s
Prepare Element Desktop / Prepare
Matrix: playwright_ew
Downstream Playwright tests [element-modules]  /  Run Playwright end-to-end tests & upload html report
6m 17s
Downstream Playwright tests [element-modules] / Run Playwright end-to-end tests & upload html report
Matrix: Desktop Linux
Matrix: Desktop Windows
Desktop macOS  /  Build macOS Universal
14m 3s
Desktop macOS / Build macOS Universal
Desktop macOS  /  ...  /  Test macos
2m 1s
Desktop macOS / Test macOS Universal / Test macos
end-to-end-tests
35s
end-to-end-tests
Fit to window
Zoom out
Zoom in

Annotations

9 errors, 7 warnings, and 12 notices
[Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot: apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts#L103
1) [Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.blur: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.mx_Dialog').filter({ has: locator('.mx_RoomSettingsDialog') }).getByRole('spinbutton', { name: '@user_6496a26110e4309860ce-e6b187015ed0865317ce:localhost' }) 101 | const ourPl = settings.getByRole("spinbutton", { name: user.userId }); 102 | await ourPl.fill("80"); > 103 | await ourPl.blur(); // Shows a warning on | ^ 104 | 105 | // Accept the de-op 106 | await page.getByRole("button", { name: "Continue" }).click(); at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts:103:25
[Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot: apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts#L0
1) [Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot: apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts#L103
1) [Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot Error: locator.blur: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.mx_Dialog').filter({ has: locator('.mx_RoomSettingsDialog') }).getByRole('spinbutton', { name: '@user_6496a26110e4309860ce-e6b187015ed0865317ce:localhost' }) - locator resolved to <input max="100" value="100" type="number" id="mx_Field_5" label="@user_6496a26110e4309860ce-e6b187015ed0865317ce:localhost" placeholder="@user_6496a26110e4309860ce-e6b187015ed0865317ce:localhost"/> - element was detached from the DOM, retrying 101 | const ourPl = settings.getByRole("spinbutton", { name: user.userId }); 102 | await ourPl.fill("80"); > 103 | await ourPl.blur(); // Shows a warning on | ^ 104 | 105 | // Accept the de-op 106 | await page.getByRole("button", { name: "Continue" }).click(); at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts:103:25
[Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot: apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts#L0
1) [Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot Test timeout of 30000ms exceeded.
[Chrome] › playwright/e2e/sliding-sync/sliding-sync.spec.ts:225:5 › Sliding Sync › should show and be able to accept/reject/rescind invites: apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts#L41
3) [Chrome] › playwright/e2e/sliding-sync/sliding-sync.spec.ts:225:5 › Sliding Sync › should show and be able to accept/reject/rescind invites Error: expect(locator).toHaveText(expected) failed Locator: getByTestId('room-list').getByTestId('room-name') Timeout: 5000ms - Expected - 1 + Received + 1 Array [ - "Room to Rescind", "Room to Reject", + "Room to Rescind", ] Call log: - Expect "toHaveText" with timeout 5000ms - waiting for getByTestId('room-list').getByTestId('room-name') 3 × locator resolved to 3 elements 6 × locator resolved to 2 elements 39 | test.describe("Sliding Sync", () => { 40 | const checkOrder = async (wantOrder: string[], page: Page) => { > 41 | await expect(page.getByTestId("room-list").getByTestId("room-name")).toHaveText(wantOrder); | ^ 42 | }; 43 | 44 | const bumpRoom = async (roomId: string, app: ElementAppPage) => { at checkOrder (/home/runner/work/element-web/element-web/apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts:41:78) at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts:259:15
[Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:179:9 › OIDC Native › with force_verification on › continues to show verification prompt after cancelling device verification @no-firefox @no-webkit @screenshot: apps/web/playwright/e2e/oidc/oidc-native.spec.ts#L243
2) [Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:179:9 › OIDC Native › with force_verification on › continues to show verification prompt after cancelling device verification @no-firefox @no-webkit @screenshot Error: locator.click: Test timeout of 90000ms exceeded. Call log: - waiting for getByRole('button', { name: 'Start' }) - locator resolved to <button tabindex="0" role="button" data-size="md" data-kind="secondary" class="_button_1nw83_8 _has-icon_1nw83_60">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="mx_Dialog">…</div> from <div id="mx_Dialog_StaticContainer">…</div> subtree intercepts pointer events - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="mx_Dialog">…</div> from <div id="mx_Dialog_StaticContainer">…</div> subtree intercepts pointer events - retrying click action - waiting 100ms 165 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - <div class="mx_Dialog">…</div> from <div id="mx_Dialog_StaticContainer">…</div> subtree intercepts pointer events - retrying click action - waiting 500ms 241 | await deviceToVerifyPage.getByRole("button", { name: "Use another device" }).click(); 242 | await alreadyVerifiedDevicePage.getByRole("button", { name: "Start verification" }).click(); > 243 | await alreadyVerifiedDevicePage.getByRole("button", { name: "Start" }).click(); | ^ 244 | await alreadyVerifiedDevicePage.getByRole("button", { name: "They match" }).click(); 245 | await deviceToVerifyPage.getByRole("button", { name: "They match" }).click(); 246 | await alreadyVerifiedDevicePage.getByRole("button", { name: "Got it" }).click(); at verifyUsingOtherDevice (/home/runner/work/element-web/element-web/apps/web/playwright/e2e/oidc/oidc-native.spec.ts:243:76) at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/oidc/oidc-native.spec.ts:201:17
[Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:179:9 › OIDC Native › with force_verification on › continues to show verification prompt after cancelling device verification @no-firefox @no-webkit @screenshot: apps/web/playwright/e2e/oidc/oidc-native.spec.ts#L0
2) [Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:179:9 › OIDC Native › with force_verification on › continues to show verification prompt after cancelling device verification @no-firefox @no-webkit @screenshot Test timeout of 90000ms exceeded.
[Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:110:5 › OIDC Native › can log in to an existing MAS account @no-firefox @no-webkit @screenshot: apps/web/playwright/e2e/oidc/oidc-native.spec.ts#L134
1) [Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:110:5 › OIDC Native › can log in to an existing MAS account @no-firefox @no-webkit @screenshot Error: expect(locator).toBeVisible() failed Locator: getByText('Confirm your digital identity') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('Confirm your digital identity') 132 | 133 | // We should be in > 134 | await expect(page.getByText("Confirm your digital identity")).toBeVisible(); | ^ 135 | }); 136 | 137 | test.describe("with force_verification on", () => { at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/oidc/oidc-native.spec.ts:134:71
[Chrome] › playwright/e2e/audio-player/audio-player.spec.ts:263:5 › Audio player › should support creating a reply chain with multiple audio files @no-firefox @no-webkit @screenshot: apps/web/playwright/e2e/audio-player/audio-player.spec.ts#L22
1) [Chrome] › playwright/e2e/audio-player/audio-player.spec.ts:263:5 › Audio player › should support creating a reply chain with multiple audio files @no-firefox @no-webkit @screenshot Error: Test timeout of 90000ms exceeded 20 | await tile.hover(); 21 | await tile.getByRole("button", { name: "Reply", exact: true }).click(); > 22 | }).toPass(); | ^ 23 | await expect(tile.page().getByText("Replying", { exact: true })).toBeVisible(); 24 | }; 25 | at clickButtonReply (/home/runner/work/element-web/element-web/apps/web/playwright/e2e/audio-player/audio-player.spec.ts:22:8) at /home/runner/work/element-web/element-web/apps/web/playwright/e2e/audio-player/audio-player.spec.ts:291:19
Desktop Linux (system, amd64, true) / Build Linux amd64 SQLCipher system
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/
Desktop Linux (system, arm64, true) / Build Linux arm64 SQLCipher system
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/
Desktop Linux (static, arm64, true) / Build Linux arm64 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/
Desktop Linux (static, amd64, true) / 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/
Desktop Windows (arm64) / Build Windows arm64
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756, 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/
Desktop Windows (ia32) / Build Windows ia32
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756, 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/
Desktop Windows (x64) / Build Windows x64
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756, 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 6 passed (19.9s)
🎭 Playwright Run Summary
1 skipped 6 passed (19.8s)
🎭 Playwright Run Summary
1 skipped 6 passed (19.4s)
🎭 Playwright Run Summary
33 skipped 124 passed (12.6m)
🎭 Playwright Run Summary
1 skipped 6 passed (18.4s)
🎭 Playwright Run Summary
1 skipped 6 passed (19.6s)
🎭 Playwright Run Summary
1 flaky [Chrome] › playwright/e2e/settings/room-settings/room-security-tab.spec.ts:81:5 › Roles & Permissions room settings tab › should disallow changing from public to private if the user cannot alter history @screenshot 15 skipped 157 passed (16.0m)
🎭 Playwright Run Summary
1 skipped 6 passed (25.4s)
🎭 Playwright Run Summary
3 flaky [Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:110:5 › OIDC Native › can log in to an existing MAS account @no-firefox @no-webkit @screenshot [Chrome] › playwright/e2e/oidc/oidc-native.spec.ts:179:9 › OIDC Native › with force_verification on › continues to show verification prompt after cancelling device verification @no-firefox @no-webkit @screenshot [Chrome] › playwright/e2e/sliding-sync/sliding-sync.spec.ts:225:5 › Sliding Sync › should show and be able to accept/reject/rescind invites 2 skipped 164 passed (19.0m)
🎭 Playwright Run Summary
1 flaky [Chrome] › playwright/e2e/audio-player/audio-player.spec.ts:263:5 › Audio player › should support creating a reply chain with multiple audio files @no-firefox @no-webkit @screenshot 188 passed (20.3m)
🎭 Playwright Run Summary
1 skipped 6 passed (25.4s)
🎭 Playwright Run Summary
1 skipped 6 passed (23.0s)

Artifacts

Produced during runtime
Name Size Digest
blob-report-Chrome-1
8.26 MB
sha256:c3b21385a6a1a8853976c0ef3748d0c8a04c1addab7b8417165ee30ebfc01bbf
blob-report-Chrome-2
896 KB
sha256:4d47077c721c1b9e4bde533200b95319812a4cac1240bd59d2f8ab152ee02438
blob-report-Chrome-3
6.79 MB
sha256:b849638386d5bb3873aecbb588964aa3ec004faaed9fb80bbdeb5f9e0605c137
blob-report-Chrome-4
20.2 MB
sha256:94d1b61010a813718db312e891de116427672f0e78f06c997bd841914a959939
blob-report-linux-amd64-sqlcipher-static
19.8 KB
sha256:53a62a4f9bf62712b2c29271ec72ae9479c2440e165a476447af0788252e8798
blob-report-linux-amd64-sqlcipher-system
19.9 KB
sha256:72a5ca99145307a63bc7bdbf22f1019be21198cf1d73e24df5845fb600cf460a
blob-report-linux-arm64-sqlcipher-static
19.4 KB
sha256:adf8960458867b2ae143a5036319bc6224c050610b3829d05fa198ba2784df15
blob-report-linux-arm64-sqlcipher-system
20.1 KB
sha256:5f16ac057165a742d00567a8daec36b3b9eaae7c6a91eecf91ed31e9ce44dfb0
blob-report-macos
14.7 KB
sha256:6c157195bd38ada9602317ed5bf865a80fab8d60f31da9b2a8819b7c2096f772
blob-report-modules
214 KB
sha256:d2d1d45b8656d9bc3849e052b587546db838c47b5b37736b0f29df684e914497
blob-report-win-arm64
13.3 KB
sha256:752f5277a6e3472118bc6c46db915535dc6a597803ce0f9d831aee458e66ab5c
blob-report-win-ia32
13.3 KB
sha256:b83c491e0189c366d8a19ba32a48bb93fd2071e116ccd8f17b5328df1c9ed6dd
blob-report-win-x64
12.9 KB
sha256:95ae3458192898b685af8ea1b5f87fe182ab61b8dd4c0a6e0a5f9187f027fdd0
desktop-prepare
41.2 MB
sha256:0d85f84c3ce5db173cfcc469b77b46737a8acb9a36eaf51bee84c19b5d6f019a
html-report
34.5 MB
sha256:bc838c086aa8a0c15bed91d916642d430a2cf597723c2350220f30e3ee60886b
linux-amd64-sqlcipher-static
283 MB
sha256:b9d5cd953e97e330918a067806201ac616e97bb7e4f58d187caf718d99eb6026
linux-amd64-sqlcipher-system
280 MB
sha256:0887ef6c2915e3b5ef0f860b44d346603a93a0832bde8c1549a825c51f482f4a
linux-arm64-sqlcipher-static
278 MB
sha256:1d69b3c658680f2a6156f9fb26b3d62a2055df566be923817768a554a53132c9
linux-arm64-sqlcipher-system
275 MB
sha256:7f04908e66ea2442568a3b348fb20115e6234793bee40bffce58f12017ef2708
macos
505 MB
sha256:4da6624c4984e479f90411404e744d8ad985b719ae60509ec8c048824b2ced94
webapp
41.4 MB
sha256:53a9317d6ab47cada50284d1813c9d4a19c498496128097403b12ccc6937d3ce
win-arm64
691 MB
sha256:f3e60790202a12f1270ae8cae5414b01c03b08236fd1f2714506382369d01fd5
win-ia32
628 MB
sha256:dc40e2f39011fa5d4a30462a284de98f5e1bd00b9a894bcd23624a5c0ae84866
win-x64
702 MB
sha256:69e0f83ee8534bd51fcab202e24bbb50720173a1eb73cdb6d4e277d6795bfc14