Skip to content

Conversation

@markbrockhoff
Copy link
Collaborator

@markbrockhoff markbrockhoff commented Nov 25, 2025

TaskWPB-21987 [WEB/QA] POC - Use sharding to run e2e tests in parallel in CI

Pull Request

Summary

  • Build and run Testservice as part of CI
  • Shard playwright tests across multiple runners
  • Include regression tests when running tests
  • Fix script reporting test results as github comment to work with nested test suites

Security Checklist (required)

  • External inputs are validated & sanitized on client and/or server where applicable.
  • API responses are validated; unexpected shapes are handled safely (fallbacks or errors).
  • No unsafe HTML is rendered; if unavoidable, sanitization is applied and documented where it happens.
  • Injection risks (XSS/SQL/command) are prevented via safe APIs and/or escaping.

Standards Acknowledgement (required)


Notes for reviewers

  • I updated the node setup within the pipeline to respect the .nvmrc so we'll always use the same node version in CI as we do locally

@codecov
Copy link

codecov bot commented Nov 25, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 43.71%. Comparing base (20b716e) to head (4280c02).
⚠️ Report is 1 commits behind head on dev.

Additional details and impacted files
@@           Coverage Diff           @@
##              dev   #19807   +/-   ##
=======================================
  Coverage   43.71%   43.71%           
=======================================
  Files        1298     1298           
  Lines       32707    32707           
  Branches     7259     7259           
=======================================
+ Hits        14297    14298    +1     
  Misses      16693    16693           
+ Partials     1717     1716    -1     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 25, 2025

🔗 Download Full Report Artifact

🧪 Playwright Test Summary

  • Passed: 84
  • Failed: 17
  • Skipped: 5
  • 🔁 Flaky: 2
  • 📊 Total: 108
  • Total Runtime: 502.2s (~ 8 min 22 sec)

Failed Tests:

❌ I want to see collapsed view when app is narrow (tags: TC-48, regression)

Location: specs/Accessibility/Accessibility.spec.ts:128
Duration: 26910ms

Errors:

TimeoutError: locator.click: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="do-history-confirm"]')


   at pageManager/webapp/pages/infoHistory.page.ts:42

  40 |
  41 |   async clickConfirmButton() {
> 42 |     await this.continueButton.click();
     |                               ^
  43 |   }
  44 | }
  45 |
    at HistoryInfoPage.clickConfirmButton (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/infoHistory.page.ts:42:31)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Accessibility/Accessibility.spec.ts:135:31
❌ I should not lose a drafted message when switching between conversations in collapsed view (tags: TC-51, regression)

Location: specs/Accessibility/Accessibility.spec.ts:141
Duration: 27093ms

Errors:

TimeoutError: locator.click: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="do-history-confirm"]')


   at pageManager/webapp/pages/infoHistory.page.ts:42

  40 |
  41 |   async clickConfirmButton() {
> 42 |     await this.continueButton.click();
     |                               ^
  43 |   }
  44 | }
  45 |
    at HistoryInfoPage.clickConfirmButton (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/infoHistory.page.ts:42:31)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Accessibility/Accessibility.spec.ts:150:33
❌ I should not be able to change email of user managed by SCIM (tags: TC-60, regression)

Location: specs/AccountSettingsSpecs/accountSettings.spec.ts:87
Duration: 88581ms

Errors:

TimeoutError: locator.waitFor: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="go-preferences"]') to be visible


   at pageManager/webapp/components/conversationSidebar.component.ts:64

  62 |
  63 |   async isPageLoaded() {
> 64 |     await this.preferencesButton.waitFor({state: 'visible', timeout: this.pageLoadingTimeout});
     |                                  ^
  65 |   }
  66 |
  67 |   async clickArchive() {
    at ConversationSidebar.isPageLoaded (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/components/conversationSidebar.component.ts:64:34)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/AccountSettingsSpecs/accountSettings.spec.ts:115:46
❌ Verify links to manage and create teams are shown when logged in as team owner (tags: TC-1723, regression)

Location: specs/AccountSettingsSpecs/accountSettings.spec.ts:159
Duration: 27071ms

Errors:

Error: expect(received).toBe(expected) // Object.is equality

Expected: "https://wire-teams-dev.zinfra.io/login/"
Received: "https://wire-teams-staging.zinfra.io/login/"

  166 |
  167 |       await expect(components.conversationSidebar().manageTeamButton).toBeVisible();
> 168 |       expect(await components.conversationSidebar().manageTeamButton.getAttribute('href')).toBe(
      |                                                                                            ^
  169 |         'https://wire-teams-dev.zinfra.io/login/',
  170 |       );
  171 |     },
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/AccountSettingsSpecs/accountSettings.spec.ts:168:92
❌ Web: App should not lock if I switch back to webapp tab in time (during inactivity timeout) (tags: TC-2752, TC-2753, regression)

Location: specs/AppLock/AppLock.spec.ts:60
Duration: 70401ms

Errors:

Error: expect(locator).toBeVisible() failed

Locator: locator('[data-uie-name=\'applock-modal\'] [data-uie-name=\'applock-modal-header\']')
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - Expect "toBeVisible" with timeout 10000ms
  - waiting for locator('[data-uie-name=\'applock-modal\'] [data-uie-name=\'applock-modal-header\']')


  80 |         await unrelatedPage.waitForTimeout(31_000);
  81 |         await webappPageA.bringToFront();
> 82 |         await expect(modals.appLock().appLockModalHeader).toBeVisible();
     |                                                           ^
  83 |       });
  84 |     },
  85 |   );
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/AppLock/AppLock.spec.ts:82:59
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/AppLock/AppLock.spec.ts:77:7
❌ I want to be asked to share telemetry data when I log in (tags: TC-8780, regression)

Location: specs/Authentication/authentication.spec.ts:48
Duration: 15184ms

Errors:

Error: expect(locator).toBeVisible() failed

