FIX tests

This commit is contained in:
pubkey 2018-09-27 20:13:22 +02:00
parent e05092e229
commit 15a4e31c26
3 changed files with 87 additions and 76 deletions

View File

@ -23,8 +23,8 @@
"test:docs": "npm run docs && concurrently \"npm run docs:serve\" \"npm run test:cafe\" --success first --kill-others --raw", "test:docs": "npm run docs && concurrently \"npm run docs:serve\" \"npm run test:cafe\" --success first --kill-others --raw",
"test": "npm run test:export && npm run test:preview && npm run test:docs && npm run test:e2e", "test": "npm run test:export && npm run test:preview && npm run test:docs && npm run test:e2e",
"export": "concurrently \"npm run dev\" \"npm run pdf\" --success first --kill-others --raw", "export": "concurrently \"npm run dev\" \"npm run pdf\" --success first --kill-others --raw",
"lint": "eslint --ext .js,.vue src", "lint": "eslint --ext .js,.vue src scripts",
"lint:fix": "eslint --ext .js,.vue src --fix" "lint:fix": "eslint --ext .js,.vue src scripts --fix"
}, },
"dependencies": { "dependencies": {
"font-awesome": "4.7.0", "font-awesome": "4.7.0",

View File

@ -1,82 +1,93 @@
const puppeteer = require('puppeteer'); const puppeteer = require('puppeteer');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const Rx = require('rxjs/Rx');
const http = require('http'); const http = require('http');
const config = require('../config'); const config = require('../config');
const {
interval
} = require('rxjs');
const {
filter,
first,
mergeMap
} = require('rxjs/operators');
const fetchResponse = () => { const fetchResponse = () => {
return new Promise((res, rej) => { return new Promise((res, rej) => {
try { try {
const req = http.request(`http://localhost:${config.dev.port}/#/`, response => res(response.statusCode)); const req = http.request(`http://localhost:${config.dev.port}/#/`, response => res(response.statusCode));
req.on('error', (err) => rej(err)); req.on('error', (err) => rej(err));
req.end(); req.end();
} catch (err) { } catch (err) {
rej(err); rej(err);
} }
}); });
}; };
const waitForServerReachable = () => { const waitForServerReachable = () => {
return Rx.Observable return interval(1000).pipe(
.interval(1000) mergeMap(async () => {
.mergeMap(async () => { try {
try { const statusCode = await fetchResponse();
const statusCode = await fetchResponse(); if (statusCode === 200) return true;
if (statusCode === 200) return true; } catch (err) {}
} catch (err) {} return false;
return false; }),
}) filter(ok => !!ok)
.filter(ok => !!ok); );
}; };
/*
const timedOut = timeout => { const timedOut = timeout => {
return new Promise(res => { return new Promise(res => {
setTimeout(res, timeout); setTimeout(res, timeout);
});
};
const convert = async () => {
await waitForServerReachable().first().toPromise();
console.log('Connected to server ...');
console.log('Exporting ...');
try {
const directories = getResumesFromDirectories();
directories.forEach(async (dir) => {
const browser = await puppeteer.launch({
args: ['--no-sandbox']
});
const page = await browser.newPage();
await page.goto(`http://localhost:${config.dev.port}/#/resume/` + dir.name, {
waitUntil: 'networkidle2'
});
await page.pdf({
path: path.join(__dirname, '../pdf/' + dir.name + '.pdf'),
format: 'A4'
});
await browser.close();
}); });
} catch (err) { };
throw new Error(err); */
} const convert = async () => {
console.log('Finished exports.'); await waitForServerReachable().pipe(
first()
).toPromise();
console.log('Connected to server ...');
console.log('Exporting ...');
try {
const directories = getResumesFromDirectories();
directories.forEach(async (dir) => {
const browser = await puppeteer.launch({
args: ['--no-sandbox']
});
const page = await browser.newPage();
await page.goto(`http://localhost:${config.dev.port}/#/resume/` + dir.name, {
waitUntil: 'networkidle2'
});
await page.pdf({
path: path.join(__dirname, '../pdf/' + dir.name + '.pdf'),
format: 'A4'
});
await browser.close();
});
} catch (err) {
throw new Error(err);
}
console.log('Finished exports.');
}; };
const getResumesFromDirectories = () => { const getResumesFromDirectories = () => {
const directories = getDirectories(); const directories = getDirectories();
return directories return directories
.map(dir => { .map(dir => {
let fileName = dir.replace('.vue', ''); const fileName = dir.replace('.vue', '');
return { return {
path: fileName, path: fileName,
name: fileName name: fileName
}; };
}); });
}; };
const getDirectories = () => { const getDirectories = () => {
const srcpath = path.join(__dirname, '../src/resumes'); const srcpath = path.join(__dirname, '../src/resumes');
return fs.readdirSync(srcpath) return fs.readdirSync(srcpath)
.filter(file => file !== 'resumes.js' && file !== 'template.vue' && file !== 'options.js'); .filter(file => file !== 'resumes.js' && file !== 'template.vue' && file !== 'options.js');
}; };

View File

@ -4,30 +4,30 @@ const path = require('path');
const fs = require('fs'); const fs = require('fs');
const getDirectories = () => { const getDirectories = () => {
const srcpath = path.join(__dirname, '../pdf'); const srcpath = path.join(__dirname, '../pdf');
return fs.readdirSync(srcpath); return fs.readdirSync(srcpath);
}; };
const getTemplateName = PDF => { const getTemplateName = PDF => {
return PDF.replace('.pdf', ''); return PDF.replace('.pdf', '');
}; };
const convert = async (PDF) => { const convert = async (PDF) => {
const pdfImage = new PDFImage(path.join(__dirname, '../pdf/' + PDF)); const pdfImage = new PDFImage(path.join(__dirname, '../pdf/' + PDF));
await pdfImage.convertPage(0); await pdfImage.convertPage(0);
}; };
const directories = getDirectories(); const directories = getDirectories();
directories.forEach(async (dir) => { directories.forEach(async (dir) => {
try { try {
await convert(dir); await convert(dir);
} catch (e) { } catch (e) {
console.dir(e); console.dir(e);
} }
const source = path.join(__dirname, '../pdf/' + getTemplateName(dir) + '-0.png'); const source = path.join(__dirname, '../pdf/' + getTemplateName(dir) + '-0.png');
const output = path.join(__dirname, '../src/assets/preview/resume-' + getTemplateName(dir) + '.png'); const output = path.join(__dirname, '../src/assets/preview/resume-' + getTemplateName(dir) + '.png');
console.log(output); console.log(output);
mv(source, output, function (err) { mv(source, output, function (err) {
if (err) console.dir(err); if (err) console.dir(err);
}); });
}); });