mirror of https://github.com/keeweb/keeweb.git
51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
module.exports = function(grunt) {
|
|
grunt.registerMultiTask('run-test', 'Runs KeeWeb browser-tests', function() {
|
|
const done = this.async();
|
|
const opt = this.options();
|
|
const file = this.files[0].src[0];
|
|
|
|
const path = require('path');
|
|
const puppeteer = require('puppeteer');
|
|
|
|
(async function() {
|
|
grunt.log.writeln('Running tests...');
|
|
|
|
const fullPath = 'file://' + path.resolve(file);
|
|
|
|
const browser = await puppeteer.launch({
|
|
headless: opt.headless
|
|
});
|
|
const page = await browser.newPage();
|
|
await page.goto(fullPath);
|
|
|
|
async function check() {
|
|
const result = await page.evaluate(() => {
|
|
const { output, done } = window;
|
|
window.output = [];
|
|
return { output, done };
|
|
});
|
|
for (const out of result.output) {
|
|
if (!out.args.length) {
|
|
continue;
|
|
}
|
|
// eslint-disable-next-line no-console
|
|
console[out.method](...out.args);
|
|
}
|
|
if (result.done) {
|
|
const { failures } = result.done;
|
|
if (failures) {
|
|
grunt.warn(`Failed ${failures} test${failures > 1 ? 's' : ''}.`);
|
|
} else {
|
|
grunt.log.writeln('All tests passed');
|
|
done();
|
|
}
|
|
} else {
|
|
setTimeout(check, 100);
|
|
}
|
|
}
|
|
|
|
check();
|
|
})();
|
|
});
|
|
};
|