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:
committed by
GitHub
parent
042ded86c7
commit
e9a89d9872
@@ -74,7 +74,6 @@
|
||||
"@babel/preset-typescript": "^7.18.6",
|
||||
"@electron/asar": "4.2.0",
|
||||
"@electron/fuses": "^2.1.1",
|
||||
"@element-hq/vite-common": "workspace:*",
|
||||
"@playwright/test": "catalog:",
|
||||
"@stylistic/eslint-plugin": "^5.0.0",
|
||||
"@types/auto-launch": "^5.0.1",
|
||||
@@ -84,7 +83,6 @@
|
||||
"@types/pacote": "^11.1.1",
|
||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@vitest/coverage-v8": "catalog:",
|
||||
"app-builder-lib": "26.15.1",
|
||||
"chokidar": "^5.0.0",
|
||||
"detect-libc": "^2.0.0",
|
||||
|
||||
@@ -7,9 +7,13 @@ Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { expect, describe, it, beforeEach, vi } from "vitest";
|
||||
import { fs as memfs, vol } from "memfs";
|
||||
import { dirname } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
import { getBuildConfig } from "./build-config.js";
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
vi.mock("node:fs", () => ({ default: memfs }));
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -19,13 +23,16 @@ beforeEach(() => {
|
||||
|
||||
describe("getBuildConfig", () => {
|
||||
it("should read fields from package.json correctly", () => {
|
||||
vol.fromJSON({
|
||||
"package.json": JSON.stringify({
|
||||
electron_appId: "app.id",
|
||||
electron_protocol: "proto",
|
||||
electron_windows_cert_sn: "subject.name",
|
||||
}),
|
||||
});
|
||||
vol.fromJSON(
|
||||
{
|
||||
"../package.json": JSON.stringify({
|
||||
electron_appId: "app.id",
|
||||
electron_protocol: "proto",
|
||||
electron_windows_cert_sn: "subject.name",
|
||||
}),
|
||||
},
|
||||
__dirname,
|
||||
);
|
||||
|
||||
const config = getBuildConfig();
|
||||
expect(config.appId).toBe("app.id");
|
||||
|
||||
@@ -7,10 +7,13 @@ Please see LICENSE files in the repository root for full details.
|
||||
|
||||
import { expect, describe, it, beforeEach, vi } from "vitest";
|
||||
import { fs as memfs, vol } from "memfs";
|
||||
import path from "node:path";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
import { getIconPath } from "./icon.js";
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
vi.mock("node:fs/promises", () => ({ default: memfs.promises }));
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -25,20 +28,20 @@ describe("getIconPath", () => {
|
||||
"build/icon.png": "png",
|
||||
"build/icon.ico": "ico",
|
||||
},
|
||||
"../webapp",
|
||||
resolve(__dirname, "../webapp"),
|
||||
);
|
||||
});
|
||||
|
||||
it("should use .ico on Windows", async () => {
|
||||
vi.spyOn(process, "platform", "get").mockReturnValue("win32");
|
||||
await expect(getIconPath()).resolves.toEqual(path.resolve("../build/icon.ico"));
|
||||
await expect(getIconPath()).resolves.toEqual(resolve(__dirname, "../build/icon.ico"));
|
||||
});
|
||||
it("should use .png on macOS", async () => {
|
||||
vi.spyOn(process, "platform", "get").mockReturnValue("darwin");
|
||||
await expect(getIconPath()).resolves.toEqual(path.resolve("../build/icon.png"));
|
||||
await expect(getIconPath()).resolves.toEqual(resolve(__dirname, "../build/icon.png"));
|
||||
});
|
||||
it("should use .png on Linux", async () => {
|
||||
vi.spyOn(process, "platform", "get").mockReturnValue("linux");
|
||||
await expect(getIconPath()).resolves.toEqual(path.resolve("../build/icon.png"));
|
||||
await expect(getIconPath()).resolves.toEqual(resolve(__dirname, "../build/icon.png"));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,19 +5,13 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
import { defineConfig, mergeConfig } from "vitest/config";
|
||||
import baseConfig from "@element-hq/vite-common/vite.config.js";
|
||||
import { defineProject } from "vitest/config";
|
||||
|
||||
export default mergeConfig(
|
||||
baseConfig,
|
||||
defineConfig({
|
||||
test: {
|
||||
coverage: {
|
||||
// The coverage report currently chokes on this file as it doesn't process it as TypeScript
|
||||
exclude: ["src/preload.cts"],
|
||||
},
|
||||
include: ["src/**/*.test.ts"],
|
||||
},
|
||||
}),
|
||||
true,
|
||||
);
|
||||
export default defineProject({
|
||||
test: {
|
||||
include: ["src/**/*.test.ts"],
|
||||
environment: "node",
|
||||
pool: "threads",
|
||||
globals: false,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user