Skip to content

Conversation

@V-Gira
Copy link
Contributor

@V-Gira V-Gira commented Sep 15, 2025

StoryWPB-17937 [Web] Hide MLS Read Receipts in UI

Description

Read receipts are not currently available for MLS conversations
The setting was only hidden for channels (that are always MLS) but still available for group conversations

See ticket for details, we decided to remove the option for MLS conversations, not just disabling the toggle

This PR:

  • removes the read receipt toggle for channels and MLS groups entirely
  • removes the toggle in the legacy group creation modal (in use when channels are not enabled)
  • remove the toggle from the sidebar for group conversations

Screenshots/Screencast (for UI changes)

Before:
image
image
image

After:
image
image
image

Checklist

  • mentions the JIRA issue in the PR name (Ex. [WPB-XXXX])
  • PR has been self reviewed by the author;
  • Hard-to-understand areas of the code have been commented;
  • If it is a core feature, unit tests have been added;

@codecov
Copy link

codecov bot commented Sep 15, 2025

Codecov Report

❌ Patch coverage is 0% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 42.81%. Comparing base (a64c3b9) to head (c015f6f).
⚠️ Report is 1 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev   #19534      +/-   ##
==========================================
- Coverage   42.83%   42.81%   -0.02%     
==========================================
  Files        1342     1342              
  Lines       32715    32721       +6     
  Branches     7240     7245       +5     
==========================================
- Hits        14013    14011       -2     
- Misses      17015    17021       +6     
- Partials     1687     1689       +2     
🚀 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.

@V-Gira V-Gira force-pushed the v/mls-read-receipt-WPB-17937 branch from 1e981f2 to 814c2c9 Compare September 24, 2025 10:07
@github-actions
Copy link
Contributor

github-actions bot commented Sep 24, 2025

🔗 Download Full Report Artifact

🧪 Playwright Test Summary

  • Passed: 7
  • Failed: 6
  • Skipped: 0
  • 🔁 Flaky: 1
  • 📊 Total: 14
  • Total Runtime: 871.2s (~ 14 min 31 sec)

Failed Tests:

❌ Calls in channels with device switch and screenshare (tags: TC-8754, crit-flow-web)

Location: specs/CriticalFlow/channelsCall-TC-8755.spec.ts:38
Duration: 37313ms

