From 39350e104d02ce2f75838294a0b8e38ec2cd1af7 Mon Sep 17 00:00:00 2001 From: Laura Date: Tue, 23 Jan 2018 21:17:49 +0000 Subject: [PATCH] local tests --- .nvmrc | 2 +- bin/run-tests.js | 40 ++++++++++++++++ etc/bot.template.ejs | 2 +- express/app.js | 3 ++ package-lock.json | 110 +++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- test/mocha.js | 1 + test/test.html | 1 - test/test.js | 4 -- webpack.config.js | 3 +- 10 files changed, 159 insertions(+), 11 deletions(-) create mode 100755 bin/run-tests.js create mode 120000 test/mocha.js delete mode 100644 test/test.html diff --git a/.nvmrc b/.nvmrc index 188c409..a2f28f4 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -8.5 +8.4.0 diff --git a/bin/run-tests.js b/bin/run-tests.js new file mode 100755 index 0000000..7b20db1 --- /dev/null +++ b/bin/run-tests.js @@ -0,0 +1,40 @@ +#!/usr/bin/env node +/*eslint no-console:0 */ + +require('dotenv').config(); + +const puppeteer = require('puppeteer'); +const path = require('path'); + +const reporter = require('./tools/reporter.js'); +const config = require('../bot.config.js'); +const server = require('../express/app.js'); + +const port = 1337; /*bite me*/ +const url = `http://localhost:${port}/test.html`; +const outPath = path.join(__dirname, '..', config.paths.build, config.filenames.base + '.jpg'); + +// Source: https://github.com/GoogleChrome/puppeteer#usage +const listenForMocha = async () => { + const browser = await puppeteer.launch({ + args: ['--no-sandbox'] + }); + const page = await browser.newPage(); + await Promise.all(page.goto(url)); + + page.on('console', msg => { + console.log(msg); + }); + + await page.waitFor(2000); + await browser.close(); + return log; +}; + +server.listen(port, ()=>{ + reporter.success('Server running'); + listenForMocha().then((log)=>{ + reporter.success('Tests ran'); + process.exit(); + }).catch(reporter.error); +}); diff --git a/etc/bot.template.ejs b/etc/bot.template.ejs index 7188246..6b1905c 100644 --- a/etc/bot.template.ejs +++ b/etc/bot.template.ejs @@ -7,7 +7,7 @@ <%if (typeof htmlWebpackPlugin.options.test !== 'undefined') { %> - +
diff --git a/express/app.js b/express/app.js index 06d4591..04229a1 100644 --- a/express/app.js +++ b/express/app.js @@ -6,7 +6,10 @@ const googleImageSearch = require('./googleImageSearch.js'); const app = express(); app.use(express.static(path.resolve(__dirname, '../build'))); +app.use('/test', express.static(path.resolve(__dirname, '../test'))); + app.get('/', (req, res, next) => res.sendFile(path.resolve(__dirname, '../build/index.html'))); +app.get('/test.html', (req, res, next) => res.sendFile(path.resolve(__dirname, '../build/test.html'))); app.get('/get-image', (req, res, next) => googleImageSearch(req.query.query).then(res.json) ); diff --git a/package-lock.json b/package-lock.json index 8e8120f..a59163f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3773,6 +3773,11 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" + }, "browserify-aes": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", @@ -4444,6 +4449,11 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -5038,6 +5048,11 @@ "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" } }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" + }, "diffie-hellman": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", @@ -6877,6 +6892,11 @@ "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==" + }, "has": { "version": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", @@ -6916,6 +6936,11 @@ "minimalistic-assert": "1.0.0" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -7720,6 +7745,11 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, "json5": { "version": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" @@ -8005,6 +8035,86 @@ } } }, + "mocha": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.0.tgz", + "integrity": "sha512-ukB2dF+u4aeJjc6IGtPNnJXfeby5d4ZqySlIBT0OEyva/DrMjVm5HkQxKnHDLKEfEQBsEnwTg9HHhtPHJdTd8w==", + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "supports-color": "4.4.0" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "3.0.4", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "ms": { "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" diff --git a/package.json b/package.json index 4c2b0ab..94be5a2 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^0.11.2", "fs-extra": "^3.0.1", - "mocha-puppeteer": "^0.13.0", "html-webpack-plugin": "^2.28.0", "minimist": "^1.2.0", + "mocha": "^5.0.0", "number-to-text": "^0.3.2", "pluralize": "^5.0.0", "postcss-loader": "^2.0.5", @@ -71,6 +71,6 @@ "make-dll": "webpack --config etc/vendor-dll.webpack.config", "localpost": "npm run webpack && ./bin/screenshot.js && ./bin/upload.js", "shitpost": "npm run webpack && ./bin/screenshot.js && ./bin/upload-twitter.js", - "test": "mocha-puppeteer ./tests" + "test": "./bin/run-tests.js" } } diff --git a/test/mocha.js b/test/mocha.js new file mode 120000 index 0000000..39d77e7 --- /dev/null +++ b/test/mocha.js @@ -0,0 +1 @@ +../node_modules/mocha/mocha.js \ No newline at end of file diff --git a/test/test.html b/test/test.html deleted file mode 100644 index 833b9c4..0000000 --- a/test/test.html +++ /dev/null @@ -1 +0,0 @@ -👁👄👁☝️
\ No newline at end of file diff --git a/test/test.js b/test/test.js index 1ec35ce..94ff436 100644 --- a/test/test.js +++ b/test/test.js @@ -1,7 +1,3 @@ -const library = require('../src/app.js'); - -window.Post = library; - describe('Initialization', function() { it('window.post should exist',function(done){ if(window.Post) { diff --git a/webpack.config.js b/webpack.config.js index 202a924..7db9d43 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -58,7 +58,6 @@ module.exports = { }, template: path.join('etc','bot.template.ejs'), filename: `${config.filenames.base}.html`, - base: `file://${__dirname}/${config.paths.build}/${config.filenames.base}.html` }), new HtmlWebpackPlugin({ title: '👁👄👁☝️', @@ -66,7 +65,7 @@ module.exports = { collapseWhitespace: true }, template: path.join('etc','bot.template.ejs'), - filename: path.join('..',config.paths.test,config.filenames.test+'.html'), + filename: path.join('..',config.paths.build,config.filenames.test+'.html'), test: true, base: `file://${__dirname}/${config.paths.build}/${config.filenames.base}.html` }),