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)

Copilot AI review requested due to automatic review settings November 27, 2025 09:35
@thisisamir98 thisisamir98 requested review from a team and otto-the-bot as code owners November 27, 2025 09:35
Copilot finished reviewing on behalf of thisisamir98 November 27, 2025 09:36
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

Copilot finished reviewing on behalf of thisisamir98 November 27, 2025 16:48
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/eslint-config@3.1.8-beta.54.5ce5ca523 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.

3 participants