From 5b9a61b7db78fcfd568c82f89940c777f383422b Mon Sep 17 00:00:00 2001 From: Bas van Wetten Date: Mon, 21 Aug 2017 14:44:47 +0200 Subject: [PATCH] Added e2e test for font files --- package.json | 3 ++- tests/e2e/fonts.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 tests/e2e/fonts.js diff --git a/package.json b/package.json index 1fb21a9d..0b81fc8a 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,9 @@ "http-auth": "^3.1.3", "jshint": "^2.9.4", "mocha": "^3.4.2", - "stylelint": "^8.0.0", + "mocha-each": "^1.1.0", "spectron": "3.6.x", + "stylelint": "^8.0.0", "stylelint-config-standard": "latest", "time-grunt": "latest" }, diff --git a/tests/e2e/fonts.js b/tests/e2e/fonts.js new file mode 100644 index 00000000..0303414b --- /dev/null +++ b/tests/e2e/fonts.js @@ -0,0 +1,52 @@ +const helpers = require("./global-setup"); +const path = require("path"); +const request = require("request"); + +const expect = require("chai").expect; + +const describe = global.describe; +const it = global.it; +const beforeEach = global.beforeEach; +const afterEach = global.afterEach; +const forEach = require("mocha-each"); + +describe("All font files from roboto.css should be downloadable", function() { + helpers.setupTimeout(this); + + var fontFiles = []; + // Statements below filters out all 'url' lines in the CSS file + var fileContent = require("fs").readFileSync(__dirname + "/../../fonts/roboto.css", "utf8"); + var regex = /\burl\(['"]([^'"]+)['"]\)/g; + var match = regex.exec(fileContent); + while (match != null) { + // Push 1st match group onto fontFiles stack + fontFiles.push(match[1]); + // Find the next one + match = regex.exec(fileContent); + } + + before(function() { + // Set config sample for use in test + process.env.MM_CONFIG_FILE = "tests/configs/without_modules.js"; + + return helpers + .startApplication({ + args: ["js/electron.js"] + }) + .then(function(startedApp) { + app = startedApp; + }); + }); + + after(function() { + return helpers.stopApplication(app); + }); + + forEach(fontFiles).it("should return 200 HTTP code for file '%s'", (fontFile, done) => { + var fontUrl = "http://localhost:8080/fonts/" + fontFile; + request.get(fontUrl, function(err, res, body) { + expect(res.statusCode).to.equal(200); + done(); + }); + }); +});