From 0a2f311cc8a312c8b34cf8042fe5dc87a85e8b33 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 30 Jan 2025 10:58:23 +0000 Subject: [PATCH] Wire up tests & sonarcloud --- packages/element-web-module-api/package.json | 8 +++++-- .../element-web-module-api/src/api.test.ts | 24 +++++++++++++++++++ .../element-web-module-api/vite.config.ts | 18 ++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 packages/element-web-module-api/src/api.test.ts diff --git a/packages/element-web-module-api/package.json b/packages/element-web-module-api/package.json index c3b8093a61..2c7f17038a 100644 --- a/packages/element-web-module-api/package.json +++ b/packages/element-web-module-api/package.json @@ -19,7 +19,8 @@ ], "scripts": { "prepare": "vite build && api-extractor run", - "lint:ts": "tsc --noEmit" + "lint:ts": "tsc --noEmit", + "test": "vitest" }, "devDependencies": { "@matrix-org/react-sdk-module-api": "^2.5.0", @@ -27,11 +28,14 @@ "@types/node": "^22.10.7", "@types/react": "^18", "@types/semver": "^7.5.8", + "@vitest/coverage-v8": "^3.0.4", "matrix-web-i18n": "^3.3.0", "semver": "^7.6.3", "typescript": "^5.7.3", "vite": "^6.0.11", - "vite-plugin-dts": "^4.5.0" + "vite-plugin-dts": "^4.5.0", + "vitest": "^3.0.4", + "vitest-sonar-reporter": "^2.0.0" }, "peerDependencies": { "@matrix-org/react-sdk-module-api": "*", diff --git a/packages/element-web-module-api/src/api.test.ts b/packages/element-web-module-api/src/api.test.ts new file mode 100644 index 0000000000..f68200f122 --- /dev/null +++ b/packages/element-web-module-api/src/api.test.ts @@ -0,0 +1,24 @@ +/* +Copyright 2025 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { expect, test } from "vitest"; + +import { Api, isModule } from "./api.js"; + +const TestModule = { + default: class TestModule { + public static moduleApiVersion = "1.0.0"; + public constructor(private readonly api: Api) {} + public async load(): Promise { + console.log("TestModule loaded"); + } + }, +}; + +test("isModule correctly identifies valid modules", () => { + expect(isModule(TestModule)).toBe(true); +}); diff --git a/packages/element-web-module-api/vite.config.ts b/packages/element-web-module-api/vite.config.ts index 0fee8e9834..6b0d47a8a2 100644 --- a/packages/element-web-module-api/vite.config.ts +++ b/packages/element-web-module-api/vite.config.ts @@ -27,4 +27,22 @@ export default defineConfig({ define: { __VERSION__: JSON.stringify(process.env.npm_package_version), }, + test: { + coverage: { + provider: "v8", + include: ["src/**/*"], + reporter: "lcov", + }, + reporters: [ + [ + "vitest-sonar-reporter", + { + outputFile: "coverage/sonar-report.xml", + onWritePath(path: string): string { + return `packages/element-web-module-api/${path}`; + }, + }, + ], + ], + }, });