mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-12-12 09:52:37 +00:00
[tests] migrate from jest to vitest (#3940)
This is a big change, but I think it's a good move, as `vitest` is much more modern than `jest`. I'm excited about the UI watch feature (run `npm run test:ui`), for example - it's really helpful and saves time when debugging tests. I had to adjust a few tests because they had time related issues, but basically we are now testing the same things - even a bit better and less flaky (I hope). What do you think?
This commit is contained in:
committed by
GitHub
parent
b542f33a0a
commit
462abf7027
@@ -1,30 +0,0 @@
|
||||
const TestSequencer = require("@jest/test-sequencer").default;
|
||||
|
||||
class CustomSequencer extends TestSequencer {
|
||||
sort (tests) {
|
||||
const orderPath = ["unit", "electron", "e2e"];
|
||||
return tests.sort((testA, testB) => {
|
||||
let indexA = -1;
|
||||
let indexB = -1;
|
||||
const reg = ".*/tests/([^/]*).*";
|
||||
|
||||
// move calendar and newsfeed at the end
|
||||
if (testA.path.includes("e2e/modules/calendar_spec") || testA.path.includes("e2e/modules/newsfeed_spec")) return 1;
|
||||
if (testB.path.includes("e2e/modules/calendar_spec") || testB.path.includes("e2e/modules/newsfeed_spec")) return -1;
|
||||
|
||||
let matchA = new RegExp(reg, "g").exec(testA.path);
|
||||
if (matchA.length > 0) indexA = orderPath.indexOf(matchA[1]);
|
||||
|
||||
let matchB = new RegExp(reg, "g").exec(testB.path);
|
||||
if (matchB.length > 0) indexB = orderPath.indexOf(matchB[1]);
|
||||
|
||||
if (indexA === indexB) return 0;
|
||||
|
||||
if (indexA === -1) return 1;
|
||||
if (indexB === -1) return -1;
|
||||
return indexA < indexB ? -1 : 1;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = CustomSequencer;
|
||||
21
tests/utils/vitest-setup.js
Normal file
21
tests/utils/vitest-setup.js
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* Vitest setup file for module aliasing
|
||||
* This allows require("logger") to work in unit tests
|
||||
*/
|
||||
|
||||
const Module = require("node:module");
|
||||
const path = require("node:path");
|
||||
|
||||
// Store the original require
|
||||
const originalRequire = Module.prototype.require;
|
||||
|
||||
// Override require to handle our custom aliases
|
||||
Module.prototype.require = function (id) {
|
||||
// Handle "logger" alias
|
||||
if (id === "logger") {
|
||||
return originalRequire.call(this, path.resolve(__dirname, "../../js/logger.js"));
|
||||
}
|
||||
|
||||
// Handle all other requires normally
|
||||
return originalRequire.apply(this, arguments);
|
||||
};
|
||||
Reference in New Issue
Block a user