Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AnimateCSS integration in tests suite #3206

Merged
merged 4 commits into from
Sep 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ _This release is scheduled to be released on 2023-10-01._
- Apply AnimateIn rules on the first start
- Added automatic client page reload when server was restarted by setting `reloadAfterServerRestart: true` in `config.js`, per default `false` (#3105)
- Added eventClass option for customEvents on the default calendar
- Added AnimateCSS integration in tests suite (#3206)

### Removed

Expand Down
28 changes: 28 additions & 0 deletions tests/configs/modules/compliments/compliments_animateCSS.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/* MagicMirror² Test config sample for AnimateCSS integration with compliments module
*
* By bugsounet https://github.com/bugsounet
* 09/2023
* MIT Licensed.
*/
let config = {
modules: [
{
module: "compliments",
position: "lower_third",
animateIn: "flipInX",
animateOut: "flipOutX",
config: {
compliments: {
anytime: ["AnimateCSS Testing..."]
},
updateInterval: 2000,
fadeSpeed: 1000
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* MagicMirror² Test config sample for AnimateCSS integration with compliments module
* --> if animation name is not an AnimateCSS animation
* --> must fallback to default (no animation)
* By bugsounet https://github.com/bugsounet
* 09/2023
* MIT Licensed.
*/
let config = {
modules: [
{
module: "compliments",
position: "lower_third",
animateIn: "foo",
animateOut: "bar",
config: {
compliments: {
anytime: ["AnimateCSS Testing..."]
},
updateInterval: 2000,
fadeSpeed: 1000
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/* MagicMirror² Test config sample for AnimateCSS integration with compliments module
* --> inversed name animation : in for out and vice versa (must return no animation)
* By bugsounet https://github.com/bugsounet
* 09/2023
* MIT Licensed.
*/
let config = {
modules: [
{
module: "compliments",
position: "lower_third",
animateIn: "flipOutX",
animateOut: "flipInX",
config: {
compliments: {
anytime: ["AnimateCSS Testing..."]
},
updateInterval: 2000,
fadeSpeed: 1000
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
78 changes: 78 additions & 0 deletions tests/e2e/animateCSS_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/* AnimateCSS integration Test with compliments module
*
* By bugsounet https://github.com/bugsounet
* and helped by khassel
* 09/2023
* MIT Licensed.
*/
const helpers = require("./helpers/global-setup.js");

describe("AnimateCSS integration Test", () => {
// define config file for testing
let testConfigFile = "tests/configs/modules/compliments/compliments_animateCSS.js";
// define config file to fallback to default: wrong animation name (must return no animation)
let testConfigFileFallbackToDefault = "tests/configs/modules/compliments/compliments_animateCSS_fallbackToDefault.js";
// define config file with an inversed name animation : in for out and vice versa (must return no animation)
let testConfigFileInvertedAnimationName = "tests/configs/modules/compliments/compliments_animateCSS_invertedAnimationName.js";
// define config file with no animation defined
let testConfigByDefault = "tests/configs/modules/compliments/compliments_anytime.js";

/**
* move similar tests in function doTest
* @param {string} [animationIn] animation in name of AnimateCSS to test.
* @param {string} [animationOut] animation out name of AnimateCSS to test.
*/
const doTest = async (animationIn, animationOut) => {
await helpers.getDocument();
let elem = await helpers.waitForElement(`.compliments`);
expect(elem).not.toBe(null);
let styles = window.getComputedStyle(elem);

if (animationIn && animationIn !== "") {
expect(styles._values["animation-name"]).toBe(animationIn);
} else {
expect(styles._values["animation-name"]).toBe(undefined);
}

if (animationOut && animationOut !== "") {
elem = await helpers.waitForElement(`.compliments.animate__animated.animate__${animationOut}`);
expect(elem).not.toBe(null);
styles = window.getComputedStyle(elem);
expect(styles._values["animation-name"]).toBe(animationOut);
} else {
expect(styles._values["animation-name"]).toBe(undefined);
}
};

afterEach(async () => {
await helpers.stopApplication();
});

describe("animateIn and animateOut Test", () => {
it("with flipInX and flipOutX animation", async () => {
await helpers.startApplication(testConfigFile);
await doTest("flipInX", "flipOutX");
});
});

describe("use animateOut name for animateIn (vice versa) Test", () => {
it("without animation", async () => {
await helpers.startApplication(testConfigFileInvertedAnimationName);
await doTest();
});
});

describe("false Animation name test", () => {
it("without animation", async () => {
await helpers.startApplication(testConfigFileFallbackToDefault);
await doTest();
});
});

describe("no Animation defined test", () => {
it("without animation", async () => {
await helpers.startApplication(testConfigByDefault);
await doTest();
});
});
});
1 change: 1 addition & 0 deletions tests/e2e/helpers/global-setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ exports.getDocument = () => {
const url = `http://${config.address || "localhost"}:${config.port || "8080"}`;
jsdom.JSDOM.fromURL(url, { resources: "usable", runScripts: "dangerously" }).then((dom) => {
dom.window.name = "jsdom";
global.window = dom.window;
dom.window.fetch = fetch;
dom.window.onload = () => {
global.document = dom.window.document;
Expand Down