[PM-35903] Update clients to node 24#20400
Conversation
94a5847 to
253474e
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #20400 +/- ##
=======================================
Coverage 47.10% 47.10%
=======================================
Files 3948 3948
Lines 119688 119688
Branches 18344 18344
=======================================
+ Hits 56374 56376 +2
+ Misses 59080 59078 -2
Partials 4234 4234 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
djsmith85
left a comment
There was a problem hiding this comment.
The broken tests is something that @cd-bitwarden had also found with the initial attempt to bump Jest to 30.
I was under the impression that jest and jest-environment-jsdom were transient dependencies via Angular. That's why we didn't have it setup in the package.json or in renovate. With me introducing Jest 30 as a direct dev dependency, it seems to also require jest-environment-jsdom (as of Jest 28).
Thanks for raising this and using an intermediate step towards fixing this.
I'll look into fixing the tests once this is merged
|
Great job! No new security vulnerabilities introduced in this pull request |
djsmith85
left a comment
There was a problem hiding this comment.
Missing a bump of the node version in apps/web/Dockerfile
|
Thanks for the heads up @djsmith85! Seems like it wasn't updated to node 22 last time so I missed it when I searched for the version number |
|




🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-35903
📔 Objective
Update all the clients to node 24 except the CLI, which will stay behind so we don't need to update yaopkg for now. This PR is fairly similar to the one where we had to do the same thing for node 22: #15058
Electron is using it's own bundled node version, so it will stay on 22 until #19848 is merged.
Note, I had to update the lockfile and also add
jest-environment-jsdomversion 29 to the dependencies. This is the version we were already using transitively, but npm 11 must have changed the dependency resolution in some way causing tests to not find it. Updating it to version 30 to match the rest of thejestdependencies broke a lot of tests in browser/web as it made madewindow.location,window.top, andLocation.prototype.reloadreadonly, so I've left that as followup work.I've also fixed a manual polyfill of
Symbol.dispose, as they're readonly on node24 and caused some tests to fail.📸 Screenshots