diff --git a/CHANGELOG.md b/CHANGELOG.md
index c7fea933..92f80d7e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Replace HTML tables with markdown tables in README files.
- Added `DAYAFTERTOMORROW`, `UPDATE_NOTIFICATION` and `UPDATE_NOTIFICATION_MODULE` to Finnish translations.
- Run `npm test` on Travis automatically
+- Show the splash screen image even when is reboot or halted.
+- Added some missing translaton strings in the sv.json file.
### Added
- Add loaded function to modules, providing an async callback.
@@ -30,6 +32,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Enable ability to set configuration file by the enviroment variable called MM_CONFIG_FILE.
- Option to give each calendar a different color
- Option for colored min-temp and max-temp
+- Add test e2e helloworld
+- Add test e2e enviroment
### Fixed
- Update .gitignore to not ignore default modules folder.
@@ -38,6 +42,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Fix an issue where the analog clock looked scrambled. ([#611](https://github.com/MichMich/MagicMirror/issues/611))
- If units is set to imperial, the showRainAmount option of weatherforecast will show the correct unit.
- Module currentWeather: check if temperature received from api is defined.
+- Fix an issue with module hidden status changing to `true` although lock string prevented showing it
## [2.1.0] - 2016-12-31
diff --git a/index.html b/index.html
index 86a69a4a..606f5aac 100644
--- a/index.html
+++ b/index.html
@@ -33,7 +33,7 @@
-
+
diff --git a/js/app.js b/js/app.js
index 9f992b29..6466fe3f 100644
--- a/js/app.js
+++ b/js/app.js
@@ -49,7 +49,7 @@ var App = function() {
// For this check proposed to TestSuite
// https://forum.magicmirror.builders/topic/1456/test-suite-for-magicmirror/8
var configFilename = path.resolve(global.root_path + "/config/config.js");
- if (typeof(global.configuration_file) === "undefined" ) {
+ if (typeof(global.configuration_file) !== "undefined") {
configFilename = path.resolve(global.configuration_file);
}
diff --git a/js/main.js b/js/main.js
index 325a7efe..fde5564d 100644
--- a/js/main.js
+++ b/js/main.js
@@ -232,6 +232,8 @@ var MM = (function() {
return;
}
+ module.hidden = false;
+
// If forced show, clean current lockstrings.
if (module.lockStrings.length !== 0 && options.force === true) {
Log.log("Force show of module: " + module.name);
@@ -504,7 +506,7 @@ var MM = (function() {
* argument options object - Optional settings for the hide method.
*/
showModule: function(module, speed, callback, options) {
- module.hidden = false;
+ // do not change module.hidden yet, only if we really show it later
showModule(module, speed, callback, options);
}
};
diff --git a/js/server.js b/js/server.js
index f1de2420..e7050021 100644
--- a/js/server.js
+++ b/js/server.js
@@ -37,6 +37,7 @@ var Server = function(config, callback) {
app.use("/modules", express.static(path.resolve(global.root_path + "/modules")));
app.use("/vendor", express.static(path.resolve(global.root_path + "/vendor")));
app.use("/translations", express.static(path.resolve(global.root_path + "/translations")));
+ app.use("/tests/confs", express.static(path.resolve(global.root_path + "/tests/confs")));
app.get("/version", function(req,res) {
res.send(global.version);
@@ -46,6 +47,12 @@ var Server = function(config, callback) {
var html = fs.readFileSync(path.resolve(global.root_path + "/index.html"), {encoding: "utf8"});
html = html.replace("#VERSION#", global.version);
+ configFile = "config/config.js";
+ if (typeof(global.configuration_file) !== "undefined") {
+ configFile = global.configuration_file;
+ }
+ html = html.replace("#CONFIG_FILE#", configFile);
+
res.send(html);
});
diff --git a/package.json b/package.json
index 9d94a012..92202936 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,8 @@
"scripts": {
"start": "sh run-start.sh",
"postinstall": "sh installers/postinstall/postinstall.sh",
- "test": "./node_modules/mocha/bin/mocha tests --recursive"
+ "test": "./node_modules/mocha/bin/mocha $(find tests -path '*js*' ! -ipath '*e2e*')",
+ "test:e2e": "./node_modules/mocha/bin/mocha tests/e2e --recursive"
},
"repository": {
"type": "git",
@@ -36,6 +37,7 @@
"grunt-stylelint": "latest",
"grunt-yamllint": "latest",
"mocha": "^3.2.0",
+ "spectron": "^3.4.1",
"stylelint-config-standard": "latest",
"time-grunt": "latest"
},
diff --git a/splashscreen/MagicMirror.script b/splashscreen/MagicMirror.script
index 9b614389..6e2f5643 100644
--- a/splashscreen/MagicMirror.script
+++ b/splashscreen/MagicMirror.script
@@ -1,7 +1,15 @@
screen_width = Window.GetWidth();
screen_height = Window.GetHeight();
-theme_image = Image("splash.png");
+if (Plymouth.GetMode() != "shutdown")
+{
+ theme_image = Image("splash.png");
+}
+else
+{
+ theme_image = Image("splash_halt.png");
+}
+
image_width = theme_image.GetWidth();
image_height = theme_image.GetHeight();
@@ -30,11 +38,8 @@ else
image_y = (screen_height - image_height) / 2;
}
-if (Plymouth.GetMode() != "shutdown")
-{
- sprite = Sprite (resized_image);
- sprite.SetPosition (image_x, image_y, -100);
-}
+sprite = Sprite (resized_image);
+sprite.SetPosition (image_x, image_y, -100);
message_sprite = Sprite();
message_sprite.SetPosition(screen_width * 0.1, screen_height * 0.9, 10000);
diff --git a/splashscreen/splash_halt.png b/splashscreen/splash_halt.png
new file mode 100644
index 00000000..dcf9d8be
Binary files /dev/null and b/splashscreen/splash_halt.png differ
diff --git a/tests/confs/env.js b/tests/confs/env.js
new file mode 100644
index 00000000..252934d7
--- /dev/null
+++ b/tests/confs/env.js
@@ -0,0 +1,25 @@
+/* Magic Mirror Test config sample enviroment
+ *
+ * By Rodrigo Ramírez Norambuena https://rodrigoramirez.com
+ * MIT Licensed.
+ */
+
+var config = {
+ port: 8080,
+ ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
+
+ language: "en",
+ timeFormat: 24,
+ units: "metric",
+ electronOptions: {
+ webPreferences: {
+ nodeIntegration: true,
+ },
+ },
+
+ modules: [
+ ]
+};
+
+/*************** DO NOT EDIT THE LINE BELOW ***************/
+if (typeof module !== "undefined") {module.exports = config;}
diff --git a/tests/confs/helloworld.js b/tests/confs/helloworld.js
new file mode 100644
index 00000000..6b617cf2
--- /dev/null
+++ b/tests/confs/helloworld.js
@@ -0,0 +1,32 @@
+/* Magic Mirror Test config sample module hello world
+ *
+ * By Rodrigo Ramírez Norambuena https://rodrigoramirez.com
+ * MIT Licensed.
+ */
+
+var config = {
+ port: 8080,
+ ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
+
+ language: "en",
+ timeFormat: 24,
+ units: "metric",
+ electronOptions: {
+ webPreferences: {
+ nodeIntegration: true,
+ },
+ },
+
+ modules: [
+ {
+ module: "helloworld",
+ position: "bottom_bar",
+ config: {
+ text: "Test HelloWorld Module"
+ }
+ }
+ ]
+};
+
+/*************** DO NOT EDIT THE LINE BELOW ***************/
+if (typeof module !== "undefined") {module.exports = config;}
diff --git a/tests/e2e/env.js b/tests/e2e/env.js
new file mode 100644
index 00000000..41386499
--- /dev/null
+++ b/tests/e2e/env.js
@@ -0,0 +1,49 @@
+const Application = require("spectron").Application;
+const path = require("path");
+const chai = require("chai");
+const chaiAsPromised = require("chai-as-promised");
+
+// Set config sample for use in test
+process.env.MM_CONFIG_FILE = "tests/confs/env.js";
+
+var electronPath = path.join(__dirname, "../../", "node_modules", ".bin", "electron");
+
+if (process.platform === "win32") {
+ electronPath += ".cmd";
+}
+
+var appPath = path.join(__dirname, "../../js/electron.js");
+
+var app = new Application({
+ path: electronPath,
+ args: [appPath]
+});
+
+global.before(function () {
+ chai.should();
+ chai.use(chaiAsPromised);
+});
+
+describe("Test enviroment app electron", function () {
+ this.timeout(10000);
+
+ beforeEach(function (done) {
+ app.start().then(function() { done(); } );
+ });
+
+ afterEach(function (done) {
+ app.stop().then(function() { done(); });
+ });
+
+
+ it("open a window app and test if is open", function () {
+ return app.client.waitUntilWindowLoaded()
+ .getWindowCount().should.eventually.equal(1);
+ });
+
+ it("tests the title", function () {
+ return app.client.waitUntilWindowLoaded()
+ .getTitle().should.eventually.equal("Magic Mirror");
+ });
+
+});
diff --git a/tests/e2e/modules/helloworld.js b/tests/e2e/modules/helloworld.js
new file mode 100644
index 00000000..ebf8a8d1
--- /dev/null
+++ b/tests/e2e/modules/helloworld.js
@@ -0,0 +1,42 @@
+const Application = require("spectron").Application;
+const path = require("path");
+const chai = require("chai");
+const chaiAsPromised = require("chai-as-promised");
+
+// Set config sample for use in test
+process.env.MM_CONFIG_FILE = "tests/confs/helloworld.js";
+
+var electronPath = path.join(__dirname, "../../../", "node_modules", ".bin", "electron");
+
+if (process.platform === "win32") {
+ electronPath += ".cmd";
+}
+
+var appPath = path.join(__dirname, "../../../js/electron.js");
+
+var app = new Application({
+ path: electronPath,
+ args: [appPath]
+});
+
+global.before(function () {
+ chai.should();
+ chai.use(chaiAsPromised);
+});
+
+describe("Test helloworld module", function () {
+ this.timeout(10000);
+
+ beforeEach(function (done) {
+ app.start().then(function() { done(); } );
+ });
+
+ afterEach(function (done) {
+ app.stop().then(function() { done(); });
+ });
+
+ it("Test message helloworld module", function () {
+ return app.client.waitUntilWindowLoaded()
+ .getText(".helloworld").should.eventually.equal("Test HelloWorld Module");
+ });
+});
diff --git a/translations/sv.json b/translations/sv.json
index 9643a07b..8a1440f0 100644
--- a/translations/sv.json
+++ b/translations/sv.json
@@ -5,6 +5,7 @@
/* CALENDAR */
"TODAY": "Idag",
"TOMORROW": "Imorgon",
+ "DAYAFTERTOMORROW": "Iövermorgon",
"RUNNING": "Slutar",
"EMPTY": "Inga kommande händelser.",
@@ -24,5 +25,10 @@
"W": "V",
"WNW": "VNV",
"NW": "NV",
- "NNW": "NNV"
+ "NNW": "NNV",
+
+ /* UPDATE INFO */
+ "UPDATE_NOTIFICATION": "MagicMirror² uppdatering finns tillgänglig.",
+ "UPDATE_NOTIFICATION_MODULE": "Uppdatering finns tillgänglig av MODULE_NAME modulen.",
+ "UPDATE_INFO": "Denna installation ligger COMMIT_COUNT steg bakom BRANCH_NAME grenen."
}