Skip to content

Conversation

@thisisamir98
Copy link
Contributor

@thisisamir98 thisisamir98 commented Nov 27, 2025

TaskWPB-21306 [Web] Restructure wire-web-packages release flow using dev/main branches and npm dist-tags

Pull Request

Summary

  • What did I change and why?
    Migrated all of web-packages to use the beta version as part of WPB-21306
  • Risks and how to roll out / roll back (e.g. feature flags):
    none

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)

zskhan and others added 19 commits November 21, 2025 18:38
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>
…t 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(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
…/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
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>
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>
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>
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>
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>
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>
)

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>
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>
…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(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
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates all @wireapp/ packages from stable to beta versions for testing on the dev environment as part of WPB-21306. The beta versions follow a consistent naming pattern with commit hash references (e.g., 5.4.10-beta.54.5ce5ca523), enabling testing of pre-release features before production deployment.

Key changes:

  • Updated 11 direct @wireapp/ dependencies to beta versions with commit hash identifiers
  • Updated ESLint configuration introduces modern tooling (eslint-plugin-jest v29, eslint-plugin-react-hooks v5, etc.)
  • New transitive dependencies added for improved module resolution and WASM/NAPI runtime support

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
package.json Updated 11 @wireapp packages to beta versions in both dependencies and devDependencies sections
yarn.lock Lockfile update reflecting package.json changes, plus transitive dependency additions from @wireapp/eslint-config update (unrs-resolver with platform bindings, @emnapi packages, and updated ESLint plugins)

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

🔗 Download Full Report Artifact

🧪 Playwright Test Summary

  • Passed: 8
  • Failed: 5
  • Skipped: 0
  • 🔁 Flaky: 1
  • 📊 Total: 14
  • Total Runtime: 1087.4s (~ 18 min 7 sec)

Failed Tests:

❌ Account Management (tags: TC-8639, crit-flow-web)

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

Errors:

Error: Matching URL not found in the email body

   at backend/inbucketClient.e2e.ts:120

  118 |
  119 |     if (this.isValidURL(matchingUrl) === false) {
> 120 |       throw new Error('Matching URL not found in the email body');
      |             ^
  121 |     }
  122 |
  123 |     return matchingUrl;
    at InbucketClientE2E.getMatchingURLFromEmailBody (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/backend/inbucketClient.e2e.ts:120:13)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/accountManagement-TC-8639.spec.ts:133:30
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/accountManagement-TC-8639.spec.ts:124:3
❌ 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: 53859ms

Errors:

Error: expect(locator).toBeVisible() failed

Locator: locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Hello from Weston!' }).locator('[data-uie-name="message-reactions"]').locator('[data-uie-name="emoji-pill"][title="heart"]')
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: 'Hello from Weston!' }).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/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/addMembersToChat-TC-8631.spec.ts:187:86
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/addMembersToChat-TC-8631.spec.ts:183:5
❌ 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: 31461ms

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/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupCalls-TC-8632.spec.ts:124:65
    at /home/runner/actions-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: 41496ms

Errors:

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


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

  66 |       await userLocator.click();
  67 |       // Wait for the user to be selected (checkbox should be checked)
> 68 |       await userLocator.locator('input[type="checkbox"]').waitFor({state: 'attached'});
     |                                                           ^
  69 |     }
  70 |
  71 |     await this.page.locator(`${selectById('add-participants')} ${selectByDataAttribute('do-create')}`).click();
    at ConversationDetailsPage.addUsersToConversation (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversationDetails.page.ts:68:59)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/groupVideoCall-TC-8637.spec.ts:127:7
    at /home/runner/actions-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: 67220ms

Errors:

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


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

  66 |       await userLocator.click();
  67 |       // Wait for the user to be selected (checkbox should be checked)
> 68 |       await userLocator.locator('input[type="checkbox"]').waitFor({state: 'attached'});
     |                                                           ^
  69 |     }
  70 |
  71 |     await this.page.locator(`${selectById('add-participants')} ${selectByDataAttribute('do-create')}`).click();
    at ConversationDetailsPage.addUsersToConversation (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/conversationDetails.page.ts:68:59)
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/joinTeam-TC-8635.spec.ts:125:7
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/joinTeam-TC-8635.spec.ts:114:5

Flaky Tests:

⚠️ Messages in 1:1 (tags: TC-8750, crit-flow-web)

