mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-08-21 12:55:22 +00:00
Make the e2e tests wait for the app to start and close before running next test (#2952)
When trying to debug why the tests broke for https://github.com/MichMich/MagicMirror/pull/2946 I found that the tests does not wait for the app to start and close. So if the startup isn't blocking that would fail. So I added a callback for `close()` too and converted them to promises for the `startApplication()` and `stopApplication()` and updated all the e2e tests to await both. Will try to refactor all these callbacks to promises in a later PR.
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
const jsdom = require("jsdom");
|
||||
const corefetch = require("fetch");
|
||||
|
||||
exports.startApplication = (configFilename, exec) => {
|
||||
exports.startApplication = async (configFilename, exec) => {
|
||||
jest.resetModules();
|
||||
this.stopApplication();
|
||||
if (global.app) {
|
||||
await this.stopApplication();
|
||||
}
|
||||
// Set config sample for use in test
|
||||
if (configFilename === "") {
|
||||
process.env.MM_CONFIG_FILE = "config/config.js";
|
||||
@@ -12,14 +13,20 @@ exports.startApplication = (configFilename, exec) => {
|
||||
}
|
||||
if (exec) exec;
|
||||
global.app = require("app.js");
|
||||
global.app.start();
|
||||
|
||||
return new Promise((resolve) => {
|
||||
global.app.start(resolve);
|
||||
});
|
||||
};
|
||||
|
||||
exports.stopApplication = async () => {
|
||||
if (global.app) {
|
||||
global.app.stop();
|
||||
return new Promise((resolve) => {
|
||||
global.app.stop(resolve);
|
||||
delete global.app;
|
||||
});
|
||||
}
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
exports.getDocument = () => {
|
||||
@@ -75,13 +82,8 @@ exports.waitForAllElements = (selector) => {
|
||||
});
|
||||
};
|
||||
|
||||
exports.fetch = (url) => {
|
||||
return new Promise((resolve) => {
|
||||
corefetch(url).then((res) => {
|
||||
resolve(res);
|
||||
});
|
||||
});
|
||||
};
|
||||
// When native fetch is used keep-alive is set which causes issues with tests that should not share the connection, fall back to use the older one for now...
|
||||
exports.fetch = require("node-fetch");
|
||||
|
||||
exports.testMatch = async (element, regex) => {
|
||||
const elem = await this.waitForElement(element);
|
||||
|
Reference in New Issue
Block a user