Locator: locator('[data-uie-name="primary-modals-container"][aria-label=\'Consent to share user data\']').locator('[data-uie-name="status-modal-title"]')
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - Expect "toBeVisible" with timeout 10000ms
  - waiting for locator('[data-uie-name="primary-modals-container"][aria-label=\'Consent to share user data\']').locator('[data-uie-name="status-modal-title"]')


  56 |       await pages.login().login(user);
  57 |
> 58 |       await expect(modals.dataShareConsent().modalTitle).toBeVisible();
     |                                                          ^
  59 |     },
  60 |   );
  61 |
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Authentication/authentication.spec.ts:58:58
❌ Verify 1on1 conversation is not created on the second end after you ignore connection request (tags: TC-365, TC-369, TC-370, TC-371, regression)

Location: specs/Connections/Connections.spec.ts:36
Duration: 52555ms

Errors:

TimeoutError: locator.click: Timeout 20000ms exceeded.
Call log:
  - waiting for getByTestId('[data-uie-name=\'primary-modals-container\']').getByTestId('do-action')


   at pageManager/webapp/modals/base.modal.ts:60

  58 |
  59 |   async clickAction() {
> 60 |     await this.actionButton.click();
     |                             ^
  61 |   }
  62 | }
  63 |
    at CancelRequestModal.clickAction (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/modals/base.modal.ts:60:29)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Connections/Connections.spec.ts:60:38
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Connections/Connections.spec.ts:58:7
❌ Account Management (tags: TC-8639, crit-flow-web)

Location: specs/CriticalFlow/accountManagement-TC-8639.spec.ts:37
Duration: 90842ms

Errors:

Test timeout of 90000ms exceeded.
❌ Team owner adds whole team to an all team chat (tags: TC-8631, crit-flow-web)

Location: specs/CriticalFlow/addMembersToChat-TC-8631.spec.ts:43
Duration: 91472ms

Errors:

Test timeout of 90000ms exceeded.
Error: expect(locator).toBeVisible() failed

Locator: locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Hello from Freddie!' }).locator('[data-uie-name="message-reactions"]').locator('[data-uie-name="emoji-pill"][title="heart"]')
Expected: visible
Error: element(s) not found

Call log:
  - Expect "toBeVisible" with timeout 10000ms
  - waiting for locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Hello from Freddie!' }).locator('[data-uie-name="message-reactions"]').locator('[data-uie-name="emoji-pill"][title="heart"]')


  185 |       await pages.conversationList().openConversation(conversationName);
  186 |       const ownerMessage = pages.conversation().getMessage({content: `Hello from ${owner.firstName}!`});
> 187 |       await expect(pages.conversation().getReactionOnMessage(ownerMessage, 'heart')).toBeVisible();
      |                                                                                      ^
  188 |       await expect(pages.conversation().getReactionOnMessage(ownerMessage, 'joy')).toBeVisible();
  189 |
  190 |       // Member1 verifies they can see thumbs up (+1) and joy (😂) reactions on their message from owner and member2
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/addMembersToChat-TC-8631.spec.ts:187:86
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/addMembersToChat-TC-8631.spec.ts:183:5
❌ Channels Management (tags: TC-8752, crit-flow-web)

Location: specs/CriticalFlow/channelsManagement-TC-8752.spec.ts:37
Duration: 64393ms

Errors:

TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('#conversation-details') to be visible


   at pageManager/webapp/pages/conversationDetails.page.ts:46

  44 |
  45 |   async waitForSidebar() {
> 46 |     await this.conversationDetails.waitFor({state: 'visible'});
     |                                    ^
  47 |   }
  48 |
  49 |   async isOpen(conversationName: string) {
    at ConversationDetailsPage.waitForSidebar (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversationDetails.page.ts:46:36)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsManagement-TC-8752.spec.ts:124:39
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsManagement-TC-8752.spec.ts:121:3
❌ Planning group call with sending various messages during call (tags: TC-8632, crit-flow-web)

Location: specs/CriticalFlow/groupCalls-TC-8632.spec.ts:37
Duration: 40055ms

Errors:

Error: expect(received).toBeFalsy()

Received: true

  122 |       await memberCalling.unmuteSelfInFullScreen();
  123 |       await memberPageManager.waitForTimeout(250);
> 124 |       expect(await memberCalling.isSelfUserMutedInFullScreen()).toBeFalsy();
      |                                                                 ^
  125 |     });
  126 |
  127 |     await test.step('Validation: Owner sees member is unmuted', async () => {
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupCalls-TC-8632.spec.ts:124:65
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupCalls-TC-8632.spec.ts:121:5
❌ Group Video call (tags: TC-8637, crit-flow-web)

Location: specs/CriticalFlow/groupVideoCall-TC-8637.spec.ts:39
Duration: 56470ms

Errors:

TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('#add-participants [data-uie-name="search-list"] [aria-label="Open profile of Delta Breitenberg"]').locator('input[type="checkbox"]')


   at pageManager/webapp/pages/conversationDetails.page.ts:70

  68 |       await userLocator.click();
  69 |       // Wait for the user to be selected (checkbox should be checked)
> 70 |       await userLocator.locator('input[type="checkbox"]').waitFor({state: 'attached'});
     |                                                           ^
  71 |     }
  72 |
  73 |     await this.page.locator(`${selectById('add-participants')} ${selectByDataAttribute('do-create')}`).click();
    at ConversationDetailsPage.addUsersToConversation (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversationDetails.page.ts:70:59)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupVideoCall-TC-8637.spec.ts:127:7
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupVideoCall-TC-8637.spec.ts:123:5
❌ New person joins team and setups up device (tags: TC-8635, crit-flow-web)

Location: specs/CriticalFlow/joinTeam-TC-8635.spec.ts:38
Duration: 80396ms

Errors:

TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('#add-participants [data-uie-name="search-list"] [aria-label="Open profile of Gayle Howe"]').locator('input[type="checkbox"]')


   at pageManager/webapp/pages/conversationDetails.page.ts:70

  68 |       await userLocator.click();
  69 |       // Wait for the user to be selected (checkbox should be checked)
> 70 |       await userLocator.locator('input[type="checkbox"]').waitFor({state: 'attached'});
     |                                                           ^
  71 |     }
  72 |
  73 |     await this.page.locator(`${selectById('add-participants')} ${selectByDataAttribute('do-create')}`).click();
    at ConversationDetailsPage.addUsersToConversation (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversationDetails.page.ts:70:59)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/joinTeam-TC-8635.spec.ts:125:7
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/joinTeam-TC-8635.spec.ts:114:5
❌ I can see the changed message was edited from another user (tags: TC-692, regression)

