1
0
mirror of https://github.com/element-hq/element-web.git synced 2026-10-23 11:09:01 +03:00

19 Commits

Author SHA1 Message Date
Michael Telatynski
8359e4f150 Migrate remainder of Jest tests to Vitest (#35084)
* Migrate final batch of tests from Jest to Vitest

* Update test-utils imports

* Move test-utils

* Remove the remainder of Jest

* Make tsc & knip happy

 Conflicts:
	pnpm-lock.yaml

* Fix bad merge conflict

* Iterate
2026-09-18 11:13:19 +00:00
Michael Telatynski
6d644ffe78 Remove legacy Module & Customisation API (#33941)
* Remove legacy Module & Customisation API

in favour of the new runtime modules system

* Delint

* Remove unused i18n string

* Fix tests

* Fix test

* Fix tests

* Iterate

* Fix bad merge

* Bump Module API version

* Bump module-api compatibility ranges

* Update docs

* Fix semver ranges

* Update test module API version

* Too many versions

* Too many versions again
2026-09-11 13:32:48 +00:00
David Langley
ca589fd7f6 Add multi-digit support for overlay badges and tests (#33637)
* Add multi-digit support for overlay badges and tests

Fix multi-digit notification badge in Windows taskbar overlay

The BadgeOverlayRenderer reused the over-baseImage layout for the
standalone 16x16 overlay, which pushed multi-digit badges off the left
of the canvas (e.g. "10" rendered as just "0"). Keep the pill inside
the canvas bounds in the no-baseImage path and reduce its height for
multi-digit counts so the rounded-rect path actually produces a pill.

Adds a Playwright test that bundles favicon.ts with esbuild, drives
the real BadgeOverlayRenderer in Chromium, and writes the resulting
PNGs to disk plus a scaled-up screenshot snapshot for regression
detection.

Include summary for overlay and favicon

* add esbuild as devDependency

* Update pnpm-lock.yaml

* e2e -> unit test

* Fix regression on vertical alignment of the badge text

* Update pnpm-lock.yaml

* Fix prettier formatting in favicon.ts and image snapshot tests

* Clamp Windows overlay badge at "99+"

Clamp Windows overlay badge at "99+"

The Windows taskbar overlay is only 16x16 px and the platform's own
notification badges clamp at "99+", so do the same here rather than
trying to fit three-digit counts or "1k+" labels into the tiny canvas.
Browser-tab favicons are unaffected and still render larger counts.

* Move badge rendering tests to vitest browser mode

* Rename browser tests to *.test.browser.ts

* Exclude browser tests from jest coverage collection

* Scope browser matcher types to the browser tests

* Tell knip @vitest/browser is used via tsconfig types

---------

Co-authored-by: David Langley <langley.dave@gmail.com>
2026-09-02 07:58:34 +00:00
Michael Telatynski
bbec915fb0 Enable more oxlint rules (#34189)
* Fix type imports

* Fix jsdoc

* Fixup types

* Fix stray awaits on non-thenables

* Fixup imports

* Fix splats

* Fix this-context on callbacks

* Memoise react contexts

* Prefer find/flatMap

* Make oxlint happier about our React keys

* Avoid unsafe default function params

* Fixup jsdoc

* Fixup contexts

* Switch from eslint to oxlint

* Some oxlint-related tweaks

* Iterate

* Partial revert to defer some changes and shrink diff

* Iterate

* Add eslint-plugin-element-call and enable the copyright rule

* Set strictStorePkgContentCheck

* Iterate

* Enable forwardRef oxlint rule

* Enable no-unused-vars oxlint rule

* Enable no-implied-eval oxlint rule

* Enable no-duplicate-type-constituents oxlint rule

* Enable explicit-length-check oxlint rule

* Enable prefer-number-properties oxlint rule

* Enable no-callback-in-promise oxlint rule

* Enable no-require-imports oxlint rule

* Remove disablement of most unicorn oxlint rules

* Enable no-conditional-tests oxlint rule

* Enable promise-valid-params oxlint rule

* Enable require-unicode-regexp oxlint rule

* Remove max-len comments as we use oxfmt for formatting

* Enable majority of oxlint `suspicious` rules

* Iterate

* Fix oxlint type-aware lint running without dependencies built
2026-07-29 08:26:07 +00:00
Michael Telatynski
2f4e6a4ec4 Use vitest for some EW unit tests (#33816)
* Use vitest for some EW unit tests

* Ensure library builds are done before unit tests

* Stabilise jest tests

* Move more tests over

* Make sonar happier

* Update types/node for happy-dom compat again

* Decrease max-workers to stabilise jest tests

* Split jest over 3 runners to alleviate memory woes

* Switch jest to runInBand

* Attempt to deflake jest tests

* tweak coverage

* tweak coverage
2026-06-15 13:24:33 +00:00
Michael Telatynski
702bd7a5a4 pnpm start in EW should start dependencies also (#33761) 2026-06-05 09:36:45 +00:00
Florian Duros
1ef544c5c6 Room list: add analytic events (#33625)
* chore: update analytics

* feat: add new analytics
2026-05-27 09:50:22 +00:00
Richard van der Hoff
1f6d1dbc0d Avoid nx jest executor for running unit tests (#33220)
* Avoid nx jest executor for running unit tests

The jest executor mangles the "summary of failing tests" from jest.

* Remove unneded dep on nx/jest
2026-04-21 14:07:54 +00:00
Richard van der Hoff
3f3ed93b8a nx test:playwright:screenshots: only do snapshots for Chrome (#33216)
* nx test:playwright:screenshots: only do snapshots for Chrome

`nx` eats the `--project` option unless we prefix with `--`.

* Apply suggestion from @richvdh
2026-04-21 11:34:22 +00:00
Michael Telatynski
133a56da65 Playwright docker improvements (#33213)
* Clean up playwright-common Dockerfile

* Speed up element-web docker build

* Wire up element-desktop playwright tests via nx

* Better debug logs for Element Desktop playwright in CI

* Iterate

* Iterate

* Fix element-desktop screenshot docker

* @electron/fuses

* Partial revert
2026-04-21 09:58:16 +00:00
Michael Telatynski
561dbd32be Iterate 2026-04-09 15:31:34 +01:00
Michael Telatynski
540e620f40 Adjust consumers of playwright-common 2026-04-09 15:22:56 +01:00
renovate[bot]
16b12dea95 Update dependency webpack-cli to v7 (#32847)
* Update dependency webpack-cli to v7

* Remove stale webpack cli args

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

---------

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-03-20 16:11:11 +00:00
Richard van der Hoff
8fe2e72245 Fix nx configuration to actually run type linter (#32776)
* do not indirect tsc commands via tsc

Currently, `nx lint:types` is configured to indirect its `tsc` incantations via
pnpm. As far as I can tell, this is unnecessary; worse, it means we seem to hit
a pnpm reentrancy bug which causes pnpm not to run those commands at all if the
top level pnpm has `--if-present`.

* Reinstate indirection via pnpm

... to evade knip.
2026-03-13 09:59:16 +00:00
Michael Telatynski
32037b0135 Make knip happier (#32721)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2026-03-05 21:42:08 +00:00
Michael Telatynski
0a308743b8 Rewrite copy-res i18n build as a webpack plugin (#32664)
* Replace copy-res with a webpack plugin

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

* Specify writeToDisk=true for webpack-dev-server

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

* Use async fs methods

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

---------

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2026-02-27 13:00:25 +00:00
Michael Telatynski
056f0f03d6 Remove nx implicitDependencies
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2026-02-24 21:27:04 +00:00
Michael Telatynski
b8509d249b Fixup paths
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2026-02-24 21:27:03 +00:00
Michael Telatynski
91a3cb03c1 mv element.io @types __mocks__/ debian docker module_system/ playwright res src test webapp Dockerfile .dockerignore .eslintignore .stylelintrc.cjs babel.config.cjs recorder-worklet-loader.cjs .modernizr.json components.json config.json config.sample.json package.json project.json tsconfig.json tsconfig.module_system.json jest.config.ts playwright.config.ts webpack.config.ts build_config.sample.yaml apps/web/
mkdir apps/web/scripts
mv scripts/{cleanup.sh,ci_package.sh,copy-res.ts,deploy.py,package.sh} apps/web/scripts

And a couple of gitignore tweaks

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2026-02-24 15:43:58 +00:00