Location: specs/CriticalFlow/messagesIn1On1-TC-8750.spec.ts:47

Attempt 1
Result: ❌ Failed
Duration: 28505ms

Errors:

Error: expect(received).toBeTruthy()

Received: false

  129 |     // Verify that the detail view modal is visible
  130 |     expect(await memberBPM.webapp.modals.detailViewModal().isVisible()).toBeTruthy();
> 131 |     expect(await memberBPM.webapp.modals.detailViewModal().isImageVisible()).toBeTruthy();
      |                                                                              ^
  132 |   });
  133 |   await test.step('User B can download the image', async () => {
  134 |     // Click on the download button to download the image
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesIn1On1-TC-8750.spec.ts:131:78
    at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesIn1On1-TC-8750.spec.ts:125:3

Attempt 2
Result: ✅ Passed
Duration: 66027ms

Copilot AI review requested due to automatic review settings November 27, 2025 16:46
@sonarqubecloud
Copy link

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 3 changed files in this pull request and generated 2 comments.

Comment on lines +65 to +66
'react-hooks/rules-of-hooks': 'off',
'react-hooks/exhaustive-deps': 'off',
Copy link

Copilot AI Nov 27, 2025

Choose a reason for hiding this comment

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

The new @wireapp/[email protected] upgrades eslint-plugin-react-hooks from v4 to v5. Disabling these rules specifically for test files may be hiding issues that should be addressed. Consider:

  1. Investigate why tests are failing with the stricter react-hooks rules in v5
  2. Fix the test code to comply with the rules rather than disabling them
  3. If disabling is truly necessary, document why with a comment explaining the rationale

These rules help prevent common React bugs:

  • rules-of-hooks ensures hooks are only called at the top level
  • exhaustive-deps prevents stale closures and missing dependencies
Suggested change
'react-hooks/rules-of-hooks': 'off',
'react-hooks/exhaustive-deps': 'off',
// If you need to disable react-hooks rules for tests, document the rationale here.
// 'react-hooks/rules-of-hooks': 'off',
// 'react-hooks/exhaustive-deps': 'off',

Copilot uses AI. Check for mistakes.
Comment on lines +22 to +25
"@wireapp/react-ui-kit": "9.69.7-beta.11.d0ceefa60",
"@wireapp/store-engine-dexie": "2.1.21-beta.54.5ce5ca523",
"@wireapp/telemetry": "0.3.7-beta.51.d0ceefa60",
"@wireapp/webapp-events": "0.28.6-beta.51.d0ceefa60",
Copy link

Copilot AI Nov 27, 2025

Choose a reason for hiding this comment

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

The beta versions use three different commit hashes (5ce5ca523, d0ceefa60, a0e2528f5), which suggests these packages were built from different commits. This creates an inconsistent dependency state that could lead to:

  1. Unexpected integration issues between packages built at different times
  2. Difficulty reproducing and debugging issues
  3. Unclear which version of the codebase is actually deployed

Consider coordinating the beta releases to use a single commit hash across all @wireapp packages, or document why different commits are necessary for this migration.

Suggested change
"@wireapp/react-ui-kit": "9.69.7-beta.11.d0ceefa60",
"@wireapp/store-engine-dexie": "2.1.21-beta.54.5ce5ca523",
"@wireapp/telemetry": "0.3.7-beta.51.d0ceefa60",
"@wireapp/webapp-events": "0.28.6-beta.51.d0ceefa60",
"@wireapp/react-ui-kit": "9.69.7-beta.11.5ce5ca523",
"@wireapp/store-engine-dexie": "2.1.21-beta.54.5ce5ca523",
"@wireapp/telemetry": "0.3.7-beta.51.5ce5ca523",
"@wireapp/webapp-events": "0.28.6-beta.51.5ce5ca523",

Copilot uses AI. Check for mistakes.
@codecov
Copy link

codecov bot commented Nov 27, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 43.46%. Comparing base (0315fc1) to head (29e14f0).

Additional details and impacted files
@@           Coverage Diff           @@
##              dev   #19811   +/-   ##
=======================================
  Coverage   43.46%   43.46%           
=======================================
  Files        1296     1296           
  Lines       32570    32570           
  Branches     7232     7232           
=======================================
  Hits        14157    14157           
  Misses      16698    16698           
  Partials     1715     1715           
🚀 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.

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.

6 participants