Location: specs/Edit/edit.spec.ts:175
Duration: 46291ms

Errors:

TimeoutError: locator.hover: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ has: locator('.content-message-wrapper[aria-label*="Brisa Mohr"]') })


   at pageManager/webapp/pages/conversation.page.ts:251

  249 |    */
  250 |   async openMessageOptions(message: Locator) {
> 251 |     await message.hover();
      |                   ^
  252 |     await message.getByTestId('message-actions').getByTestId('go-options').click();
  253 |     // The context menu containing the edit button is positioned globally as an overlay
  254 |     return this.page.getByRole('menu');
    at ConversationPage.openMessageOptions (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversation.page.ts:251:19)
    at ConversationPage.editMessage (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversation.page.ts:259:29)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Edit/edit.spec.ts:191:39
❌ Block specs (tags: TC-141, regression)

Location: specs/RegressionSpecs/block-messages.spec.ts:32
Duration: 44484ms

Errors:

TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="item-user"] [data-uie-name="status-username"]').first() to be visible


   at pageManager/webapp/pages/startUI.page.ts:51

  49 |
  50 |   private async clickUserFromSearchResults(username: string) {
> 51 |     await this.searchResults.first().waitFor({state: 'visible'});
     |                                      ^
  52 |
  53 |     const timeout = 30000;
  54 |     const delayBetweenAttempts = 500;
    at StartUIPage.clickUserFromSearchResults (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/startUI.page.ts:51:38)
    at StartUIPage.selectUser (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/startUI.page.ts:43:16)
    at StartUIPage.selectUsers (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/startUI.page.ts:37:7)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/RegressionSpecs/block-messages.spec.ts:73:5
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/RegressionSpecs/block-messages.spec.ts:69:3
❌ I want to see a placeholder text as quote when original message is not available anymore (tags: TC-2994, regression)

Location: specs/Reply/reply.spec.ts:60
Duration: 48124ms

Errors:

TimeoutError: locator.hover: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Test' }).filter({ has: locator('.content-message-wrapper[aria-label*="Myrtie Hoeger"]') })


   at pageManager/webapp/pages/conversation.page.ts:251

  249 |    */
  250 |   async openMessageOptions(message: Locator) {
> 251 |     await message.hover();
      |                   ^
  252 |     await message.getByTestId('message-actions').getByTestId('go-options').click();
  253 |     // The context menu containing the edit button is positioned globally as an overlay
  254 |     return this.page.getByRole('menu');
    at ConversationPage.openMessageOptions (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversation.page.ts:251:19)
    at ConversationPage.deleteMessage (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversation.page.ts:269:29)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Reply/reply.spec.ts:79:39
❌ I should not be able to send a reply after I got removed from the conversation (tags: TC-3014, regression)

Location: specs/Reply/reply.spec.ts:288
Duration: 34309ms

Errors:

Error: expect(locator).toBeVisible() failed

Locator: locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Oswald Gutmann removed you' })
Expected: visible
Timeout: 10000ms
Error: element(s) not found

Call log:
  - Expect "toBeVisible" with timeout 10000ms
  - waiting for locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Oswald Gutmann removed you' })


  308 |       await userAPages.conversation().removeMemberFromGroup(userB.fullName);
  309 |       await new ConfirmModal(userAPages.conversation().page).clickAction();
> 310 |       await expect(userBPages.conversation().getMessage({content: `${userA.fullName} removed you`})).toBeVisible();
      |                                                                                                      ^
  311 |
  312 |       await message.hover();
  313 |       await expect(message.getByTestId('do-reply-message')).not.toBeAttached();
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Reply/reply.spec.ts:310:102

Flaky Tests:

⚠️ Verify current browser is set as temporary device (tags: TC-3460, regression)

Location: specs/Authentication/authentication.spec.ts:76

Attempt 1
Result: ❌ Failed
Duration: 35850ms

Errors:

TimeoutError: locator.click: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="go-preferences"]')


   at pageManager/webapp/components/conversationSidebar.component.ts:52

  50 |
  51 |   async clickPreferencesButton() {
> 52 |     await this.preferencesButton.click();
     |                                  ^
  53 |   }
  54 |
  55 |   async clickAllConversationsButton() {
    at ConversationSidebar.clickPreferencesButton (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/components/conversationSidebar.component.ts:52:34)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Authentication/authentication.spec.ts:110:48
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Authentication/authentication.spec.ts:109:18

Attempt 2
Result: ✅ Passed
Duration: 31455ms

⚠️ Make sure user does not see data of user of previous sessions on same browser (tags: TC-1311, regression)

Location: specs/Authentication/authentication.spec.ts:192

Attempt 1
Result: ❌ Failed
Duration: 2497ms

Errors:

AxiosError: Request failed with status code 409

   at backend/userRepository.e2e.ts:35

  33 |
  34 |   public async setUniqueUsername(username: string, token: string) {
> 35 |     await this.axiosInstance.put(
     |     ^
  36 |       'self/handle',
  37 |       {handle: username},
  38 |       {
    at settle (/home/runner/work/wire-webapp/wire-webapp/node_modules/axios/lib/core/settle.js:19:12)
    at Unzip.handleStreamEnd (/home/runner/work/wire-webapp/wire-webapp/node_modules/axios/lib/adapters/http.js:599:11)
    at Axios.request (/home/runner/work/wire-webapp/wire-webapp/node_modules/axios/lib/core/Axios.js:45:41)
    at UserRepositoryE2E.setUniqueUsername (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/backend/userRepository.e2e.ts:35:5)
    at ApiManagerE2E.createPersonalUser (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/backend/apiManager.e2e.ts:91:5)
    at createUser (/home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/test.fixtures.ts:180:3)
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/test.fixtures.ts:125:15
    at /home/runner/work/wire-webapp/wire-webapp/test/e2e_tests/specs/Authentication/authentication.spec.ts:197:20

Attempt 2
Result: ✅ Passed
Duration: 42115ms

@markbrockhoff markbrockhoff force-pushed the ci/poc-shard-playwright-tests branch 5 times, most recently from 0c402c9 to 9767bf3 Compare November 25, 2025 16:05
@markbrockhoff markbrockhoff marked this pull request as ready for review November 25, 2025 16:05
@markbrockhoff markbrockhoff requested review from a team and otto-the-bot as code owners November 25, 2025 16:05
@markbrockhoff markbrockhoff changed the title ci: shard playwright tests across multiple runners ci(WPB-21987): shard playwright tests across multiple runners Nov 25, 2025
@markbrockhoff markbrockhoff force-pushed the ci/poc-shard-playwright-tests branch 3 times, most recently from 5da27da to 9ae6140 Compare December 2, 2025 10:23
@markbrockhoff markbrockhoff force-pushed the ci/poc-shard-playwright-tests branch from d8882bd to a32b981 Compare December 2, 2025 12:58
nkaramarko
nkaramarko previously approved these changes Dec 2, 2025
@markbrockhoff markbrockhoff force-pushed the ci/poc-shard-playwright-tests branch from 8bb15f0 to 350a308 Compare December 3, 2025 09:25
@markbrockhoff markbrockhoff force-pushed the ci/poc-shard-playwright-tests branch from 350a308 to ac72e2d Compare December 3, 2025 09:32
@sonarqubecloud
Copy link

sonarqubecloud bot commented Dec 3, 2025

@markbrockhoff markbrockhoff merged commit 4577eed into dev Dec 3, 2025
13 checks passed
@markbrockhoff markbrockhoff deleted the ci/poc-shard-playwright-tests branch December 3, 2025 09:52
e-maad pushed a commit that referenced this pull request Dec 3, 2025
* refactor: use nvmrc to select node version

* feat: add job to build test service

* feat: shard tests across multiple runners with integrated testservice & job to collect reports

* fix: build shadowJar of testservice

* fix: generate json report when merging blobs

* refactor: only download chrome browser for tests

* ci: use github reporter in CI

* fix: re-use playwright config when merging reports to generate json report for PR comment

* refactor: don't pass github user and token when building testservice

* feat: use 16 runners for sharding

* feat: execute regression tests in addition to critical flow

* fix: make script for reporting playwright summary work with nested test suites

* chore: use SHA for third party actions

(So Sonar shuts up)

* refactor: use line reporter instead of github

The report annotations are too annoying

* refactor: stop background process of testservice after test

* fix: run critical flow and regression tests

* ci: increase number of parallel test runners to 32

Now that the regression tests and critical flow tests are executed 16 runners is a bit too little

* style: ignore prettier for shard definition

* chore: safe guard stripAnsi function in report generation
otto-the-bot added a commit that referenced this pull request Dec 3, 2025
* fix: remove call from the call state when a user is left the group (#19790)

* chore(deps-dev): bump rimraf from 6.1.0 to 6.1.2 in /server (#19791)

Bumps [rimraf](https://github.com/isaacs/rimraf) from 6.1.0 to 6.1.2.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](isaacs/rimraf@v6.1.0...v6.1.2)

---
updated-dependencies:
- dependency-name: rimraf
  dependency-version: 6.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor(WPB-21957): create fixture for creating teams + refactor edit tests with it (#19804)

This is an attempt to resolve the race conditions happening when two users connect in a 1:1 for the first time starting the conversation as proteus but it's migrated to MLS automatically. This leads to a message sent during the migration being lost. Team members don't need to go through this step as they are aware of the spoken protocol of other members after login.

* test(WPB-19966): write "Reply" regression tests (#19760)

* test(TC-8038): add test for not replying to a ping

* test(TC-8039): add test for not replying to timed messages

* test(TC-2994): add test for quote in reply to vanish if source message is removed

* test(TC-2996): add test for searching message

* test(TC-2997): test for quote in reply to be truncated

* test(TC-3002): reply to a picture

* test(TC-3003): reply to an audio message

* test(TC-3004): reply to video

* test(TC-3005): reply to link

* test(TC3006): reply to file

* test(TC-3007): reply to reply

* test(TC-3008): reply to link with text

* test(TC-3011): Reply with timed message

* test(TC-3013): test clicking the reply

* test(TC-3014): test replying in a conversation I'm no longer part of

* test(TC-3016): click on mention in reply opens user profile

* fix: remove visibility check from sendMessage

* test(TC-3009): add test case for replying to a location + util for sending location via testservice

* refactor: replace createPagesForUser with new fixtures

* refactor(test): use new fixtures for reply tests

* refactor: remove no longer used PagePlugin withConversation

* fix: accessibility improvements login(https://wearezeta.atlassian.net/browse/WPB-20819) (#19714)

* fix: make password toggle button accessible and localised(WPB-21228)

* fix: translate type

* fix: Login - New view is not announced

* fix: make back button accessible WPB-21466

* fix: make external link 2fa accessible(WPB-21279)

* fix: password toggle button text alternative(WPB-21228)

* fix: make verify account header focusable using screenkey and login subheading style adjustments

* fix: add toggle password show/hide label

* fix: address review comments

* chore: bump core packages

* fix: pipeline issues

* fix: PR comments

* fix: pipeline issues

* chore(deps): bump @wireapp/core from 46.46.3 to 46.46.5 (#19793)

Bumps [@wireapp/core](https://github.com/wireapp/wire-web-packages) from 46.46.3 to 46.46.5.
- [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/[email protected]...@wireapp/[email protected])

---
updated-dependencies:
- dependency-name: "@wireapp/core"
  dependency-version: 46.46.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump core-js from 3.46.0 to 3.47.0 (#19797)

Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.46.0 to 3.47.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.47.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump emoji-picker-react from 4.15.1 to 4.15.2 (#19802)

Bumps [emoji-picker-react](https://github.com/ealush/emoji-picker-react) from 4.15.1 to 4.15.2.
- [Release notes](https://github.com/ealush/emoji-picker-react/releases)
- [Commits](https://github.com/ealush/emoji-picker-react/commits)

---
updated-dependencies:
- dependency-name: emoji-picker-react
  dependency-version: 4.15.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump html-webpack-plugin from 5.6.4 to 5.6.5 (#19800)

Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.6.4 to 5.6.5.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](jantimon/html-webpack-plugin@v5.6.4...v5.6.5)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-version: 5.6.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump oidc-client-ts from 3.4.0 to 3.4.1 (#19801)

Bumps [oidc-client-ts](https://github.com/authts/oidc-client-ts) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/authts/oidc-client-ts/releases)
- [Commits](authts/oidc-client-ts@v3.4.0...v3.4.1)

---
updated-dependencies:
- dependency-name: oidc-client-ts
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump webpack from 5.102.1 to 5.103.0 (#19796)

Bumps [webpack](https://github.com/webpack/webpack) from 5.102.1 to 5.103.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](webpack/webpack@v5.102.1...v5.103.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.103.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump workbox-webpack-plugin from 7.3.0 to 7.4.0 (#19799)

Bumps [workbox-webpack-plugin](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](GoogleChrome/workbox@v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-webpack-plugin
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump stylelint from 16.25.0 to 16.26.0 (#19798)

Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.25.0 to 16.26.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](stylelint/stylelint@16.25.0...16.26.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.26.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump baseline-browser-mapping from 2.8.28 to 2.8.31 (#19792)

Bumps [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) from 2.8.28 to 2.8.31.
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.8.28...v2.8.31)

---
updated-dependencies:
- dependency-name: baseline-browser-mapping
  dependency-version: 2.8.31
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* test(WPB-19968): add tests for self deleting messages (#19805)

* test(TC-657): add test for sending ephemeral text message in 1:1

* test(TC-658): add test for sending ephemeral text message in group

* refactor: replace util sendTimedMessage with dedicated utils for enabling and disabling timed messages

* test(TC-662): Verify timer is applied to all messages until turning it off in 1:1

* test(TC-664): Verify that message with previous timer are deleted on start-up when the timeout passed in 1:1

* refactor: overload createPage fixture to optionally accept a context to reuse

* refactor: use team for tests using new fixture

* test(TC-675): Verify the message is not deleted for users that didn't read the message

* test(TC-3715): set global group conversation timer

* refactor(reply-tests): remove unused createUser fixture

* test(TC-3716): check current time is visible in details

* fix(a11y): add disabled attribute to MessageTimerButton

* test(TC-3718): check timed message button is disabled if timed messages are set globally

* test(TC-3719): globally set timer is shown on button next to input field

* test(TC-3720): system messages are shown for enabled / disabled timer messages

* test(TC-3717): check ephemeral message appear in search results

* test(TC-3731): add test for message to disappear from search results (currently broken)

* refactor: group search tests

* refactor: update search result tests to do assertions on receiver side

* refactor: group tests with self deleting messages set globally for a group conversation

* docs: add ticket number to comment for skipped test

* fix: prevent microphone disabled dialog display when muted (#19808)

* test(WPB-21957): update backend endpoint to match api version (#19809)

* chore: bump avs to v10.2.19 (#19810)

* chore(deps): bump pm2 from 6.0.13 to 6.0.14 in /server (#19814)

Bumps [pm2](https://github.com/Unitech/pm2) from 6.0.13 to 6.0.14.
- [Release notes](https://github.com/Unitech/pm2/releases)
- [Changelog](https://github.com/Unitech/pm2/blob/master/CHANGELOG.md)
- [Commits](Unitech/pm2@v6.0.13...v6.0.14)

---
updated-dependencies:
- dependency-name: pm2
  dependency-version: 6.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /server (#19817)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* test(WPB-19939): add authentication regression tests (#19826)

* test(TC-34579: verify signin button is disabled inc ase of empty credentials

* test(TC-3468): Verify sign in error appearance in case of suspended team account

* test(TC-3460): Verify current browser is set as temporary device

* test(TC-3465): Verify sign in error appearance in case of wrong credentials

* test(TC-3472): Ensure history is kept after refresh on permanent device

* test(TC-3473): create data driven test to also ensure history is kept on temporary device

* test(TC-1311): verify session expires

* test(TC-3480): check tls versions allowed by webapp server

* test(TC-1311): Ensure history is gone after logging out of public computer

* fix(websocket): optimise event handling. Add heartbeat [WPB-21950] (#19825)

* fix(lifecycle): optimise online / offline event handling. Add heartbeat for WS

* Update src/script/repositories/event/EventRepository.ts

Co-authored-by: Copilot <[email protected]>

* Update src/script/repositories/event/EventRepository.ts

Co-authored-by: Copilot <[email protected]>

* Update src/script/repositories/event/EventRepository.ts

Co-authored-by: Copilot <[email protected]>

* chore: rename to updateConnectivityStatus

* chore: add copilot suggested improvements

---------

Co-authored-by: Copilot <[email protected]>

* chore(deps): bump express from 4.21.2 to 4.22.0 in /server (#19827)

Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 4.22.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.22.0/History.md)
- [Commits](expressjs/express@4.21.2...4.22.0)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 4.22.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: blocking user spec [19940] (#19784)

* test(WPB-19940): add tests for blocking users

* test(block): refactor block.spec.ts according to Review-Comments

add function to userActions.ts to send a connection request

add fixture for connection request

delete conversationNotConnected.modal.ts, replace it with acknowledge.modal.ts

* test(block): refactor block.spec.ts according to Review-Comments

* test(block): refactor block.spec.ts according to Review-Comments

* test(block): fixed unclear comments and variable namings

---------

Co-authored-by: Klaus Boldt <[email protected]>

* chore(deps): bump crowdin/github-action from 2.12.0 to 2.13.0 (#19828)

Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.12.0 to 2.13.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](crowdin/github-action@v2.12.0...v2.13.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: integrate Collabora using iframe [WPB-21650] (#19813)

* initial commit

* add close modal handler

* added isFileEditable()

* added edit option for conversation assets

* add tests

* fixed getNode api call

* bump @webapp/core

* fix package.json

* fixed package.json

* fix package.json

* address PR comments

* fixed types

* chore(deps-dev): bump stylelint from 16.26.0 to 16.26.1 (#19820)

Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.26.0 to 16.26.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](stylelint/stylelint@16.26.0...16.26.1)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.26.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @playwright/test from 1.56.1 to 1.57.0 (#19818)

Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.56.1 to 1.57.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.56.1...v1.57.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.57.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump baseline-browser-mapping from 2.8.31 to 2.8.32 (#19819)

Bumps [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) from 2.8.31 to 2.8.32.
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.8.31...v2.8.32)

---
updated-dependencies:
- dependency-name: baseline-browser-mapping
  dependency-version: 2.8.32
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump emoji-picker-react from 4.15.2 to 4.16.1 (#19822)

Bumps [emoji-picker-react](https://github.com/ealush/emoji-picker-react) from 4.15.2 to 4.16.1.
- [Release notes](https://github.com/ealush/emoji-picker-react/releases)
- [Commits](https://github.com/ealush/emoji-picker-react/commits)

---
updated-dependencies:
- dependency-name: emoji-picker-react
  dependency-version: 4.16.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* ci(WPB-21987): shard playwright tests across multiple runners (#19807)

* refactor: use nvmrc to select node version

* feat: add job to build test service

* feat: shard tests across multiple runners with integrated testservice & job to collect reports

* fix: build shadowJar of testservice

* fix: generate json report when merging blobs

* refactor: only download chrome browser for tests

* ci: use github reporter in CI

* fix: re-use playwright config when merging reports to generate json report for PR comment

* refactor: don't pass github user and token when building testservice

* feat: use 16 runners for sharding

* feat: execute regression tests in addition to critical flow

* fix: make script for reporting playwright summary work with nested test suites

* chore: use SHA for third party actions

(So Sonar shuts up)

* refactor: use line reporter instead of github

The report annotations are too annoying

* refactor: stop background process of testservice after test

* fix: run critical flow and regression tests

* ci: increase number of parallel test runners to 32

Now that the regression tests and critical flow tests are executed 16 runners is a bit too little

* style: ignore prettier for shard definition

* chore: safe guard stripAnsi function in report generation

* ci(WPB-21987): group test in playwright comment by file (#19830)

* refactor: update report script to group tests by file

* style: use list to render test cases

* feat: add direct link to download playwright report

* test(WPB-19966): fix getMessage locator to account for different message states (#19832)

* chore: add env var MAX_API_VERSION [WPB-22159] (#19831)

* runfix(cells): disable spammy tracking (#19829)

* test(WPB-19968): use a unique test message to avoid strict mode violation (#19834)

* test(WPB-19939): wait for login to finish before continuing (#19833)

* chore: Update translations

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Zafar Saeed Khan <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Brockhoff <[email protected]>
Co-authored-by: Arjita <[email protected]>
Co-authored-by: Adrian Weiß <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: JacquelineLehner <[email protected]>
Co-authored-by: Klaus Boldt <[email protected]>
Co-authored-by: Immad Abdul Jabbar <[email protected]>
e-maad pushed a commit that referenced this pull request Dec 3, 2025
* refactor: use nvmrc to select node version

* feat: add job to build test service

* feat: shard tests across multiple runners with integrated testservice & job to collect reports

* fix: build shadowJar of testservice

* fix: generate json report when merging blobs

* refactor: only download chrome browser for tests

* ci: use github reporter in CI

* fix: re-use playwright config when merging reports to generate json report for PR comment

* refactor: don't pass github user and token when building testservice

* feat: use 16 runners for sharding

* feat: execute regression tests in addition to critical flow

* fix: make script for reporting playwright summary work with nested test suites

* chore: use SHA for third party actions

(So Sonar shuts up)

* refactor: use line reporter instead of github

The report annotations are too annoying

* refactor: stop background process of testservice after test

* fix: run critical flow and regression tests

* ci: increase number of parallel test runners to 32

Now that the regression tests and critical flow tests are executed 16 runners is a bit too little

* style: ignore prettier for shard definition

* chore: safe guard stripAnsi function in report generation
e-maad added a commit that referenced this pull request Dec 3, 2025
* fix: remove call from the call state when a user is left the group (#19790)

* chore(deps-dev): bump rimraf from 6.1.0 to 6.1.2 in /server (#19791)

Bumps [rimraf](https://github.com/isaacs/rimraf) from 6.1.0 to 6.1.2.
- [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md)
- [Commits](isaacs/rimraf@v6.1.0...v6.1.2)

---
updated-dependencies:
- dependency-name: rimraf
  dependency-version: 6.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor(WPB-21957): create fixture for creating teams + refactor edit tests with it (#19804)

This is an attempt to resolve the race conditions happening when two users connect in a 1:1 for the first time starting the conversation as proteus but it's migrated to MLS automatically. This leads to a message sent during the migration being lost. Team members don't need to go through this step as they are aware of the spoken protocol of other members after login.

* test(WPB-19966): write "Reply" regression tests (#19760)

* test(TC-8038): add test for not replying to a ping

* test(TC-8039): add test for not replying to timed messages

* test(TC-2994): add test for quote in reply to vanish if source message is removed

* test(TC-2996): add test for searching message

* test(TC-2997): test for quote in reply to be truncated

* test(TC-3002): reply to a picture

* test(TC-3003): reply to an audio message

* test(TC-3004): reply to video

* test(TC-3005): reply to link

* test(TC3006): reply to file

* test(TC-3007): reply to reply

* test(TC-3008): reply to link with text

* test(TC-3011): Reply with timed message

* test(TC-3013): test clicking the reply

* test(TC-3014): test replying in a conversation I'm no longer part of

* test(TC-3016): click on mention in reply opens user profile

* fix: remove visibility check from sendMessage

* test(TC-3009): add test case for replying to a location + util for sending location via testservice

* refactor: replace createPagesForUser with new fixtures

* refactor(test): use new fixtures for reply tests

* refactor: remove no longer used PagePlugin withConversation

* fix: accessibility improvements login(https://wearezeta.atlassian.net/browse/WPB-20819) (#19714)

* fix: make password toggle button accessible and localised(WPB-21228)

* fix: translate type

* fix: Login - New view is not announced

* fix: make back button accessible WPB-21466

* fix: make external link 2fa accessible(WPB-21279)

* fix: password toggle button text alternative(WPB-21228)

* fix: make verify account header focusable using screenkey and login subheading style adjustments

* fix: add toggle password show/hide label

* fix: address review comments

* chore: bump core packages

* fix: pipeline issues

* fix: PR comments

* fix: pipeline issues

* chore(deps): bump @wireapp/core from 46.46.3 to 46.46.5 (#19793)

Bumps [@wireapp/core](https://github.com/wireapp/wire-web-packages) from 46.46.3 to 46.46.5.
- [Commits](https://github.com/wireapp/wire-web-packages/compare/@wireapp/[email protected]...@wireapp/[email protected])

---
updated-dependencies:
- dependency-name: "@wireapp/core"
  dependency-version: 46.46.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump core-js from 3.46.0 to 3.47.0 (#19797)

Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.46.0 to 3.47.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.47.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump emoji-picker-react from 4.15.1 to 4.15.2 (#19802)

Bumps [emoji-picker-react](https://github.com/ealush/emoji-picker-react) from 4.15.1 to 4.15.2.
- [Release notes](https://github.com/ealush/emoji-picker-react/releases)
- [Commits](https://github.com/ealush/emoji-picker-react/commits)

---
updated-dependencies:
- dependency-name: emoji-picker-react
  dependency-version: 4.15.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump html-webpack-plugin from 5.6.4 to 5.6.5 (#19800)

Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.6.4 to 5.6.5.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](jantimon/html-webpack-plugin@v5.6.4...v5.6.5)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-version: 5.6.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump oidc-client-ts from 3.4.0 to 3.4.1 (#19801)

Bumps [oidc-client-ts](https://github.com/authts/oidc-client-ts) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/authts/oidc-client-ts/releases)
- [Commits](authts/oidc-client-ts@v3.4.0...v3.4.1)

---
updated-dependencies:
- dependency-name: oidc-client-ts
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump webpack from 5.102.1 to 5.103.0 (#19796)

Bumps [webpack](https://github.com/webpack/webpack) from 5.102.1 to 5.103.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](webpack/webpack@v5.102.1...v5.103.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.103.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump workbox-webpack-plugin from 7.3.0 to 7.4.0 (#19799)

Bumps [workbox-webpack-plugin](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](GoogleChrome/workbox@v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-webpack-plugin
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump stylelint from 16.25.0 to 16.26.0 (#19798)

Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.25.0 to 16.26.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](stylelint/stylelint@16.25.0...16.26.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.26.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump baseline-browser-mapping from 2.8.28 to 2.8.31 (#19792)

Bumps [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) from 2.8.28 to 2.8.31.
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.8.28...v2.8.31)

---
updated-dependencies:
- dependency-name: baseline-browser-mapping
  dependency-version: 2.8.31
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* test(WPB-19968): add tests for self deleting messages (#19805)

* test(TC-657): add test for sending ephemeral text message in 1:1

* test(TC-658): add test for sending ephemeral text message in group

* refactor: replace util sendTimedMessage with dedicated utils for enabling and disabling timed messages

* test(TC-662): Verify timer is applied to all messages until turning it off in 1:1

* test(TC-664): Verify that message with previous timer are deleted on start-up when the timeout passed in 1:1

* refactor: overload createPage fixture to optionally accept a context to reuse

* refactor: use team for tests using new fixture

* test(TC-675): Verify the message is not deleted for users that didn't read the message

* test(TC-3715): set global group conversation timer

* refactor(reply-tests): remove unused createUser fixture

* test(TC-3716): check current time is visible in details

* fix(a11y): add disabled attribute to MessageTimerButton

* test(TC-3718): check timed message button is disabled if timed messages are set globally

* test(TC-3719): globally set timer is shown on button next to input field

* test(TC-3720): system messages are shown for enabled / disabled timer messages

* test(TC-3717): check ephemeral message appear in search results

* test(TC-3731): add test for message to disappear from search results (currently broken)

* refactor: group search tests

* refactor: update search result tests to do assertions on receiver side

* refactor: group tests with self deleting messages set globally for a group conversation

* docs: add ticket number to comment for skipped test

* fix: prevent microphone disabled dialog display when muted (#19808)

* test(WPB-21957): update backend endpoint to match api version (#19809)

* chore: bump avs to v10.2.19 (#19810)

* chore(deps): bump pm2 from 6.0.13 to 6.0.14 in /server (#19814)

Bumps [pm2](https://github.com/Unitech/pm2) from 6.0.13 to 6.0.14.
- [Release notes](https://github.com/Unitech/pm2/releases)
- [Changelog](https://github.com/Unitech/pm2/blob/master/CHANGELOG.md)
- [Commits](Unitech/pm2@v6.0.13...v6.0.14)

---
updated-dependencies:
- dependency-name: pm2
  dependency-version: 6.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /server (#19817)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* test(WPB-19939): add authentication regression tests (#19826)

* test(TC-34579: verify signin button is disabled inc ase of empty credentials

* test(TC-3468): Verify sign in error appearance in case of suspended team account

* test(TC-3460): Verify current browser is set as temporary device

* test(TC-3465): Verify sign in error appearance in case of wrong credentials

* test(TC-3472): Ensure history is kept after refresh on permanent device

* test(TC-3473): create data driven test to also ensure history is kept on temporary device

* test(TC-1311): verify session expires

* test(TC-3480): check tls versions allowed by webapp server

* test(TC-1311): Ensure history is gone after logging out of public computer

* fix(websocket): optimise event handling. Add heartbeat [WPB-21950] (#19825)

* fix(lifecycle): optimise online / offline event handling. Add heartbeat for WS

* Update src/script/repositories/event/EventRepository.ts

Co-authored-by: Copilot <[email protected]>

* Update src/script/repositories/event/EventRepository.ts

Co-authored-by: Copilot <[email protected]>

* Update src/script/repositories/event/EventRepository.ts

Co-authored-by: Copilot <[email protected]>

* chore: rename to updateConnectivityStatus

* chore: add copilot suggested improvements

---------

Co-authored-by: Copilot <[email protected]>

* chore(deps): bump express from 4.21.2 to 4.22.0 in /server (#19827)

Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 4.22.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.22.0/History.md)
- [Commits](expressjs/express@4.21.2...4.22.0)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 4.22.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: blocking user spec [19940] (#19784)

* test(WPB-19940): add tests for blocking users

* test(block): refactor block.spec.ts according to Review-Comments

add function to userActions.ts to send a connection request

add fixture for connection request

delete conversationNotConnected.modal.ts, replace it with acknowledge.modal.ts

* test(block): refactor block.spec.ts according to Review-Comments

* test(block): refactor block.spec.ts according to Review-Comments

* test(block): fixed unclear comments and variable namings

---------

Co-authored-by: Klaus Boldt <[email protected]>

* chore(deps): bump crowdin/github-action from 2.12.0 to 2.13.0 (#19828)

Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.12.0 to 2.13.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](crowdin/github-action@v2.12.0...v2.13.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: integrate Collabora using iframe [WPB-21650] (#19813)

* initial commit

* add close modal handler

* added isFileEditable()

* added edit option for conversation assets

* add tests

* fixed getNode api call

* bump @webapp/core

* fix package.json

* fixed package.json

* fix package.json

* address PR comments

* fixed types

* chore(deps-dev): bump stylelint from 16.26.0 to 16.26.1 (#19820)

Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.26.0 to 16.26.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](stylelint/stylelint@16.26.0...16.26.1)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.26.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @playwright/test from 1.56.1 to 1.57.0 (#19818)

Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.56.1 to 1.57.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.56.1...v1.57.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.57.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump baseline-browser-mapping from 2.8.31 to 2.8.32 (#19819)

Bumps [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) from 2.8.31 to 2.8.32.
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.8.31...v2.8.32)

---
updated-dependencies:
- dependency-name: baseline-browser-mapping
  dependency-version: 2.8.32
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump emoji-picker-react from 4.15.2 to 4.16.1 (#19822)

Bumps [emoji-picker-react](https://github.com/ealush/emoji-picker-react) from 4.15.2 to 4.16.1.
- [Release notes](https://github.com/ealush/emoji-picker-react/releases)
- [Commits](https://github.com/ealush/emoji-picker-react/commits)

---
updated-dependencies:
- dependency-name: emoji-picker-react
  dependency-version: 4.16.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* ci(WPB-21987): shard playwright tests across multiple runners (#19807)

* refactor: use nvmrc to select node version

* feat: add job to build test service

* feat: shard tests across multiple runners with integrated testservice & job to collect reports

* fix: build shadowJar of testservice

* fix: generate json report when merging blobs

* refactor: only download chrome browser for tests

* ci: use github reporter in CI

* fix: re-use playwright config when merging reports to generate json report for PR comment

* refactor: don't pass github user and token when building testservice

* feat: use 16 runners for sharding

* feat: execute regression tests in addition to critical flow

* fix: make script for reporting playwright summary work with nested test suites

* chore: use SHA for third party actions

(So Sonar shuts up)

* refactor: use line reporter instead of github

The report annotations are too annoying

* refactor: stop background process of testservice after test

* fix: run critical flow and regression tests

* ci: increase number of parallel test runners to 32

Now that the regression tests and critical flow tests are executed 16 runners is a bit too little

* style: ignore prettier for shard definition

* chore: safe guard stripAnsi function in report generation

* ci(WPB-21987): group test in playwright comment by file (#19830)

* refactor: update report script to group tests by file

* style: use list to render test cases

* feat: add direct link to download playwright report

* test(WPB-19966): fix getMessage locator to account for different message states (#19832)

* chore: add env var MAX_API_VERSION [WPB-22159] (#19831)

* runfix(cells): disable spammy tracking (#19829)

* test(WPB-19968): use a unique test message to avoid strict mode violation (#19834)

* test(WPB-19939): wait for login to finish before continuing (#19833)

* chore: Update translations

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Zafar Saeed Khan <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Brockhoff <[email protected]>
Co-authored-by: Arjita <[email protected]>
Co-authored-by: Adrian Weiß <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: JacquelineLehner <[email protected]>
Co-authored-by: Klaus Boldt <[email protected]>
Co-authored-by: Immad Abdul Jabbar <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants