Skip to content

Commit 9a7aa7a

Browse files
committed
Merge remote-tracking branch 'origin/develop' into hs/new-quick-settings-menu
2 parents 9381f3e + 2b3720b commit 9a7aa7a

845 files changed

Lines changed: 29160 additions & 5534 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
* @element-hq/element-web-reviewers
22
/.github/workflows/** @element-hq/element-web-team
3-
package.json @element-hq/element-web-team
3+
**/package.json @element-hq/element-web-team
44
/pnpm-lock.yaml @element-hq/element-web-team
55

66
/apps/web/src/SecurityManager.ts @element-hq/element-crypto-web-reviewers
@@ -26,8 +26,10 @@ package.json @element-hq/element-web-team
2626

2727
# Ignore translations as those will be updated by GHA for Localazy download
2828
/apps/web/src/i18n/strings
29+
/apps/desktop/src/i18n/strings
2930
/packages/shared-components/src/i18n/strings
3031
/apps/web/src/i18n/strings/en_EN.json @element-hq/element-web-reviewers
32+
/apps/desktop/src/i18n/strings/en_EN.json @element-hq/element-web-reviewers
3133
/packages/shared-components/src/i18n/strings/en_EN.json @element-hq/element-web-reviewers
3234

3335
# Ignore the synapse & mas plugins as this is updated by GHA for docker image updating

.github/SSLcom-sandbox.crt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIGBzCCA++gAwIBAgIIaI6ivggL++4wDQYJKoZIhvcNAQELBQAwgZAxCzAJBgNV
3+
BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE
4+
CgwPU1NMIENvcnBvcmF0aW9uMUUwQwYDVQQDDDxTU0wuY29tIEVWIFJvb3QgQ2Vy
5+
dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyIC0gRGV2ZWxvcG1lbnQwHhcNMTgw
6+
MTE2MTIxNjM2WhcNNDMwMTE1MTIxNjM2WjCBkDELMAkGA1UEBhMCVVMxDjAMBgNV
7+
BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9y
8+
YXRpb24xRTBDBgNVBAMMPFNTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
9+
dGhvcml0eSBSU0EgUjIgLSBEZXZlbG9wbWVudDCCAiIwDQYJKoZIhvcNAQEBBQAD
10+
ggIPADCCAgoCggIBAK/qcD65JCkueKp0+KXG2kAw8euDHuraLR3lJoUFz4ilGK1M
11+
t+RjSuY6dHQw8ku7TnW9ejWoSFjCBSDx7tP/fzOwOxmBW6+F1NDuV/IaUtn3G2lk
12+
CZglVk9z3n1HuWDN10xNiLoo5nzeIlvNAoDbXDGhI4Y6Z0qouAIS607JpJMWHOqZ
13+
OUiiOuM11gI5Kz9GtVttXCjRmwlkU8WiJVIUuVedQAQt2FChrzNQewGFFi0uIau/
14+
wFRclx6hd4JRIImC6VMJd9lcitWsqMcM94pD3fX2ozNgWX+MVlmcDYFSN9Sv8tG4
15+
yCj4ONS8HZGzbxeyQXJhEJSi2FnBi0j6MD/d4DNFj0hCg9wz3fgVLDGCO0pNMO0Y
16+
oXdrzfoj1/zEv0Ibgh7zKG2JHkPfapn3ExFI5d6xi66u5tPVI8cvLxqrgybRPs7Z
17+
y1dQA7ew3LyTPAHoGtbTMvewtx1TkTtRxxhRRm0l58owqSVbSYrixFtosNobCERo
18+
uiknaQqoY1ZDsdKsaqFoZDbntNRYhN3Ea4OPWVqDUU5ZPz9MTIRAi3MIq854yyQo
19+
BjX9nv+kYa+Esr19pxUW0z7BWFhbXsMVpt0QMVyhwgzXvEreaZHFwHHaGb9d5x5P
20+
VBDhsigMmtzBk9NlbCsy+uGXWHgZA/DVefueEq0sv38VoU30uYa5Tj0FLm09AgMB
21+
AAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUI9PCucv3G9fRoTDu
22+
ZQ4Hw6g4PkIwHQYDVR0OBBYEFCPTwrnL9xvX0aEw7mUOB8OoOD5CMA4GA1UdDwEB
23+
/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAk43CCrC0Zbvi7YUsSePKi+KzvyQ9
24+
mjKa5NBU/A5/sLeZS3R+wqCX7l5euYVDsUuNgNVD/QL9jNIonuHBrvKaxkmqxE1r
25+
IcDEaUdjy2lQ0uqD7UDoS3ctrjGkPpUahrTdr3gaKcQBtUhn9v4Y2OBm6J1hDVwI
26+
CIKcxIzRv6AUpApOtk+++m5tzDU48t8+GzrVl1hkspSYcumA+zuHllbPDL1ADdo5
27+
kK/bBQtZrGqzPqKzeqaB1A5Wm0Igwf++7nyzdKNdjxtv907D9vg8EB4Swavuv/Ne
28+
5/jbpI32pz0NIzzSl5ARAHuFhILsO/cEAlloDoTHzibHqFDIeU9/59HMUsJYMOtD
29+
Ii0/LmQ6dBE4TeukCCLJwtkFYZ2eBgDjF/LHBB+z/UBs4milRgwx+Pe5UDUEjtGe
30+
G/XMVnTSKZTy9jMaXJD5EmfP+Cfh8EEgFgjg4AmLUbEo9gXzPxyXSLgd8JGSsjg8
31+
EV/Ri4Mmmt4XUwlSVvEOezxxDGd17gwbottCIC+rqPHonHkGmKpLMH80Bk0uOOCs
32+
ui1oVwSifMyIcudgCcOfRLUf/f2j2NW7N7E7Vw/Zqfn+pqp/EG0KCqOM2vfJAc0s
33+
u3rSrOJZGtB6txgtmTjoadxApWf4U/FCi3uArt6gS5MJqZjuiRNXs/K3SlSAqLGl
34+
5UiG52ew+VdBHzE=
35+
-----END CERTIFICATE-----

.github/workflows/end-to-end-tests-netlify.yaml renamed to .github/workflows/build-and-test-netlify.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
# Privilege escalation necessary to publish to Netlify
66
# 🚨 We must not execute any checked out code here.
77
workflow_run: # zizmor: ignore[dangerous-triggers]
8-
workflows: ["End to End Tests"]
8+
workflows: ["Build & Test"]
99
types:
1010
- completed
1111

@@ -27,7 +27,7 @@ jobs:
2727
actions: read
2828
steps:
2929
- name: Download HTML report
30-
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
30+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
3131
with:
3232
github-token: ${{ secrets.GITHUB_TOKEN }}
3333
run-id: ${{ github.event.workflow_run.id }}
Lines changed: 99 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1-
# Produce a build of element-web with this version of react-sdk
2-
# and any matching branches of element-web and js-sdk, output it
3-
# as an artifact and run end-to-end tests.
4-
name: End to End Tests
1+
# builds Element Web
2+
# runs Playwright tests against the built Element Web
3+
# builds Element Desktop using the built Element Web
4+
#
5+
# Tries to use a matching js-sdk branch for the build.
6+
#
7+
# Produces a `webapp` artifact
8+
# Produces multiple Desktop artifacts
9+
# Produces multiple Playwright report artifacts
10+
name: Build & Test
511
on:
612
# CRON to run all Projects at 6am UTC
713
schedule:
@@ -10,7 +16,8 @@ on:
1016
merge_group:
1117
types: [checks_requested]
1218
push:
13-
branches: [develop, master]
19+
# We do not build on push to develop as the merge_group check handles that
20+
branches: [staging, master]
1421
repository_dispatch:
1522
types: [element-web-notify]
1623

@@ -35,15 +42,15 @@ concurrency:
3542
env:
3643
# fetchdep.sh needs to know our PR number
3744
PR_NUMBER: ${{ github.event.pull_request.number }}
38-
# Use 6 runners in the default case, but 4 when running on a schedule where we run all 5 projects (20 runners total)
39-
NUM_RUNNERS: ${{ github.event_name == 'schedule' && 4 || 6 }}
45+
# Use 4 runners in the default case, but only 1 when running on a schedule where we run all 5 projects
46+
NUM_RUNNERS: ${{ github.event_name == 'schedule' && 1 || 4 }}
4047
NX_DEFAULT_OUTPUT_STYLE: stream-without-prefixes
4148

4249
permissions: {} # No permissions required
4350

4451
jobs:
45-
build:
46-
name: "Build Element-Web"
52+
build_ew:
53+
name: "Build Element Web"
4754
runs-on: ubuntu-24.04
4855
if: inputs.skip != true
4956
outputs:
@@ -56,8 +63,8 @@ jobs:
5663
repository: element-hq/element-web
5764
persist-credentials: false
5865

59-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
60-
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
66+
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
67+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
6168
with:
6269
cache: "pnpm"
6370
node-version: "lts/*"
@@ -76,7 +83,7 @@ jobs:
7683
env:
7784
CI_PACKAGE: true
7885
working-directory: apps/web
79-
run: VERSION=$(scripts/get-version-from-git.sh) pnpm build
86+
run: VERSION=$(scripts/get-version-from-git.sh) pnpm run build
8087

8188
- name: Upload Artifact
8289
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
@@ -94,9 +101,9 @@ jobs:
94101
const matrix = Array.from({ length: numRunners }, (_, i) => i + 1);
95102
core.setOutput("matrix", JSON.stringify(matrix));
96103
97-
playwright:
98-
name: "Run Tests [${{ matrix.project }}] ${{ matrix.runner }}/${{ needs.build.outputs.num-runners }}"
99-
needs: build
104+
playwright_ew:
105+
name: "Run Tests [${{ matrix.project }}] ${{ matrix.runner }}/${{ needs.build_ew.outputs.num-runners }}"
106+
needs: build_ew
100107
if: inputs.skip != true
101108
runs-on: ubuntu-24.04
102109
permissions:
@@ -107,7 +114,7 @@ jobs:
107114
fail-fast: false
108115
matrix:
109116
# Run multiple instances in parallel to speed up the tests
110-
runner: ${{ fromJSON(needs.build.outputs.runners-matrix) }}
117+
runner: ${{ fromJSON(needs.build_ew.outputs.runners-matrix) }}
111118
project:
112119
- Chrome
113120
- Firefox
@@ -133,13 +140,13 @@ jobs:
133140
repository: element-hq/element-web
134141

135142
- name: 📥 Download artifact
136-
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
143+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
137144
with:
138145
name: webapp
139146
path: apps/web/webapp
140147

141-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
142-
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
148+
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
149+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
143150
with:
144151
cache: "pnpm"
145152
cache-dependency-path: pnpm-lock.yaml
@@ -150,10 +157,10 @@ jobs:
150157

151158
- name: Get installed Playwright version
152159
id: playwright
153-
run: echo "version=$(pnpm list @playwright/test --depth=0 --json | jq -r '.[].devDependencies["@playwright/test"].version')" >> $GITHUB_OUTPUT
160+
run: echo "version=$(pnpm --silent -- playwright --version | awk '{print $2}')" >> $GITHUB_OUTPUT
154161

155162
- name: Cache playwright binaries
156-
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
163+
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
157164
id: playwright-cache
158165
with:
159166
path: ~/.cache/ms-playwright
@@ -179,29 +186,85 @@ jobs:
179186
--project="${{ matrix.project }}" \
180187
${{ (github.event_name == 'pull_request' && matrix.runAllTests == false ) && '--grep-invert @mergequeue' || '' }}
181188
env:
182-
SHARD: ${{ format('{0}/{1}', matrix.runner, needs.build.outputs.num-runners) }}
189+
SHARD: ${{ format('{0}/{1}', matrix.runner, needs.build_ew.outputs.num-runners) }}
183190

184191
- name: Upload blob report to GitHub Actions Artifacts
185192
if: always()
186193
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
187194
with:
188-
name: all-blob-reports-${{ matrix.project }}-${{ matrix.runner }}
195+
name: blob-report-${{ matrix.project }}-${{ matrix.runner }}
189196
path: apps/web/blob-report
190197
retention-days: 1
198+
if-no-files-found: error
191199

192200
downstream-modules:
193201
name: Downstream Playwright tests [element-modules]
194-
needs: build
202+
needs: build_ew
195203
if: inputs.skip != true && github.event_name == 'merge_group'
196204
uses: element-hq/element-modules/.github/workflows/reusable-playwright-tests.yml@main # zizmor: ignore[unpinned-uses]
197205
with:
198206
webapp-artifact: webapp
199207

