FIX tests
This commit is contained in:
parent
e05092e229
commit
15a4e31c26
@ -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",
|
||||||
|
|||||||
@ -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');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user