Switch to happy-dom for testing (#29948)

Use `happy-dom` again in vitest as it has caught up recently to `jsdom`
in terms of features and it is a much more lightweight solution.

I encountered [one
bug](https://github.com/capricorn86/happy-dom/issues/1342), but it's an
easy workaround until fixed.

I regenerated the lockfile to get rid of the transitive dependencies so
that's why the diff also has some upgrades in it.

In total, this change removes 39 npm dependencies.
This commit is contained in:
silverwind
2024-03-21 15:05:24 +01:00
repo.diff.committed_by GitHub
repo.diff.parent 62f8174aa2
repo.diff.commit 82979588f4
repo.diff.stats_desc%!(EXTRA int=4, int=323, int=1066)

1383
package-lock.json repo.diff.generated

repo.diff.file_suppressed repo.diff.load

repo.diff.view_file

@@ -84,7 +84,7 @@
"eslint-plugin-vue": "9.23.0",
"eslint-plugin-vue-scoped-css": "2.7.2",
"eslint-plugin-wc": "2.0.4",
"jsdom": "24.0.0",
"happy-dom": "14.2.0",
"markdownlint-cli": "0.39.0",
"postcss-html": "1.6.0",
"stylelint": "16.2.1",

repo.diff.view_file

@@ -6,7 +6,7 @@ export default defineConfig({
test: {
include: ['web_src/**/*.test.js'],
setupFiles: ['web_src/js/vitest.setup.js'],
environment: 'jsdom',
environment: 'happy-dom',
testTimeout: 20000,
open: false,
allowOnly: true,

repo.diff.view_file

@@ -205,7 +205,7 @@ export const SvgIcon = {
// make the <SvgIcon class="foo" class-name="bar"> classes work together
const classes = [];
for (const cls of svgOuter.classList) {
for (const cls of svgOuter.classList.values()) {
classes.push(cls);
}
// TODO: drop the `className/class-name` prop in the future, only use "class" prop