208+
prepare_ed:
209+
name: "Prepare Element Desktop"
210+
uses: ./.github/workflows/build_desktop_prepare.yaml
211+
needs: build_ew
212+
if: inputs.skip != true
213+
permissions:
214+
contents: read
215+
with:
216+
config: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'element.io/nightly' || 'element.io/release' }}
217+
version: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'develop' || '' }}
218+
webapp-artifact: webapp
219+
220+
build_ed_windows:
221+
needs: prepare_ed
222+
name: "Desktop Windows"
223+
uses: ./.github/workflows/build_desktop_windows.yaml
224+
if: inputs.skip != true
225+
strategy:
226+
matrix:
227+
arch: [x64, ia32, arm64]
228+
with:
229+
arch: ${{ matrix.arch }}
230+
blob_report: true
231+
232+
build_ed_linux:
233+
needs: prepare_ed
234+
name: "Desktop Linux"
235+
uses: ./.github/workflows/build_desktop_linux.yaml
236+
if: inputs.skip != true
237+
strategy:
238+
matrix:
239+
sqlcipher: [system, static]
240+
arch: [amd64, arm64]
241+
runAllTests:
242+
- ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'X-Run-All-Tests') }}
243+
# We ship static sqlcipher builds, so delegate testing the system builds to the merge queue
244+
exclude:
245+
- runAllTests: false
246+
sqlcipher: system
247+
with:
248+
sqlcipher: ${{ matrix.sqlcipher }}
249+
arch: ${{ matrix.arch }}
250+
blob_report: true
251+
252+
build_ed_macos:
253+
needs: prepare_ed
254+
name: "Desktop macOS"
255+
uses: ./.github/workflows/build_desktop_macos.yaml
256+
if: inputs.skip != true
257+
with:
258+
blob_report: true
259+
200260
complete:
201261
name: end-to-end-tests
202262
needs:
203-
- playwright
263+
- playwright_ew
204264
- downstream-modules
265+
- build_ed_windows
266+
- build_ed_linux
267+
- build_ed_macos
205268
if: always()
206269
runs-on: ubuntu-24.04
207270
steps:
@@ -211,9 +274,9 @@ jobs:
211274
persist-credentials: false
212275
repository: element-hq/element-web
213276

214-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
277+
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
215278
if: inputs.skip != true
216-
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
279+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
217280
if: inputs.skip != true
218281
with:
219282
cache: "pnpm"
@@ -225,27 +288,30 @@ jobs:
225288

226289
- name: Download blob reports from GitHub Actions Artifacts
227290
if: inputs.skip != true
228-
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
291+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
229292
with:
230-
pattern: all-blob-reports-*
231-
path: apps/web/all-blob-reports
293+
pattern: blob-report-*
294+
path: all-blob-reports
232295
merge-multiple: true
233296

234297
- name: Merge into HTML Report
235298
if: inputs.skip != true
236-
working-directory: apps/web
237-
run: pnpm playwright merge-reports --reporter=html,./playwright/flaky-reporter.ts,@element-hq/element-web-playwright-common/lib/stale-screenshot-reporter.js ./all-blob-reports
299+
run: |
300+
pnpm playwright merge-reports \
301+
--config=playwright-merge.config.ts \
302+
./all-blob-reports
238303
env:
239304
# Only pass creds to the flaky-reporter on main branch runs
240305
GITHUB_TOKEN: ${{ github.ref_name == 'develop' && secrets.ELEMENT_BOT_TOKEN || '' }}
306+
PLAYWRIGHT_HTML_TITLE: ${{ case(github.event_name == 'pull_request', format('Playwright Report PR-{0}', env.PR_NUMBER), 'Playwright Report') }}
241307

242308
# Upload the HTML report even if one of our reporters fails, this can happen when stale screenshots are detected
243309
- name: Upload HTML report
244310
if: always() && inputs.skip != true
245311
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
246312
with:
247313
name: html-report
248-
path: apps/web/playwright-report
314+
path: playwright-report
249315
retention-days: 14
250316
if-no-files-found: error
251317

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ jobs:
4747
with:
4848
persist-credentials: false
4949

50-
- uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4
51-
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
50+
- uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5
51+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
5252
with:
5353
# Disable cache on Windows as it is slower than not caching
5454
# https://github.com/actions/setup-node/issues/975
@@ -66,7 +66,7 @@ jobs:
6666
working-directory: apps/web
6767
env:
6868
CI_PACKAGE: true
69-
run: VERSION=$(scripts/get-version-from-git.sh) pnpm build
69+
run: VERSION=$(scripts/get-version-from-git.sh) pnpm run build
7070

7171
- name: Upload Artifact
7272
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7

0 commit comments

Comments
 (0)