diff options
Diffstat (limited to 'tests/ui-regression/runTests.js')
-rw-r--r-- | tests/ui-regression/runTests.js | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/tests/ui-regression/runTests.js b/tests/ui-regression/runTests.js new file mode 100644 index 00000000000..4eb94f79347 --- /dev/null +++ b/tests/ui-regression/runTests.js @@ -0,0 +1,129 @@ +/** + * @copyright 2018 Julius Härtl <jus@bitgrid.net> + * + * @author 2018 Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +const fs = require('fs') +const Mocha = require('mocha') + +const testFolder = './test/' + + +var tests = [ + 'install', + 'login', + 'files', + 'public', + 'settings', + 'apps', +] + +var args = process.argv.slice(2); +if (args.length > 0) { + tests = args +} + +var config = { + tests: tests, + pr: process.env.DRONE_PULL_REQUEST, + repoUrl: process.env.DRONE_REPO_LINK, +}; + +console.log('=> Write test config'); +console.log(config); +fs.writeFile('out/config.json', JSON.stringify(config), 'utf8', () => {}); + +var mocha = new Mocha({ + timeout: 60000 +}); +let result = {}; + +tests.forEach(async function (test) { + mocha.addFile('./test/' + test + 'Spec.js') + result[test] = { + failures: [], + passes: [], + tests: [], + pending: [], + stats: {} + } + +}); + +// fixme fail if installation failed +// write json to file + +function clean (test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration, + currentRetry: test.currentRetry(), + failedAction: test.failedAction, + err: errorJSON(test.err || {}) + }; +} + +function errorJSON (err) { + var res = {}; + Object.getOwnPropertyNames(err).forEach(function (key) { + res[key] = err[key]; + }, err); + return res; +} + +mocha.run() + .on('test', function (test) { + }) + .on('suite end', function(suite) { + if (result[suite.title] === undefined) + return; + result[suite.title].stats = suite.stats; + }) + .on('test end', function (test) { + result[test.parent.title].tests.push(test); + }) + .on('pass', function (test) { + result[test.parent.title].passes.push(test); + }) + .on('fail', function (test) { + result[test.parent.title].failures.push(test); + }) + .on('pending', function (test) { + result[test.parent.title].pending.push(test); + }) + .on('end', function () { + tests.forEach(function (test) { + var json = JSON.stringify({ + stats: result[test].stats, + tests: result[test].tests.map(clean), + pending: result[test].pending.map(clean), + failures: result[test].failures.map(clean), + passes: result[test].passes.map(clean) + }, null, 2); + fs.writeFile(`out/${test}.json`, json, 'utf8', function () { + console.log(`Written test result to out/${test}.json`) + }); + }); + + var errorMessage = 'This PR introduces some UI differences, please check at {LINK}, if there are regressions based on the changes.' + fs.writeFile('out/GITHUB_COMMENT', errorMessage, 'utf8', () => {}); + }); + |