UNPKG

anta

Version:

CLI tool and lib to gather app audits via [Lighthouse](https://github.com/GoogleChrome/lighthouse/).

106 lines 8.61 kB
const request = require('request'); function getResult(data, resolve) { const url = `http://slm.dl.alipaydev.com/proxy/action.json?params={"action":"result","id":${data.details.taskId}}`; // 轮询 检测结果 // todos: 超时取消 let timer; const loop = () => { request(url, function (error, response, body) { if (error) { // console.error('检测任务状态失败'); return; } // console.log('statusCode:', response && response.statusCode); const jsonRes = JSON.parse(body); if (jsonRes.result) { clearTimeout(timer); getLhResult(jsonRes, resolve); } else { timer = setTimeout(loop, 15000); } }); }; loop(); } function getLhResult(res, resolve) { if (res.details.details[0]) { if (res.details.details[0].result === 'Failed') { // console.log('检测失败'); resolve(getRes(false, '检测失败')); return; } const atts = res.details.details[0].attachments; const pros = []; for (let index = 0; index < Object.keys(atts).length; index++) { const ks = Object.keys(atts)[index]; // ks like lighthouse-1520400573480-result.json // 也可以直接使用 lighthouse_result_mapping.json 的数据 if (/lighthouse-\d+-result.json/.test(ks)) { pros.push(new Promise(reso => request(`http://slm.dl.alipaydev.com/artifacts${atts[ks]}`, (error, response, body) => { if (error) { // console.error('检测任务状态失败'); return reso(getRes(false, '检测任务状态失败')); } // console.log('lh result', body); return reso(getRes(true, '返回数据成功', JSON.parse(body))); }))); } } Promise.all(pros).then(res => resolve(res)); } else { // console.log('have result', res); resolve(getRes(false, '没有结果')); } } function getRes(flag, message, res) { return { success: flag, message, runs: res ? [res] : [], initialUrl: res ? res.initialUrl : undefined, }; } module.exports = function (urls) { return new Promise((resolve) => { request.post({ url: 'http://slm.dl.alipaydev.com/proxy/action.json', form: { params: JSON.stringify({ action: 'INVOKE', planId: 896, name: '然则的lighthouse测试', trigger: 'hualei.hl', envs: { RUNNING_CONFIG: 'https://gw.alipayobjects.com/os/rmsportal/LKACPzrTRdBUuXULpasw.js', RESULT_MODE: 'json', H5_URL: JSON.stringify(urls) // 指定URL }, devices: [ { support: 'gift', brand: 'LGE', product: 'Nexus 5X' // 型号 } ] }), } }, function (err, httpResponse, body) { // console.log('xx', err, httpResponse.status, typeof body); if (err) { // console.error('发起任务失败'); resolve(getRes(false, '发起任务失败')); return; } const jsonRes = JSON.parse(body); if (jsonRes.result) { // resolve(getRes(true, '检测过程,至少需要 5 分钟)); setTimeout(() => { getResult(jsonRes, resolve); }, 5 * 60000 + urls.length * 30000); } }); }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbC1kZXZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWFsLWRldmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbkMsbUJBQW1CLElBQVMsRUFBRSxPQUFZO0lBQ3hDLE1BQU0sR0FBRyxHQUFHLGdGQUFnRixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQ25ILFVBQVU7SUFDVixjQUFjO0lBQ2QsSUFBSSxLQUFVLENBQUM7SUFDZixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7UUFDaEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLEtBQVUsRUFBRSxRQUFhLEVBQUUsSUFBUztZQUN6RCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNWLDZCQUE2QjtnQkFDN0IsTUFBTSxDQUFDO1lBQ1QsQ0FBQztZQUNELCtEQUErRDtZQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BCLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUNGLElBQUksRUFBRSxDQUFDO0FBQ1QsQ0FBQztBQUVELHFCQUFxQixHQUFRLEVBQUUsT0FBWTtJQUN6QyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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