Consolidate vitest CI & coverage (#33808)

* Consolidate modules vitest coverage

* Use vite-common as base for modules vitest config

* Make knip happier

* Fix coverage paths

* Place modules unit tests alongside src

* Switch to defineProject for better type safety

* Consolidate vitest CI & coverage

Kills off vite-common

* Update comment

* Update lockfile

* Fix shared-components vitest config

* Soften eslint config for tests in modules

* Run eslint on modules/playwright dir too

* Make tsc happy
This commit is contained in:
Michael Telatynski
2026-06-10 17:00:34 +01:00
committed by GitHub
parent 042ded86c7
commit e9a89d9872
34 changed files with 252 additions and 301 deletions
-1
View File
@@ -13,7 +13,6 @@
"devDependencies": {
"@element-hq/element-web-module-api": "workspace:*",
"@types/node": "^22.10.7",
"@vitest/coverage-v8": "catalog:",
"typescript": "catalog:",
"vite": "catalog:",
"vitest": "catalog:"
@@ -7,12 +7,13 @@ Please see LICENSE files in the repository root for full details.
import { describe, expect, it } from "vitest";
import WidgetLifecycleModule, { type WidgetLifecycleApiAdapter } from "../src/WidgetLifecycleModule";
import WidgetLifecycleModule, { type WidgetLifecycleApiAdapter } from "./WidgetLifecycleModule";
import type {
CapabilitiesApprover,
IdentityApprover,
PreloadApprover,
WidgetDescriptor,
Api,
} from "@element-hq/element-web-module-api";
const createApi = (config: unknown = {}) => {
@@ -40,7 +41,7 @@ const createApi = (config: unknown = {}) => {
get: () => config,
},
widgetLifecycle,
},
} as Api,
handlers,
};
};
@@ -49,7 +50,8 @@ const widget: WidgetDescriptor = {
id: "widget-id",
templateUrl: "https://example.com/",
creatorUserId: "@user-id",
kind: "room",
type: "com.example.custom",
origin: "example.com",
};
describe("WidgetLifecycleModule", () => {
@@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details.
import { describe, expect, it } from "vitest";
import { parseWidgetLifecycleConfig } from "../src/config";
import { parseWidgetLifecycleConfig } from "./config";
describe("parseWidgetLifecycleConfig", () => {
it("accepts missing configuration", () => {
@@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details.
import { describe, expect, it } from "vitest";
import { constructWidgetPermissions, sortLongestMatchLast } from "../src/utils/constructWidgetPermissions";
import { constructWidgetPermissions, sortLongestMatchLast } from "./constructWidgetPermissions";
describe("constructWidgetPermissions", () => {
it("finds exact match", () => {
@@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details.
import { describe, expect, it } from "vitest";
import { matchPattern } from "../src/utils/matchPattern";
import { matchPattern } from "./matchPattern";
describe("matchPattern", () => {
it.each([
+2 -9
View File
@@ -5,17 +5,10 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/
import { defineConfig } from "vitest/config";
import { defineProject } from "vitest/config";
export default defineConfig({
export default defineProject({
test: {
include: ["tests/**/*.test.ts"],
exclude: ["./e2e/**/*", "./node_modules/**/*"],
reporters: ["default"],
coverage: {
provider: "v8",
include: ["src/**/*.ts"],
reporter: [["lcov", { projectRoot: "../../" }], "text"],
},
},
});