first commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
const events = require("events");
|
||||
const helpers = require("./helpers/global-setup");
|
||||
|
||||
describe("Electron app environment", () => {
|
||||
beforeEach(async () => {
|
||||
await helpers.startApplication("tests/configs/modules/display.js");
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await helpers.stopApplication();
|
||||
});
|
||||
|
||||
it("should open browserwindow", async () => {
|
||||
const module = await helpers.getElement("#module_0_helloworld");
|
||||
expect(await module.textContent()).toContain("Test Display Header");
|
||||
expect(global.electronApp.windows().length).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Development console tests", () => {
|
||||
beforeEach(async () => {
|
||||
await helpers.startApplication("tests/configs/modules/display.js", null, ["js/electron.js", "dev"]);
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await helpers.stopApplication();
|
||||
});
|
||||
|
||||
it("should open browserwindow and dev console", async () => {
|
||||
while (global.electronApp.windows().length < 2) await events.once(global.electronApp, "window");
|
||||
const pageArray = await global.electronApp.windows();
|
||||
expect(pageArray.length).toBe(2);
|
||||
for (const page of pageArray) {
|
||||
expect(["MagicMirror²", "DevTools"]).toContain(await page.title());
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,45 @@
|
||||
// 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"]) => {
|
||||
global.electronApp = null;
|
||||
global.page = null;
|
||||
process.env.MM_CONFIG_FILE = configFilename;
|
||||
process.env.TZ = "GMT";
|
||||
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);
|
||||
};
|
||||
}, systemDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
exports.stopApplication = async () => {
|
||||
if (global.electronApp) {
|
||||
await global.electronApp.close();
|
||||
}
|
||||
global.electronApp = null;
|
||||
global.page = null;
|
||||
};
|
||||
|
||||
exports.getElement = async (selector) => {
|
||||
expect(global.page);
|
||||
let elem = global.page.locator(selector);
|
||||
await elem.waitFor();
|
||||
expect(elem).not.toBe(null);
|
||||
return elem;
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
const { injectMockData } = require("../../utils/weather_mocker");
|
||||
const helpers = require("./global-setup");
|
||||
|
||||
exports.getText = async (element, result) => {
|
||||
const elem = await helpers.getElement(element);
|
||||
await expect(elem).not.toBe(null);
|
||||
const text = await elem.textContent();
|
||||
await expect(
|
||||
text
|
||||
.trim()
|
||||
.replace(/(\r\n|\n|\r)/gm, "")
|
||||
.replace(/[ ]+/g, " ")
|
||||
).toBe(result);
|
||||
};
|
||||
|
||||
exports.startApp = async (configFileNameName, systemDate) => {
|
||||
injectMockData(configFileNameName);
|
||||
await helpers.startApplication("", systemDate);
|
||||
};
|
||||
@@ -0,0 +1,43 @@
|
||||
const helpers = require("../helpers/global-setup");
|
||||
|
||||
describe("Calendar module", () => {
|
||||
/**
|
||||
* move similar tests in function doTest
|
||||
* @param {string} cssClass css selector
|
||||
*/
|
||||
const doTest = async (cssClass) => {
|
||||
let elem = await helpers.getElement(`.calendar .module-content .event${cssClass}`);
|
||||
expect(await elem.isVisible()).toBe(true);
|
||||
};
|
||||
|
||||
afterEach(async () => {
|
||||
await helpers.stopApplication();
|
||||
});
|
||||
|
||||
describe("Test css classes", () => {
|
||||
it("has css class dayBeforeYesterday", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/calendar/custom.js", "03 Jan 2030 12:30:00 GMT");
|
||||
await doTest(".dayBeforeYesterday");
|
||||
});
|
||||
|
||||
it("has css class yesterday", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/calendar/custom.js", "02 Jan 2030 12:30:00 GMT");
|
||||
await doTest(".yesterday");
|
||||
});
|
||||
|
||||
it("has css class today", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/calendar/custom.js", "01 Jan 2030 12:30:00 GMT");
|
||||
await doTest(".today");
|
||||
});
|
||||
|
||||
it("has css class tomorrow", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/calendar/custom.js", "31 Dec 2029 12:30:00 GMT");
|
||||
await doTest(".tomorrow");
|
||||
});
|
||||
|
||||
it("has css class dayAfterTomorrow", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/calendar/custom.js", "30 Dec 2029 12:30:00 GMT");
|
||||
await doTest(".dayAfterTomorrow");
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,44 @@
|
||||
const helpers = require("../helpers/global-setup");
|
||||
|
||||
describe("Compliments module", () => {
|
||||
/**
|
||||
* move similar tests in function doTest
|
||||
* @param {Array} complimentsArray The array of compliments.
|
||||
*/
|
||||
const doTest = async (complimentsArray) => {
|
||||
await helpers.getElement(".compliments");
|
||||
const elem = await helpers.getElement(".module-content");
|
||||
expect(elem).not.toBe(null);
|
||||
expect(complimentsArray).toContain(await elem.textContent());
|
||||
};
|
||||
|
||||
afterEach(async () => {
|
||||
await helpers.stopApplication();
|
||||
});
|
||||
|
||||
describe("parts of days", () => {
|
||||
it("Morning compliments for that part of day", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/compliments/compliments_parts_day.js", "01 Oct 2022 10:00:00 GMT");
|
||||
await doTest(["Hi", "Good Morning", "Morning test"]);
|
||||
});
|
||||
|
||||
it("Afternoon show Compliments for that part of day", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/compliments/compliments_parts_day.js", "01 Oct 2022 15:00:00 GMT");
|
||||
await doTest(["Hello", "Good Afternoon", "Afternoon test"]);
|
||||
});
|
||||
|
||||
it("Evening show Compliments for that part of day", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/compliments/compliments_parts_day.js", "01 Oct 2022 20:00:00 GMT");
|
||||
await doTest(["Hello There", "Good Evening", "Evening test"]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Feature date in compliments module", () => {
|
||||
describe("Set date and empty compliments for anytime, morning, evening and afternoon", () => {
|
||||
it("shows happy new year compliment on new years day", async () => {
|
||||
await helpers.startApplication("tests/configs/modules/compliments/compliments_date.js", "01 Jan 2022 10:00:00 GMT");
|
||||
await doTest(["Happy new year!"]);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
const helpers = require("../helpers/global-setup");
|
||||
const weatherHelper = require("../helpers/weather-setup");
|
||||
|
||||
describe("Weather module", () => {
|
||||
afterEach(async () => {
|
||||
await helpers.stopApplication();
|
||||
});
|
||||
|
||||
describe("Current weather with sunrise", () => {
|
||||
beforeAll(async () => {
|
||||
await weatherHelper.startApp("tests/configs/modules/weather/currentweather_default.js", "13 Jan 2019 00:30:00 GMT");
|
||||
});
|
||||
|
||||
it("should render sunrise", async () => {
|
||||
await weatherHelper.getText(".weather .normal.medium span:nth-child(4)", "7:00 am");
|
||||
});
|
||||
});
|
||||
|
||||
describe("Current weather with sunset", () => {
|
||||
beforeAll(async () => {
|
||||
await weatherHelper.startApp("tests/configs/modules/weather/currentweather_default.js", "13 Jan 2019 12:30:00 GMT");
|
||||
});
|
||||
|
||||
it("should render sunset", async () => {
|
||||
await weatherHelper.getText(".weather .normal.medium span:nth-child(4)", "3:45 pm");
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user