mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-28 12:12:20 +00:00
fixes #3597 Changes: - electron tests: add mocking to `electron.js` for mocking the server side, before only the browser side was mocked - publish "/tests/configs" and "/tests/mocks" always in `server.js`, this reverts a change done with latest release, we need this for debugging (otherwise you get on the screen that your config has errors but config check is successful ...) - revert hotfix in `tests/configs/modules/calendar/show-duplicates-in-calendar.js` - fix `tests/configs/modules/calendar/custom.js` to allow events in the past (~~I don't know how this could work before~~ when testing css classes `yesterday` and `dayBeforeYesterday` --> it worked before because the server side did not mock and therefore was not in the past)
51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
// see https://playwright.dev/docs/api/class-electronapplication
|
|
// https://github.com/microsoft/playwright/issues/6347#issuecomment-1085850728
|
|
// https://www.anycodings.com/1questions/958135/can-i-set-the-date-for-playwright-browser
|
|
const { _electron: electron } = require("playwright");
|
|
|
|
exports.startApplication = async (configFilename, systemDate = null, electronParams = ["js/electron.js"], timezone = "GMT") => {
|
|
global.electronApp = null;
|
|
global.page = null;
|
|
process.env.MM_CONFIG_FILE = configFilename;
|
|
process.env.TZ = timezone;
|
|
if (systemDate) {
|
|
process.env.MOCK_DATE = systemDate;
|
|
}
|
|
|
|
global.electronApp = await electron.launch({ args: electronParams });
|
|
|
|
await global.electronApp.firstWindow();
|
|
|
|
for (const win of global.electronApp.windows()) {
|
|
const title = await win.title();
|
|
expect(["MagicMirror²", "DevTools"]).toContain(title);
|
|
if (title === "MagicMirror²") {
|
|
global.page = win;
|
|
if (systemDate) {
|
|
await global.page.evaluate((systemDate) => {
|
|
Date.now = () => {
|
|
return new Date(systemDate).valueOf();
|
|
};
|
|
}, systemDate);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
exports.stopApplication = async () => {
|
|
if (global.electronApp) {
|
|
await global.electronApp.close();
|
|
}
|
|
global.electronApp = null;
|
|
global.page = null;
|
|
process.env.MOCK_DATE = undefined;
|
|
};
|
|
|
|
exports.getElement = async (selector) => {
|
|
expect(global.page).not.toBeNull();
|
|
let elem = global.page.locator(selector);
|
|
await elem.waitFor();
|
|
expect(elem).not.toBeNull();
|
|
return elem;
|
|
};
|