Errors:

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


   at pageManager/webapp/pages/groupCreation.page.ts:47

  45 |
  46 |   async clickNextButton() {
> 47 |     await this.nextButton.click();
     |                           ^
  48 |   }
  49 |
  50 |   async clickCreateGroupButton() {
    at GroupCreationPage.clickNextButton (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/groupCreation.page.ts:47:27)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsCall-TC-8755.spec.ts:88:40
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsCall-TC-8755.spec.ts:85:5
❌ Channels Management (tags: TC-8752, crit-flow-web)

Location: specs/CriticalFlow/channelsManagement-TC-8752.spec.ts:36
Duration: 43329ms

Errors:

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


   at pageManager/webapp/pages/groupCreation.page.ts:47

  45 |
  46 |   async clickNextButton() {
> 47 |     await this.nextButton.click();
     |                           ^
  48 |   }
  49 |
  50 |   async clickCreateGroupButton() {
    at GroupCreationPage.clickNextButton (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/groupCreation.page.ts:47:27)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsManagement-TC-8752.spec.ts:72:33
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsManagement-TC-8752.spec.ts:69: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: 26145ms

Errors:

Error: expect(received).toBeTruthy()

Received: false

  106 |
  107 |       await memberCalling.maximizeCell();
> 108 |       expect(await memberCalling.isFullScreenVisible()).toBeTruthy();
      |                                                         ^
  109 |     });
  110 |
  111 |     await test.step('Owner goes full screen', async () => {
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupCalls-TC-8632.spec.ts:108:57
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupCalls-TC-8632.spec.ts:96:5
❌ Group Video call (tags: TC-8637, crit-flow-web)

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

Errors:

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


   at pageManager/webapp/pages/calling.page.ts:66

  64 |
  65 |   async clickAcceptCallButton() {
> 66 |     await this.acceptCallButton.click();
     |                                 ^
  67 |   }
  68 |
  69 |   async clickToggleVideoButton() {
    at CallingPage.clickAcceptCallButton (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/calling.page.ts:66:33)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupVideoCall-TC-8637.spec.ts:147:34
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupVideoCall-TC-8637.spec.ts:145:16
❌ Messages in Channels (tags: TC-8753, crit-flow-web)

Location: specs/CriticalFlow/messagesInChannels-TC-8753.spec.ts:44
Duration: 37090ms

Errors:

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


   at pageManager/webapp/pages/groupCreation.page.ts:47

  45 |
  46 |   async clickNextButton() {
> 47 |     await this.nextButton.click();
     |                           ^
  48 |   }
  49 |
  50 |   async clickCreateGroupButton() {
    at GroupCreationPage.clickNextButton (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/groupCreation.page.ts:47:27)
    at setupOwner (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInChannels-TC-8753.spec.ts:78:42)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInChannels-TC-8753.spec.ts:89:7
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInChannels-TC-8753.spec.ts:71:5
❌ Messages in Groups (tags: TC-8751, crit-flow-web)

Location: specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:42
Duration: 33898ms

Errors:

TimeoutError: locator.click: Timeout 20000ms exceeded.
Call log:
  - waiting for locator('[data-uie-name="conversation-list-header"] [data-uie-name="go-create-group"]')
    - locator resolved to <button class="css-1pzkaq4" title="Create group" data-uie-name="go-create-group">…</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 tabindex="0" role="dialog" aria-modal="true" class=" css-r2fp0z" data-uie-name="modal-template-confirm">…</div> from <div class="css-18o04gs">…</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 tabindex="0" role="dialog" aria-modal="true" class=" css-r2fp0z" data-uie-name="modal-template-confirm">…</div> from <div class="css-18o04gs">…</div> subtree intercepts pointer events
    - retrying click action
      - waiting 100ms
    38 × waiting for element to be visible, enabled and stable
       - element is visible, enabled and stable
       - scrolling into view if needed
       - done scrolling
       - <div tabindex="0" role="dialog" aria-modal="true" class=" css-1ocmba1" data-uie-name="modal-template-acknowledge">…</div> from <div class="css-18o04gs">…</div> subtree intercepts pointer events
     - retrying click action
       - waiting 500ms


   at pageManager/webapp/pages/conversationList.page.ts:104

  102 |
  103 |   async clickCreateGroup() {
> 104 |     await this.createGroupButton.click();
      |                                  ^
  105 |   }
  106 |
  107 |   private getConversationLocator(conversationName: string) {
    at ConversationListPage.clickCreateGroup (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversationList.page.ts:104:34)
    at setupUserA (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:69:45)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:81:7
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:64:5

Flaky Tests:

⚠️ Setting up new device with a backup (tags: TC-8634, crit-flow-web)

Location: specs/CriticalFlow/backupRestoration-TC-8634.spec.ts:35

Attempt 1
Result: ❌ Failed
Duration: 41229ms

Errors:

Error: locator.waitFor: Test ended.
Call log:
  - waiting for locator('[data-uie-name="item-message"] .message-body:not(:has(p.text-foreground)):has(.text)').last() to be visible


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

  152 |     if (waitForVisibility) {
  153 |       // Wait for the last message to be visible
> 154 |       await this.messages.last().waitFor({state: 'visible', timeout: 20_000});
      |                                  ^
  155 |     }
  156 |
  157 |     // Then get all matching elements
    at ConversationPage.isMessageVisible (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversation.page.ts:154:34)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/backupRestoration-TC-8634.spec.ts:87:33
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/backupRestoration-TC-8634.spec.ts:72:3

Attempt 2
Result: ✅ Passed
Duration: 43605ms

@V-Gira V-Gira force-pushed the v/mls-read-receipt-WPB-17937 branch 2 times, most recently from ce59a98 to 10080f9 Compare September 24, 2025 11:42
@V-Gira V-Gira marked this pull request as ready for review September 24, 2025 11:43
@V-Gira V-Gira requested review from a team and otto-the-bot as code owners September 24, 2025 11:44
: ConversationProtocol.PROTEUS;

// Read receipts are temorarily disabled for MLS groups and channels until it is supported
const areReadReceiptsEnabled = defaultProtocol !== ConversationProtocol.MLS;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we add a function to share between components defaultProtocol !== ConversationProtocol.MLS? its been used in 3 places

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't find an elegant way to add this, I'll keep it as is

@V-Gira V-Gira force-pushed the v/mls-read-receipt-WPB-17937 branch from 10080f9 to cf32455 Compare September 24, 2025 16:28
@V-Gira V-Gira force-pushed the v/mls-read-receipt-WPB-17937 branch from cf32455 to c015f6f Compare September 24, 2025 16:42
@sonarqubecloud
Copy link

@V-Gira V-Gira merged commit 60c7ce8 into dev Sep 24, 2025
15 of 16 checks passed
@V-Gira V-Gira deleted the v/mls-read-receipt-WPB-17937 branch September 24, 2025 17:05
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