chore: Automate RC creation [WPB-22028]
|
|
Pull Request
Summary
- What did I change and why? Introduced a new workflow to automate creation of RC
- Risks and how to roll out / roll back (e.g. feature flags): none
Security Checklist (required)
- [X] External inputs are validated & sanitized on client and/or server where applicable.
- [X] API responses are validated; unexpected shapes are handled safely (fallbacks or errors).
- [X] No unsafe HTML is rendered; if unavoidable, sanitization is applied and documented where it happens.
- [X] Injection risks (XSS/SQL/command) are prevented via safe APIs and/or escaping.
Standards Acknowledgement (required)
- [X] I have read and this PR upholds our Coding Standards and Tech Radar Choices.
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 43.46%. Comparing base (0315fc1) to head (c5d9ddd).
Additional details and impacted files
@@ Coverage Diff @@
## dev #19812 +/- ##
=======================================
Coverage 43.46% 43.46%
=======================================
Files 1296 1296
Lines 32570 32570
Branches 7232 7232
=======================================
+ Hits 14157 14158 +1
Misses 16698 16698
+ Partials 1715 1714 -1
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
๐ Download Full Report Artifact
๐งช Playwright Test Summary
- โ Passed: 7
- โ Failed: 4
- โญ Skipped: 0
- ๐ Flaky: 3
- ๐ Total: 14
- โฑ Total Runtime: 1089.4s (~ 18 min 9 sec)
Failed Tests:
โ 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: 54395ms
Errors:
Error: expect(locator).toBeVisible() failed
Locator: locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: 'Hello from Ewald!' }).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 Ewald!' }).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: 31978ms
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: 41485ms
Errors:
TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
- waiting for locator('#add-participants [data-uie-name="search-list"] [aria-label="Open profile of Arjun Kertzmann"]').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: 66977ms
Errors:
TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
- waiting for locator('#add-participants [data-uie-name="search-list"] [aria-label="Open profile of Deondre Witting"]').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:
โ ๏ธ Account Management (tags: TC-8639, crit-flow-web)
Location: specs/CriticalFlow/accountManagement-TC-8639.spec.ts:37
Attempt 1 Result: โ Failed Duration: 85730ms
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
Attempt 2 Result: โ Passed Duration: 30184ms
โ ๏ธ Calls in channels with device switch and screenshare (tags: TC-8754, crit-flow-web)
Location: specs/CriticalFlow/channelsCall-TC-8755.spec.ts:39
Attempt 1 Result: โ Failed Duration: 62023ms
Errors:
TimeoutError: locator.waitFor: Timeout 20000ms exceeded.
Call log:
- waiting for locator('[data-uie-name="item-call"]') to be visible
at pageManager/webapp/pages/calling.page.ts:90
88 |
89 | waitForCell(): Promise<void> {
> 90 | return this.callCell.waitFor({state: 'visible'});
| ^
91 | }
92 |
93 | isFullScreenVisible(): Promise<boolean> {
at CallingPage.waitForCell (/home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/pageManager/webapp/pages/calling.page.ts:90:26)
at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsCall-TC-8755.spec.ts:99:34
at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/channelsCall-TC-8755.spec.ts:97:16
Attempt 2 Result: โ Passed Duration: 78642ms
โ ๏ธ Messages in Groups (tags: TC-8751, crit-flow-web)
Location: specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:42
Attempt 1 Result: โ Failed Duration: 25527ms
Errors:
Error: expect(locator).toBeVisible() failed
Locator: locator('[data-uie-name="item-message"][data-uie-send-status="2"]').filter({ hasText: '@Eladio Franey Hello, this is a test message!' })
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: '@Eladio Franey Hello, this is a test message!' })
91 |
92 | await userBPages.conversationList().openConversation(conversationName);
> 93 | await expect(userBPages.conversation().getMessage({content: `@${userB.fullName} ${messageText}`})).toBeVisible();
| ^
94 | });
95 |
96 | await test.step('User A sends image', async () => {
at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:93:106
at /home/runner/actions-runner/_work/wire-webapp/wire-webapp/test/e2e_tests/specs/CriticalFlow/messagesInGroups-TC-8751.spec.ts:86:5
Attempt 2 Result: โ Passed Duration: 54518ms
